計算科学のための HPC 技術 1
ケイサンカガクノタメノエイチピーシーギジュツイチ
- 著者:
- 下司雅章 / 片桐孝洋 / 中田真秀 / 渡辺宙志 / 山本有作 / 吉井範行(ゲシマサアキ / カタギリ タカヒロ / ナカタ マホ / ワタナベ ヒロシ / ヤマモト ユウサク / ヨシイ ノリユキ)
- 注目:
- 総合 788 位
- 出版社:
- 大阪大学出版会
- 出版日:
- 2017年04月03日頃
- 一覧:
- 2017 年に出た技術書
- ISBN:
- 9784872595864
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
本書は姉妹本である<a href="http: / / www.osaka-up.or.jp/books/ISBN978-4-87259-587-1.html">『計算科学のための HPC 技術 2』</A>(大阪大学出版会) と比べてより一般的で基礎的な内容となっている.日々進歩する計算機の世界の, 特にハイパフォーマンスコンピューティング (High Performance Computing:HPC) において,「京」で培った技術はアプリケーションの高速化技術として長く役立つ要素がいくつもあるに違いなく, 全ての分野の研究者や学生に役立つであろう.
まえがき
執筆者一覧
第 1 章プログラムの高速化
1.1 計算機アーキテクチャの構成方式の動向
1.2 高速化に当たり考慮すべき計算機構成
1.3 高速化技法
1.4 数値計算ライブラリの利用
第 2 章 MPI の基礎
2.1 並列プログラミングの基礎
2.2 基本的な MPI 関数
第 3 章 OpenMP の基礎
3.1 OpenMP とは
3.2 OpenMP 実行モデル
3.3 プログラミング上の注意
3.4 高速化技法としてのファーストタッチ
3.5 GPGPU への展開
第 4 章ハイブリッド並列化技法
4.1 概要
4.2 想定される計算機アーキテクチャ
4.3 実行例
4.4 ピュア MPI 実行のプログラム開発の基礎
4.5 ハイブリッド MPI 実行のプログラム開発の基礎
4.6 ハイブリッド MPI 並列化時の注意事項
第 5 章プログラム高速化の応用
5.1 性能チューニング総論
5.2 性能プロファイリング
5.3 ループ変換実例とその効果
5.4 通信最適化の方法
5.5 ソフトウェア自動チューニングの適用
5.6 自動並列化コンパイラの注意
第 6 章線形代数演算ライブラリ BLAS と LAPACK の基礎と実践
6.1 線形代数の重要性
6.2 ライブラリ利用の重要性
6.3 BLAS, LAPACK の紹介
6.4 Ubuntu 16.04 で BLAS, LAPACK を実際に使ってみる
6.5 最適化 BLAS, LAPACK の利用と, その結果の解析
6.6 まとめ
第 7 章高速化チューニングとその関連技術
7.1 高速化や並列化, その前に
7.2 バグを入れないコーディング
7.3 地雷型バグのデバッグ法
7.4 プロファイラの使い方
7.5 実装による高速化の個別事例
7.6 終わりに
第 8 章行列計算における高速アルゴリズム
8.1 エクサフロップスマシンのハードウェア特性
8.2 大規模並列アプリケーションにおける要求の変化
8.3 線形計算アルゴリズムの課題
8.4 線形計算アルゴリズムの研究動向
8.5 まとめ
第 9 章古典分子動力学法の高速化
9.1 古典分子動力学シミュレーション
9.2 静電相互作用の高速化
9.3 Multiple Time Step を用いた高速化
9.4 拘束動力学
9.5 生体分子系の古典 MD 計算の高速化
9.6 GENESIS の最適化と並列化
第 10 章量子化学計算の大規模化
10.1 分子科学分野の計算機環境
10.2 量子化学計算の概要
10.3 近似の導入
10.4 高速化
10.5 並列化
10.6 高速化・並列化事例
10.7 新たな量子化学計算プログラムの開発
10.8 まとめ
第 11 章計算精度に関する技術
11.1 大規模数値計算における精度保証
11.2 並列処理における収束精度問題
11.3 多倍長精度計算, 高精度計算
索引
技書の森解説
『計算科学のための HPC 技術 1』 (下司雅章 編集、片桐孝洋ほか 11 名 著、大阪大学出版会、2017 年 3 月刊) は、スーパーコンピューターの上でアプリケーションを速く動かすための要素技術を、プログラムの高速化と並列化の基礎から、分子動力学や量子化学といった個別の計算の高速化までまとめた書籍です。版元はこの本を、姉妹本の『計算科学のための HPC 技術 2』と比べて「より一般的で基礎的な内容」と位置づけ、「京」で培った技術が「全ての分野の研究者や学生に役立つであろう」と紹介しています。大学や研究機関に所属する 12 名の執筆者が章を分担しており、MPI と OpenMP による並列化から性能の測り方、計算精度の扱いまでを一冊で見渡せる構成です。
全 11 章の構成、プログラムの高速化から計算精度の技術まで
第 1 章「プログラムの高速化」は計算機アーキテクチャの構成方式の動向、高速化技法、数値計算ライブラリの利用を扱い、続く第 2 章「MPI の基礎」、第 3 章「OpenMP の基礎」、第 4 章「ハイブリッド並列化技法」で並列プログラミングの道具立てを順に固めます。第 3 章には「高速化技法としてのファーストタッチ」と「GPGPU への展開」の節もあります。第 5 章「プログラム高速化の応用」は性能チューニング総論から性能プロファイリング、ループ変換の実例、通信最適化、ソフトウェア自動チューニングの適用、自動並列化コンパイラーの注意へと進み、第 1 章からここまでを片桐孝洋が担当しています。第 6 章「線形代数演算ライブラリ BLAS と LAPACK の基礎と実践」には Ubuntu 16.04 で BLAS と LAPACK を実際に使う節があり、第 7 章「高速化チューニングとその関連技術」はバグを入れないコーディング、地雷型バグのデバッグ法、プロファイラの使い方を取り上げます。
第 8 章からは個別の計算に話題が移り、第 8 章「行列計算における高速アルゴリズム」、第 9 章「古典分子動力学法の高速化」、第 10 章「量子化学計算の大規模化」と続きます。第 9 章の最後の節は GENESIS の最適化と並列化です。最後の第 11 章「計算精度に関する技術」は、大規模数値計算における精度保証、並列処理における収束精度問題、多倍長精度計算と高精度計算を扱います。
MPI と OpenMP を組み合わせる理由と、測ってから直す手順
スーパーコンピューターの多くは、複数のコアを持つ計算ノードをネットワークで多数つないだ構成です。ノードをまたぐ並列化では、メモリを共有しない プロセスどうし がメッセージを送り合う MPI が標準的な手段となり、ノードの中ではメモリを共有するスレッドに処理を分ける OpenMP が使われます。両者を併用するハイブリッド並列化は、プロセスの数を抑えて通信とメモリの負担を減らせる一方で、スレッドの配置やデータの初期化の仕方によって性能が大きく変わります。ファーストタッチは、メモリのページが最初に書き込んだスレッドに近い場所へ割り当てられる仕組みを使い、データの置き場所を計算するスレッドの側に寄せる工夫です。速さの差は、処理を同時に動く単位へどう分けるかという 並列処理の設計 と、キャッシュやメモリ帯域といったハードウェアの性質の両方から生まれるため、プロファイラで測り、原因を切り分けてから手を入れる手順が欠かせません。行列の計算を自前のループで書く代わりに、機種ごとに最適化された BLAS や LAPACK を呼び出すのも、こうした手順の中で効果を確かめやすい選択肢です。
2 巻目との分担と、手元のコードで試したい読者
版元の紹介では、2 巻目の『計算科学のための HPC 技術 2』は 1 巻と比べて「より実践的な技術を多く含んでいる」とされ、スーパーコンピューターとアプリケーションの性能、アプリケーションの性能最適化の章から始まります。並列化の書き方や数値計算ライブラリの使い方といった基礎の側を先に固めるなら 1 巻、アプリケーション全体の性能最適化の進め方を追うなら 2 巻というのが、版元の位置づけに沿った選び方です。分子動力学や量子化学の計算に関わらない読者にとっても、第 1 章から第 7 章の並列化とチューニングの章、第 11 章の計算精度の章は、分野を問わず数値計算のコードを扱う場面につながります。
研究室で受け継いだシミュレーションのコードを MPI や OpenMP で並列化したい人や、スーパーコンピューターの利用を始めるにあたって高速化の考え方とライブラリの使い方を一通り押さえておきたい人にとって、基礎の技法から応用分野の事例、計算精度までを章ごとに執筆者が解説する本書は、手元のコードを速くする手がかりを広く集められる一冊です。
この本に興味がある方におすすめ
関連する本
下司雅章 の他の書籍
関連記事
技術書の古典を読む意味 - なぜ今さら古い本を読むのか
20〜30 年前の技術書の古典を読む意味と、古典から学べるもの / 学べないもの、読むべきタイミングを紹介します。
技術書を読む順番の戦略 - 複数冊を組み合わせて理解を加速させる
技術書を 1 冊ずつ読むのではなく、複数冊を戦略的に組み合わせることで、1 冊では届かない理解の深さと広さに達する方法を解説します。
あなたが今読んでいる本は、10 年後の誰かの古典になる
今は「最新の技術書」として読んでいる本が、10 年後には「古典」と呼ばれているかもしれません。技術書が古典になる条件と、古典を生み出す読者の役割について考えます。