ハイパフォーマンスコンピューティング

科目基礎情報

学校 高知工業高等専門学校 開講年度 令和04年度 (2022年度)
授業科目 ハイパフォーマンスコンピューティング
科目番号 I5021 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 学修単位: 2
開設学科 SD 情報セキュリティコース 対象学年 5
開設期 前期 週時間数 2
教科書/教材 教材はオリジナルのものを用意する.参考資料は随時紹介する.
担当教員 立川 崇之

到達目標

1. コンピュータクラスタシステムのアーキテクチャを説明できる。
2. 並行処理および並列処理について説明できる。
3. 既存プログラムを OpenMP および MPI (を用いて並列化できる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1コンピュータクラスタシステムのアーキテクチャ、およびそれらに特化したアルゴリズムを説明できる。コンピュータクラスタシステムのアーキテクチャを説明できる。コンピュータクラスタシステムのアーキテクチャを説明できない。
評価項目2並行処理および並列処理について説明でき、並列化処理による処理時間の短縮度合いを評価できる。並行処理および並列処理について説明できる。並行処理および並列処理について説明できない。
評価項目3既存プログラムを OpenMP および MPI を統合的に用いて並列化できる。既存プログラムを OpenMP および MPI を用いて並列化できる。既存プログラムを OpenMP および MPI を用いて並列化できない。

学科の到達目標項目との関係

学習・教育到達度目標 (C) 説明 閉じる

教育方法等

概要:
シミュレーションやデータ解析においてコンピュータを利用する場合,取り扱う対象によっては膨大な計算処理を必要とするものがある.これらの処理について,プロセッサに搭載された複数のコアや,複数のプロセッサ,あるいはネットワークで接続された複数のコンピュータを連携し,並列に処理を行う高性能計算の手法について学ぶ.まず計算機を用いて解を求める数値計算法について学んだ後,共有メモリ環境で用いられることの多い OpenMP に重点を置いて,実習を交えて理解する.
授業の進め方・方法:
授業では講義と実習を交えて高性能計算について理解する.今までに学んだプログラミング技法,およびアルゴリズムの構築方法を踏まえて,どのようにすれば効率的に処理を進められるかを講義で学ぶ.そして具体例として,自然科学でしばしば用いられるようなプログラムを,並列化により処理時間の短縮が図れることを,実習を通じて理解する.最後に,講義で学んだ手法を組み合わせて,より複雑なアルゴリズムの高速化に取り組む.授業の状況に応じて,「HPC プログラミング実習」の回の授業内容,実施順序を多少変更することがある.
注意点:
【成績評価の基準・方法】
試験の成績を70%,課題を30%の割合で総合的に評価する.成績評価は中間と期末の各期間の評価の平均とする.学年の評価は前学期末の評価とする.技術者が身に着けるべき専門科目として,上記の到達目標に対する達成度を試験等において評価する.
【事前・事後学習】
事前学習として提示した資料を読んだ上で,理解が難しかった部分を整理して授業に臨むこと.また,事後学習として授業内で取り扱った項目について練習問題を複数回解き理解を深めること.
【学修単位科目(授業時間外の学習時間等)】
本科目は学修単位のため,以下の標準学習時間を設定した自主学習を累計45時間分以上実施して課題等を提出しなければ,成績が60点を超えた場合でも59点として扱い単位を認定しない.
・全15回の授業に対して,0.5時間の事前学習と0.5時間の事後学習.計15時間分.
・中間試験および期末試験に対してそれぞれ試験勉強のための課題学習4時間.計8時間分.
・授業期間中に出題する課題を学習する時間22時間分.
【履修上の注意】
本科目は情報セキュリティコースで学んだプログラミング,アルゴリズムをさらに高度化した授業である.また,プログラミングで取り扱う計算は線形代数,微積分など既習の数学を応用するものである.これらを十分に理解していない者は,受講前に復習しておくことを強く勧める.

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
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週 HPC プログラミング実習III 本授業で学んだ手法を用いて,自然科学分野においてよく用いられる計算処理のプログラムを高速化できるようにする.

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング代入や演算子の概念を理解し、式を記述できる。4
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。4
変数の概念を説明できる。4
データ型の概念を説明できる。4
制御構造の概念を理解し、条件分岐を記述できる。4
制御構造の概念を理解し、反復処理を記述できる。4
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。4
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。4
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。4
主要な言語処理プロセッサの種類と特徴を説明できる。4
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。4
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。4
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。4
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。4
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。4
ソフトウェアアルゴリズムの概念を説明できる。4
与えられたアルゴリズムが問題を解決していく過程を説明できる。4
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。4
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。4
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。4
システムプログラムコンピュータシステムにおけるオペレーティングシステムの位置づけを説明できる。4
プロセス管理やスケジューリングなどCPUの仮想化について説明できる。4

評価割合

試験発表相互評価態度ポートフォリオ課題合計
総合評価割合70000030100
基礎的能力3000001545
専門的能力3000001040
分野横断的能力100000515