現代の科学技術を支える重要技術である、並列計算・高性能計算の基礎についての講義・実習を行います。 化学分野における分子シミュレーション、生物分野における蛋白質解析、応用数学分野における数理最適化問題など、スーパーコンピュータ等による大量の計算量・データ量を必要とする計算技術への要求が高まっています。
本講義では、MPIやOpenMPなど高性能・並列計算のための標準的なプログラミング環境に加え、近年注目を集めているGPU・アクセラレータのためのプログラミング環境についても解説を行います。座学だけでなく、実際に東工大のペタスケールスパコンであるTSUBAMEを用いた実習を行います。
【到達目標】 並列計算・高性能計算に関する講義および実習により、MPI・OpenMP・GPU計算などの並列プログラミング環境を使えるようになることを目標とします。特に,東工大スーパーコンピュータTSUBAMEをそれぞれの受講者が実際に実習のために用い,プログラミングや性能解析の基礎技術を身につけることを目標に含みます.
【テーマ】現在のスーパーコンピュータ・高性能計算システムを効率的に利用するためには,アーキテクチャの並列性・階層性の理解が必要となります.それぞれの並列階層に対応するOpenMP,MPIによるプログラミング,および近年注目されているメニーコアアクセラレータ(GPGPUなど)のプログラミングを主テーマとします.
並列計算, 高性能計算, マルチコア, MPI, OpenMP, GPGPU
✔ 専門力 | 教養力 | コミュニケーション力 | 展開力(探究力又は設定力) | ✔ 展開力(実践力又は解決力) |
並列計算・高性能計算に関する講義に加え、実際に東工大スパコンであるTSUBAMEを用いた実習を行います。
授業計画 | 課題 | |
---|---|---|
第1回 | スーパーコンピュータ・並列計算とは | なし |
第2回 | TSUBAMEスパコンの概要と利用方法・並列プログラミングモデル | なし |
第3回 | OpenMPによる共有メモリ並列プログラミング(1) 共有メモリ並列化とは | 共有メモリパートのレポート |
第4回 | OpenMPによる共有メモリ並列プログラミング(2) データ並列性と変数の属性 | 共有メモリパートのレポート |
第5回 | OpenMPによる共有メモリ並列プログラミング(3) タスク並列性 | 共有メモリパートのレポート |
第6回 | OpenMPによる共有メモリ並列プログラミング(4) 排他制御とボトルネック | 共有メモリパートのレポート |
第7回 | MPIによる分散メモリ並列プログラミング(1) 分散メモリ並列化とは | 分散メモリパートのレポート |
第8回 | MPIによる分散メモリ並列プログラミング(2) ノンブロッキング通信 | 分散メモリパートのレポート |
第9回 | MPIによる分散メモリ並列プログラミング(3) MPIプログラムの最適化 | 分散メモリパートのレポート |
第10回 | MPIによる分散メモリ並列プログラミング(4) ネットワークトポロジ | 分散メモリパートのレポート |
第11回 | GPUプログラミング (1) GPUプログラミングとは | GPUパートのレポート |
第12回 | GPUプログラミング (2) OpenACCによるGPUプログラミング | GPUパートのレポート |
第13回 | GPUプログラミング (3) CUDAによるGPUプログラミングと並列度 | GPUパートのレポート |
第14回 | GPUプログラミング (4) GPUプログラムの最適化 | GPUパートのレポート |
学修効果を上げるため,教科書や配布資料等の該当箇所を参照し,「毎授業」授業内容に関する予習と復習(課題含む)をそれぞれ概ね100分を目安に行うこと。
特になし
特になし.ただし各テーマの講義中に参考書籍やURLの紹介を行う.
講義中に提示するレポートにより判断.出席も考慮される.
初級以上のC言語の知識、特にポインタの知識
簡単なLinuxコマンドの操作経験