並列プログラミングは近年の計算機で効果的に高速に演算させるためには必須の技術である。本講義及び演習では並列プログラミングのための基礎知識と具体的な実装法を習得する。
並列プログラムでは、非並列プログラムでは生じない不具合が起きる。不具合がなぜ起きるのかの理由や不具合を発生させないための手法を講義では学び、具体的なプログラミングを演習では体験する。そのためプログラミングの知識は事前に身につけた上で受講されたい。使用言語は主にJavaである。
並列プログラムを正しく組み立てるための、正しいデータ資源の共有、同期化、計算資源適切な分配、遅延実行と開始などの知識と技術を身につけることを目標とする。
代表的な題目としては
1)データの実体の格納されている領域の理解
2)スレッドプログラミング
3)イベントドリブンプログラミング
4)GPUプログラミング
スレッドプログラミング、GPUプログラミング、GUIプログラミング、可視性、同期、モニタ、アトミシティ
✔ 専門力 | 教養力 | コミュニケーション力 | 展開力(探究力又は設定力) | ✔ 展開力(実践力又は解決力) |
教室での講義回と情報工学科計算機室での演習回をほぼ交互に行い、知識と実践力をつける
授業計画 | 課題 | |
---|---|---|
第1回 | 導入 | |
第2回 | 復習データとその格納法 | 浅いコピーと深いコピー 実体と参照 Javaの変数 |
第3回 | スレッド | ウェイト、ジョイン、ノーティファイ |
第4回 | 演習1 | |
第5回 | スレッド拘束と同期 | モニタ |
第6回 | 演習2 | |
第7回 | ストリームとスレッド | ストリーム、ラムダ式、遅延実行 |
第8回 | イベント駆動プログラミング | イベントハンドラ |
第9回 | 演習3 | |
第10回 | イベント駆動プログラミング2 | 飢餓 |
第11回 | 演習4 | |
第12回 | GPU プログラミング | OpenCL |
第13回 | 演習5 | |
第14回 | GPUプログラミング 画像処理 | データ並列計算 |
第15回 | 演習6 |
なし
講義資料を配布します。データ、サンプルコードはウェブサイトにアップロードします。
演習レポート及び、筆記試験。演習レポートの点数を主として評価する。ただし筆記試験の出席は必須。
演習用計算機の台数を越えた受講生が居る場合には、情報工学科生を優先します。