1. コンピュータクラスタシステムのアーキテクチャを説明できる。
2. 並行処理および並列処理について説明できる。
3. 既存プログラムを OpenMP および MPI (を用いて並列化できる。
概要:
シミュレーションやデータ解析においてコンピュータを利用する場合,取り扱う対象によっては膨大な計算処理を必要とするものがある.これらの処理について,プロセッサに搭載された複数のコアや,複数のプロセッサ,あるいはネットワークで接続された複数のコンピュータを連携し,並列に処理を行う高性能計算の手法について学ぶ.まず計算機を用いて解を求める数値計算法について学んだ後,共有メモリ環境で用いられることの多い OpenMP に重点を置いて,実習を交えて理解する.
授業の進め方・方法:
授業では講義と実習を交えて高性能計算について理解する.今までに学んだプログラミング技法,およびアルゴリズムの構築方法を踏まえて,どのようにすれば効率的に処理を進められるかを講義で学ぶ.そして具体例として,自然科学でしばしば用いられるようなプログラムを,並列化により処理時間の短縮が図れることを,実習を通じて理解する.最後に,講義で学んだ手法を組み合わせて,より複雑なアルゴリズムの高速化に取り組む.授業の状況に応じて,「HPC プログラミング実習」の回の授業内容,実施順序を多少変更することがある.
注意点:
【成績評価の基準・方法】
試験の成績を70%,課題を30%の割合で総合的に評価する.成績評価は中間と期末の各期間の評価の平均とする.学年の評価は前学期末の評価とする.技術者が身に着けるべき専門科目として,上記の到達目標に対する達成度を試験等において評価する.
【事前・事後学習】
事前学習として提示した資料を読んだ上で,理解が難しかった部分を整理して授業に臨むこと.また,事後学習として授業内で取り扱った項目について練習問題を複数回解き理解を深めること.
【学修単位科目(授業時間外の学習時間等)】
本科目は学修単位のため,以下の標準学習時間を設定した自主学習を累計45時間分以上実施して課題等を提出しなければ,成績が60点を超えた場合でも59点として扱い単位を認定しない.
・全15回の授業に対して,0.5時間の事前学習と0.5時間の事後学習.計15時間分.
・中間試験および期末試験に対してそれぞれ試験勉強のための課題学習4時間.計8時間分.
・授業期間中に出題する課題を学習する時間22時間分.
【履修上の注意】
本科目は情報セキュリティコースで学んだプログラミング,アルゴリズムをさらに高度化した授業である.また,プログラミングで取り扱う計算は線形代数,微積分など既習の数学を応用するものである.これらを十分に理解していない者は,受講前に復習しておくことを強く勧める.
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
ガイダンス ハイパフォーマンスコンピューティングと計算科学 |
ハイパフォーマンスコンピューティングと計算科学の関係を理解する.
|
2週 |
数値計算法I |
計算機を用いて解を求める数値計算法のアルゴリズムについて理解する.
|
3週 |
数値計算法II |
計算機を用いて解を求める数値計算法のアルゴリズムについて,プログラムを作成する.
|
4週 |
並列処理I |
並列処理とはどのようなものか,並列処理による処理の高速化について理解する.
|
5週 |
並列処理II |
並列処理を行うためのアルゴリズムについて、考え方を理解する.
|
6週 |
マルチコアシステム,マルチプロセッサ,マルチノード |
複数のコア,プロセッサ,ノードから構成される計算機システムの特徴を理解する.
|
7週 |
OpenMP I |
OpenMP を用いた並列計算を行うための,プログラムの記述法を理解する.
|
8週 |
OpenMP II |
OpenMP を用いることのできない場合について,並列化可能にするアルゴリズムを理解する.
|
2ndQ |
9週 |
OpenMP III |
OpenMP を用いて,具体的なプログラムを並列化する方法を理解する.
|
10週 |
MPI |
分散メモリモデルにおける並列化の手法について概要を理解する
|
11週 |
ハイブリッド並列処理 |
OpenMPと MPI を組み合わせた並列処理について理解する.
|
12週 |
GPUプログラミング |
GPU を用いた計算処理の高速化手法について理解する.
|
13週 |
多倍長計算 |
高精度を求められる数値計算において,多倍長での計算処理を行う方法を理解する.
|
14週 |
HPC プログラミング実習I |
本授業で学んだ手法を用いて,自然科学分野においてよく用いられる計算処理のプログラムを高速化できるようにする.
|
15週 |
HPC プログラミング実習II |
本授業で学んだ手法を用いて,自然科学分野においてよく用いられる計算処理のプログラムを高速化できるようにする.
|
16週 |
|
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 代入や演算子の概念を理解し、式を記述できる。 | 4 | |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 4 | |
変数の概念を説明できる。 | 4 | |
データ型の概念を説明できる。 | 4 | |
制御構造の概念を理解し、条件分岐を記述できる。 | 4 | |
制御構造の概念を理解し、反復処理を記述できる。 | 4 | |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 4 | |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 4 | |
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。 | 4 | |
主要な言語処理プロセッサの種類と特徴を説明できる。 | 4 | |
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 | 4 | |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。 | 4 | |
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 4 | |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 4 | |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。 | 4 | |
ソフトウェア | アルゴリズムの概念を説明できる。 | 4 | |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 4 | |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。 | 4 | |
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。 | 4 | |
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。 | 4 | |
システムプログラム | コンピュータシステムにおけるオペレーティングシステムの位置づけを説明できる。 | 4 | |
プロセス管理やスケジューリングなどCPUの仮想化について説明できる。 | 4 | |