Society5.0に対応した高度技術人材育成

enPiT everi 社会人向け「人工知能・ロボット・IoT」に関する短期講義・演習プログラム

MENU

科目一覧

並列処理

  • 基盤
  • 実習
         
科目名 並列処理
科目名(英名) Parallel Processing
担当講師(氏名・所属) 窪田 昌史(広島市立大学)
分類 選択
授業形態 実習

広市大

時数 12コマ
時間数(コマ数✕1.5) 18時間
授業の概要 シミュレーションの高速化などを目的として、マルチコアプロセッサを用いたり、GPUやFPGAをアクセラレータとして用いたりする事例が増加している。また、人工知能を利用した技術でも、GPUが広く使われるようになっている。これらの処理の高速化は、並列処理に基づいているものが多い。そこで、この授業では、処理の並列化の演習を行うとともに、並列処理を実現するハードウェアのアーキテクチャや、プログラムが並列化可能かどうかの解析手法など、並列処理の背景として理解しておくべき事項を解説する。
到達目標 OpenMP, MPI, CUDAなどの広く用いられている並列プログラミングライブラリやフレームワークを用いて、プログラムを並列化できるようになること。
履修上の注意
(準備学習・前提知識)
C言語でループや分岐などを含む基本的なプログラムが作成できること。
授業計画・内容 1. 演習:簡単なプログラムの並列化
2. 講義:コンピュータのアーキテクチャと並列性(1)(マルチコア、スーパースカラ、SIMD)
3. 講義:コンピュータのアーキテクチャと並列性(2)(共有メモリと分散メモリ、相互結合網、クラスタ、スーパーコンピュータ)
4. 講義:コンピュータのアーキテクチャと並列性(3)(GPU, XeonPhi, FPGAなどの特徴)
5. 演習:共有メモリプログラミング1(OpenMP,)
6. 演習:共有メモリプログラミング2(OpenMP, pthreads)
7. 演習:GPUプログラミング1(CUDA)
8. 演習:GPUプログラミング2(CUDA, OpenACC)
9. 講義:プログラムの並列性(1)(データ依存、制御依存)
10. 講義:プログラムの並列性(2)(データ依存解析)
11. 講義:プログラムの並列性(3)(ループ変換)
12. 演習:プログラムの並列化と性能評価
事前・事後学習の内容 勉強の効率を高くするために、あらかじめ提供された教材を予習してきてください。(毎回60分目安)
次の授業にフォローできるように毎回の授業を復習して修得してください。(毎回60分目安)
成績評価の方法 課題提出(6回提出、演習の回に出題)80%
積極的な授業への参加20%
教科書・参考書等 教科書:
資料を授業の際に配布する
参考書:
片桐孝洋(著),スパコンプログラミング入門並列処理とMPIの学習,東京大学出版会,2013.
寒川光,藤野清次,長嶋利夫,高橋大介(共著),HPCプログラミング,オーム社,2009.
中田育男(著),コンパイラの構成と最適化,朝倉書店,2009.
北村俊明(著),コンピュータアーキテクチャの基礎,サイエンス社,2010.
John Hennessy and David Patterson, Computer Architecture 6thed., Morgan Kaufmann, 2017 (中條拓伯,天野英晴,鈴木貢(監訳),吉瀬謙二,佐藤寿倫(訳),コンピュータアーキテクチャ第5版,翔泳社,2014.)
伊藤智義(著),GPUプログラミング入門–CUDA5による実装-, 講談社, 2013.
キーワード OpenMP, MPI, CUDA, コンピュータアーキテクチャ、GPU、スーパーコンピュータ、共有メモリ、分散メモリ、性能評価