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

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

MENU

科目一覧

(ただいま期間外)マルチコア化に対応するアーキテクチャと高速化プログラミング技術

並列処理

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

広市大 全大学

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

キーワード OpenMP、 MPI、 CUDA、 コンピュータアーキテクチャ、GPU、スーパーコンピュータ、共有メモリ、分散メモリ、性能評価