到達目標
現在、計算機システムは、最先端分野に限らずあらゆる分野で使用されている。ハードウエア、ソフトウエアおよびネットワーク技術の進歩に伴い計算機のもつ機能や性能は、飛躍的に向上してきたが、その潜在的な処理能力の恩恵を最大限に享受するためには、アーキテクチャの理解やプログラミングに関する高度な専門知識と技術が必要となる。
本講義では、代表的な高速化手法について概観した後、コンパイラオプションによる高速化、マルチスレッドやGPU, OpenMP, MPIなどによる並列化による高速化、計算量を考慮したアルゴリズムやプログラムの高速化手法とその問題点等について教授し、実際に高速化前後の実行時間を計測することにより、これらの効果を確認する。
与えられた課題を高速化により効率的に解析するために、計算機のもつ潜在的な処理能力を引き出す方法を検討でき、それを実践できる能力や技術を育成することを目標とする。
ルーブリック
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
代表的な高速化手法について | 代表的な高速化手法について理解し、その理由やしくみについて説明することができる。 | 代表的な高速化手法を理解できる | 高速化手法を挙げることができない |
各種具体的なの高速化手法について | 与えられた課題を高速することができ、複数の手法を組み合わせるなどさらに改良することができる | 与えられた課題を高速することができる | 与えられた課題を高速することができない |
高速化を確認する方法について | 前後の実行時間の計測をすることができ、効率の度合いを数値等で示すことができる | 前後の実行時間の計測して、比較することができる。 | 前後の実行時間の計測をすることができない |
学科の到達目標項目との関係
教育方法等
概要:
各種アーキテクチャや情報技術をハードウエア、ソフトウエアおよびネットワークの領域に分類したうえで各領域でどのような高速化手法があるか検討し、計算コストや影響範囲の観点から効果的な高速化手法をについて考察する。次に、高速化を確認するために必要となる計算量の算出や実行時間の計測について学び、与えられた課題の高速化を行い実行時間を比較することで効果を確認する。
授業の進め方・方法:
講義資料をもとに基本的な考え方を教授し、その後、それを確認するための実習を行いうことで知識の理解を深めるとともに技術の定着を図る。回答例や答えをただ示すのではなく、ヒントを与えながら自ら気付かせる発見学習を目指す。
注意点:
授業への参加意欲、実習態度や回答を50%, 試験の成績を50%、その他、課題・レポートや小テストをプラスαで総合的に評価する。
授業の属性・履修上の区分
授業計画
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
高速化手法の分類、CPUアーキテクチャによる高速化とGPU, MP, MPIによる並列化、スレッドと排他制御について説明する |
高速化手法を分類することができ、CPUアーキテクチャ、MPI等による並列化およびスレッドと排他制御について説明できる
|
2週 |
msecオーダの実行時間の計測方法について説明した後、実習問題を行う |
msecオーダの実行時間の計測することができる。
|
3週 |
計算量とは何か、記法について学び、それを使って実習問題の計算量を算出する。 |
計算量について説明することができ、具体的に計算量を算出することができる
|
4週 |
アルゴリズムにより計算量おおよび実行時間がどの程度違うのか各種ソートアルゴリズムを比較することで確認する |
各種ソートアルゴリズムの違いについて理解し、計算量の算出や実行時間により比較することができる
|
5週 |
コンパイラオプションなど簡易な高速化を行い、実習問題の実行時間を計測することで確認する |
コンパイラによる最適化について理科し、必要に応じて使い分けることができる
|
6週 |
数式を括弧でくくることで演算数を減らすことにより計算結果を変えず高速化できることを実習問題により確認する |
数式を括弧でくくることで演算量を減らすことができることを理解し、具体的に高速化を実践することができる。
|
7週 |
計算コストのかかる割り算の記述方法を工夫することで計算結果を変えず高速化できることを実習問題により確認する |
演算の違いによる計算コストについて理解し、具体的に高速化を実践することができる
|
8週 |
ダミー変数を使うことで計算結果を変えず高速化できることを実習問題により確認する |
ダミー変数を使うことで計算結果を変えず高速化できることを理解し、具体的に高速化を実践することができる
|
2ndQ |
9週 |
無駄な演算の記述を工夫することで計算結果を変えず高速化できることを実習問題により確認する |
無駄な演算の記述を工夫することで計算結果を変えず高速化できることを理解し、具体的に高速化を実践することができる
|
10週 |
多重ループの記述や順番、ダミー配列を使うことで計算結果を変えず高速化できることを実習問題により確認する |
多重ループの記述を工夫することで計算結果を変えず高速化できることを理解し、具体的に高速化を実践することができる
|
11週 |
メモリの種類によるアクセス速度の違い実習問題により確認する |
メモリの種類によるアクセス速度の違いについて理解し、具体的に高速化を実践することができる
|
12週 |
構造体の配列と配列の構造体の違いに処理速度の違いを実習問題により確認する |
構造体の配列と配列の構造体の違いに処理速度の違いを理解し、具体的に高速化を実践することができる
|
13週 |
行列とベクトルに関する計算量について計算コストのかかる行列と行列の掛け算、逆行列の記述による速度の違いを実習問題により確認する |
計算コストのかかる行列と行列の掛け算、逆行列の記述による速度の違いを理科し、具体的に高速化を実践することができる
|
14週 |
排他制御を行うことでスレッドにより計算結果を変えず高速化できることを実習問題により確認する |
排他制御を行うことでスレッドにより計算結果を変えず高速化できることを理解し、具体的に高速化を実践することができる
|
15週 |
GPU, OpenMP, MPIなどによる並列化による高速化を実習問題により確認する |
GPU, OpenMP, MPIなどによる並列化による高速化を理解し、具体的に高速化を実践することができる
|
16週 |
まとめを行い、CPUのアーキテクチャによる高速化の今後の展望について考える。 |
CPUのアーキテクチャによる高速化の今後の展望について考察することができる
|
モデルコアカリキュラムの学習内容と到達目標
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
評価割合
| 試験 | レポート・課題 | 合計 |
総合評価割合 | 50 | 50 | 100 |
基礎的能力 | 0 | 0 | 0 |
専門的能力 | 40 | 40 | 80 |
分野横断的能力 | 10 | 10 | 20 |