:LVWHULD利用講義「並列数値計算」
:LVWHULD利用講義「並列数値計算」
須 田 礼 仁須 田 礼 仁東京大学情報理工学系研究科


東京大学情報理工学系研究科


１．はじめに 「並列数値計算」は情報理工学系研究科の大学院講義である。隔年で実施しており， 年に１．はじめに
Numerical Computations”としている。講義はスライド・続く開講となる。英語名は“Parallel「並列数値計算」は情報理工学系研究科の大学院講義である。隔年で実施しており，年に説明とも英語で実施しているため，留学生が多く参加している。今年度は情報理工学系研究科，続く開講となる。英語名は“Parallel
Numerical Computations”としている。講義はスライド・工学系研究科のほか，理学系研究科，数理科学研究科，総合文化研究科，新領域，学際情報学府
説明とも英語で実施しているため，留学生が多く参加している。今年度は情報理工学系研究科，新領域創成科学研究科の学生を含め約名が履修登録した。
工学系研究科のほか，理学系研究科，数理科学研究科，総合文化研究科，新領域，学際情報学府学際情報学府の学生を含め約50 名が履修登録した。の学生を含め約名が履修登録した。
 年からは新型コロナウイルス感染症&29,'の影響を受けてきたが， 年も多少影響が残存した。増減を繰り返しながら感染は継続したので，この講義もほぼオンラインで実施す 年からは新型コロナウイルス感染症&29,'の影響を受けてきたが， 年も多少影響が残存した。増減を繰り返しながら感染は継続したので，この講義もほぼオンラインで実施することとした。
ることとした。


２．講義の概要
計算機の性能向上は並列性によって実現されている。今後まだコア数は伸びてゆくと思われる
２．講義の概要
ので，並列計算は誰にとっても重要な技術となってきている。膨大な計算量を必要とする近年の計算機の性能向上は並列性によって実現されている。今後まだコア数は伸びてゆくと思われる
機械学習の隆盛もあって，*38
をアクセラレータとする計算機が広く使われるようになっていので，並列計算は誰にとっても重要な技術となってきている。膨大な計算量を必要とする近年のる。さらに，)3*$の性能も向上し，解く問題によっては最新の&38や*38を凌駕する高い性機械学習の隆盛もあって，*38をアクセラレータとする計算機が広く使われるようになってい能を達成しているところである。
る。さらに，)3*$の性能も向上し，解く問題によっては最新の&38や*38を凌駕する高い性能を達成しているところである。
このような背景のもと，本講義では並列計算の一般論と各論とを分離し，一般論として述べられる点はできるだけ一般的な論述をするように構成した。
これにより一般論が統一的な視点で理
このような背景のもと，本講義では並列計算の一般論と各論とを分離し，一般論として述べられる点はできるだけ一般的な論述をするように構成した。
これにより一般論が統一的な視点で理解できるようにしたつもりである。ただし，一般論部分は話が抽象的になりがちで実感がわきに解できるようにしたつもりである。ただし，一般論部分は話が抽象的になりがちで実感がわきにくくなっているかもしれない。今回は後述の確認テストを新たに導入したことで，一定の効果がくくなっているかもしれない。今回は後述の確認テストを新たに導入したことで，一定の効果があったと感じたところであるが，今後とも継続的な改善を要するところである。一方，各論におあったと感じたところであるが，今後とも継続的な改善を要するところである。一方，各論においては，特に大規模並列を念頭において 03,，2SHQ03，&8'$ の  種類のプログラミングモデル
いては，特に大規模並列を念頭において
03,，2SHQ03，&8'$ の  種類のプログラミングモデルを取り上げている。$9; など &38 の 6,0' 機構については十分な説明をする時間がなかった。分
を取り上げている。$9;など &38 の 6,0' 機構については十分な説明をする時間がなかった。分
散メモリの 03, を最初に詳しめに説明して，その後2SHQ03 と &8'$ をやや軽めに説明している。
散メモリの03, を最初に詳しめに説明して，その後2SHQ03 と &8'$ をやや軽めに説明している。
レポート課題は03, のみである。近年注目を浴びているタスク型の並列性，3*$6などのメモリ
レポート課題は03, のみである。近年注目を浴びているタスク型の並列性，3*$6 などのメモリモデル，)3*$ といった新しいプロセッサについては説明できていない。同じ情報理工学系研究モデル，)3*$といった新しいプロセッサについては説明できていない。同じ情報理工学系研究科において，共有メモリ並列処理でタスク型のモデルもきちんと取り上げている講義があり，多科において，共有メモリ並列処理でタスク型のモデルもきちんと取り上げている講義があり，多くの学生はそちらも受講してくれているようである。しかし，情報理工学系研究科の中で )3*$
くの学生はそちらも受講してくれているようである。しかし，情報理工学系研究科の中で)3*$
による高性能計算を教えている講義はないかもしれない。)3*$ は数値計算で必要とする倍精度による高性能計算を教えている講義はないかもしれない。)3*$
は数値計算で必要とする倍精度浮動小数点数は得意としていない点がネックであるが，注目されているアーキテクチャであるの浮動小数点数は得意としていない点がネックであるが，注目されているアーキテクチャであるので，実際に触って演習することもできる講義があればよいのだが。
で，実際に触って演習することもできる講義があればよいのだが。


３．講義の内容
令和  年度には  回の講義を実施した。ほとんどは ]RRP によるオンライン講義で，配信の３．講義の内容
令和  年度には  回の講義を実施した。ほとんどは ]RRP によるオンライン講義で，配信のスーパーコンピューティングニュース- 32 -

Vol. 25, No.1

2023

録画を復習用に学内限定で提供した。この講義での録画の活用状況は確認していないが，一般的には復習ができることが便利らしい。
以下に各回の内容の概要を示す。

第１回：イントロダクション
この講義で取り上げる並列計算とは何かを，類似性のある並行計算，分散計算と対比する形で定義した。特に，この講義では再現性があり予測可能な計算を取り上げ，動的な並列性は最小限とする。続いて，ハードウェア並列性の基礎概念として，複数演算器とパイプライン，6,0' と
0,0'，分散メモリと共有メモリ，80$と180$，およびそれらのハイブリッド，均一性・不均一性などを導入した。また，この講義では所要時間を主なメトリックとすること（スループットではない），そこから高速化率，並列化効率，理想高速化率，スーパーリニアなどの概念を導入した。また，強スケーリングと弱スケーリング，アムダール則とグスタフソン則といった相対性能の基本法則を導入した。加えて，絶対性能としてIORSVおよびピーク性能を説明した。また，所要時間測定時の注意点についても説明した。

第２回：並列性と依存性
並列性とは依存性のないこと，よって並列性の解析は依存性の解析に他ならないことからスタートした。続いて，データ依存と制御依存，5$::$5:$:依存などの依存性の類型を示した。配列，リスト，木などのデータ構造へのアクセスの並列性，ステンシル計算と超平面法・ループスキュー，木によるリダクション，カスケードによるスキャン， 項漸化式の並列性，パイプラインなどの依存性と並列性を事例として挙げた。一方で計算順序が変えられる場合にはリオーダリングにより並列性が変わること，その表現としてカラーリングが便利であることも示した。また
配列への間接アクセスがある場合を取り上げ，その並列性の抽出方法には多数ありうることを示した。
第３回：局所性
並列計算は高性能を目指すものであるが，性能という観点では局所性は避けて通れない重要事項である。まずは分散メモリでも共有メモリでも局所性が低いと高い性能が期待できないことを説明した。局所性には計算強度と粒度の２つの側面がある。まず計算強度や%)値について説明し，行列積を例として，プログラムの書き方次第で計算強度が変わることを示した。また行列ベクトル積のような計算強度の弱い計算もあることも注意した。リダクション，))7，ステンシ
ル計算の計算強度について概観し，領域分割と2ZQHUFRPSXWHVUXOHが局所性の観点から利点があることを説明した。次に粒度について説明し，パイプライン計算を例に並列性と粒度のトレードオフがあることを示した。最後に単純な通信性能モデルを導入し，計算強度と粒度が性能にどのように影響を与えるかを解析できることを示した。

第４回：スケジューリング理論
この講義では離散最適化問題に分類される古典的なスケジューリング理論についても紹介をタイパ（WLPHSHUIRUPDQFH"）なる言葉が  年の流行語らしい。+3& はコンピュータ上でのタイパを追究することが，学問として確立したものと言えよう。


スーパーコンピューティングニュース- 33-

Vol. 25, No.1

2023

している。+3& 分野とはやや用語が異なるため，まずその点を注意した。そのうえで，タスクとスケジューリングの基本概念，不均一プロセッサの類別，メイクスパン，ガント図，グラハム記法などを導入した。3__&PD[ に対する /37 の最悪性能比， 3_SUHF_&PD[ に対するリストスケジ
ューリングの最悪性能比，3_LQWUHHSM _&PD[に最適解を与えるレベルスケジューリング，3∞_SUHF_&PD[ に最適解を与えるクラスタリングスケジューリングを説明した。また，クリティ
カルパス，タスク挿入，タスク重複などの概念を紹介した。不均一プロセッサやオンラインスケジューリングについては既知の性能オーダーを示すにとどめた。そのかわり，'LYLVLEOH /RDG
7KHRU\およびループスケジューリングについて紹介した。
ここまでが一般論であり，このあと各論に入る。

第５回：03, 入門
メッセージパッシング，ORFDOYLHZ630' を説明したのち，03, の基礎の一対一通信を説明した。(DJHUと5HQGH]YRXVプロトコル，ブロッキング・非ブロッキングの違い，メッセージの到着順序などについて注意をしたうえで，リダクションとステンシル計算を題材に実際の簡単な03, 並列プログラムを説明した。

第６回：集団通信
03, の集団通信について，基本的な集団通信と，それを実現するためのいくつかのアルゴリズ
ムを説明した。プロセッサ数とデータサイズにより，異なるアルゴリズムが最適になりうることを確認した。また%URDGFDVWと5HGXFWLRQなどの双対性，6FDWWHUと$OO*DWKHUで%URDGFDVW
が実現できるなどの集団通信の組み合わせについて解説した。

第７回：分散データ構造
まず，分散メモリ並列計算におけるデータ構造のあり方の一般論を導入した。続いて，最も単純な１次元ベクトルについて，ブロック，サイクリック，ブロックサイクリック，可変長ブロッ
ク，要素ごと指定の  種類の分散方法を示した。続いて２次元の場合には列１次元分散，行１次元分散，２次元分散の選択があることを説明し，/8 分解を例題として利害得失を考察した。また
ステンシル計算における袖領域を説明し，遅延隠蔽，SLJJ\EDFNLQJを説明した。さらに，疎行列ベクトル積の事例，および動的負荷分散（この文脈では動的データ分散）の概念を紹介した。

第８回：2SHQ03入門
2SHQ03の入門として，JOREDOYLHZであること，また自動並列化ではなく正しさはプログラマの責任であることを注意した。基礎的な構文を説明したのち，2SHQ03 で陥りがちな誤りとして，共有・私有変数の区別，レース条件，弱い一貫性とメモリ同期の必要性を説明した。あわせて，UHGXFWLRQ節やDWRPLF節も紹介した。

第９回：2SHQ03 高性能プログラミング
2SHQ03 の性能低下要因とその回避・軽減策を紹介した。排他制御のための構文であるDWRPLF
FULWLFDOおよびORFN関数の違い，ループスケジューリングの選択肢，アフィニティに関する注意などを行った。また，キャッシュ周りの性能向上手法として，パディング，タイリング，ルスーパーコンピューティングニュース- 34 -Vol. 25, No.1

2023

ープ交換，ループ結合，$UUD\V RI6WUXFWXUHV6WUXFWXUHVRI $UUD\V などの手法を紹介した。
また03,2SHQ03ハイブリッド並列化の必要性について説明した。
第  回：&8'$ 入門
アクセラレータという概念，*38 のハードウェア特性を導入した。続いて，&8'$ の基本的な書き方の説明をした。ホストとデバイス，ブロックやスレッド，メモリ階層や同期など，しっかり理解しなければならないことが多いため，なかなか大変である。
第  回：*38 における高性能化
*38 において高い性能を達成するために重要な概念を説明した。*38 のハードウェアと &8'$ の並列性階層の対応を説明し，60 ごとに走るブロックの数を決定する式を示した。またスレッドを実行する機構を説明し，並列性により遅延隠蔽が可能となることを説明した。分岐命令の削減，FRDOHVFHGメモリアクセスの性能，&38*38 間データ転送時間について注意を促した。
&8'$の更新は早く，講義のたびに新しい*38と&8'$の仕様を確認している。今回はやや古くなってしまったが，ほぼ3DVFDOアーキテクチャに準拠して説明をした。
第  回：:LVWHULD ハンズオン
この回のみ対面とした。事前に配布しておいた :LVWHULD の使い方の資料についての不明点への回答や，アカウント登録・ログインや操作のトラブルへの対応について，必要な学生に指導を行った。


４．課題
講義の最初の３回で，81,;コマンドと&)RUWUDQプログラミングのごく初歩的な問題を  分で解いてもらった。
「カレントディレクトリを表示するコマンドは何か」「R で終わるファイルを全部消すコマンドを示せ」とか，「YLかHPDFVで，現在カーソルがある１行を消すコマンドは何か」とか，「整数変数QとPを宣言せよ」，「+HOOR:RUOGを表示するプログラムを書け」というレベルである。 年前は平均点が半分程度であったが，前回と今回は  割ぐらいまでできていた。オンライン環境であったので，その場で調べた学生もいるかもしれない。今回は，,7&/06 上で  分の制限時間で回答をしてもらったが，自動採点には向かないので，得点は ,7&/06のアンケート機能による自己申告としている（成績には反映されない）。
また，ほぼ毎回の授業の後，その授業での内容の肝のところを確認する主旨で，「&KHFN \RXU
XQGHUVWDQGLQJ」と称する簡単な復習問題を解いてもらった。こちらも,7&/06のテスト機能を用いており，全問選択式にして自動採点で確認できるように設定した。内容はごく簡単なものであるが，話を聞くだけになりがちのオンライン授業に，多少のアクティブな要素を入れられるので，一定の効果があったと感じている。特に， 年前，前半の一般論の内容を後半に入ると忘れてしまっている場合が散見されたのだが，今回はそのような例はほとんどなかった。
さらに，全部で  回のレポート課題を課した。最初の２つの課題は各自が使える計算機により行い，これらの課題を提出した学生には:LVWHULD のアカウントを配布して，第  の課題を行わせた。


スーパーコンピューティングニュース- 35-Vol. 25, No.1

2023

第  回：&38 モデルと計時方法の確認
各自のプロセッサのモデルを確認し，ピーク性能を計算させた。また，計時方法を適当に選ばせ，その計測精度を測定により求めさせた。

第  回：)ORSVへの挑戦
「どんな計算でもよいので，できるだけ高い IORSV 値を出すプログラムを書け」という課題を出した。また，これに加えて，十分長いベクトルのコピー，内積，和の性能を測定させ，それらからメモリスループットを測らせた。
例年は，問題の主旨（高い性能はどのような場合に出るか）がわからない学生もちらほら見受けたが，今年はそのような学生はほとんどいなかった。これも「&KHFN\RXUXQGHUVWDQGLQJ」の効果かもしれないと思っている。

第  回：03,プログラミング
密行列計算，偏微分方程式の数値解法，もしくは個人的に興味のある計算のいずれかを選んで，03, でプログラミングをして :LVWHULD で実行し，弱スケーリングと強スケーリングでの性能を報告させた。前回に引き続き，&KROHVN\ 分解と熱伝導方程式については逐次プログラムをダウンロードできるようにして，それを修正して課題として提出してよいこととした。
以前は，並列性ばかりに注意が行って，局所性や通信コストを忘れる学生もいたが，今回はそのような学生はほとんどなかった。
なお，今回は *38 の話ができた（ 年前はコロナの影響でできなかった）ので *38 を使ってもらってもよかったのだが，:LVWHULD が &38 並列部分と *38 並列部分にすぱっと分かれているところで，少し残念な思いがした。
５．おわりに
全体として講義はスムーズに進み，:LVWHULD のアカウント発行も問題なくできた。例年はアカウント発行の申請が遅れてしまう学生が数名出るのだが，今年度は  名だけで，事前に準備していただいた予備アカウントで足りた。オンライン授業に学生が慣れてきたということなのかもしれない。スーパーコンピュータを用いた講義という貴重な機会を提供していただき，いつものようにもろもろご迷惑をおかけしましたが適時にご対応いただきました，情報基盤センターの皆様方に感謝を申し上げます。

スーパーコンピューティングニュース
- 36 -

Vol. 25, No.1

2023