東京大学工学部・工学系研究科共通科目「スパコンプログラミング(1)および(I)」塙敏博

東京大学情報基盤センター

１．はじめに工学部および工学系研究科の共通科目「スパコンプログラミング(1)および(I)」を通年科目（Sセメスター、A セメスター共通）として開講している。前任者から引き継いで 2016 年度から実施しているものであり、2020 年度 A セメスターで連続 28 回の開講を数える。後期教養教育科目にも登録されており[1]、後で述べるように、工学部や工学系研究科以外の学生も数多く受講している。また、2017 年度より計算科学アライアンスの認定講義にもなっている[2]。
2020 年度は、本講義の受講生に対して Oakforest-PACS (2016 年 12 月運用開始)を用いた演習を行った。さらに、2017 年 3 月に導入された Reedbush-H スーパーコンピュータシステムも講義で利用した。受講生にとって、最新、最先端のスパコン環境を使用できることで、より高い動機付けになると考えている。
Oakforest-PACS では 16 ノード(68 コア×16 ノード＝1088 コア)、Reedbush-H では 2 ノード計4 GPU が利用可能であり、教育利用であっても十分に高い並列数を扱うことができている。
2020 年度については、コロナ禍により、S セメスターの開始時点から、全て Zoom を用いたオンライン講義とした。アカウント情報の受け渡しや、機材やネットワークのトラブルにより一部混乱もあったが、概ね順調に進めることができた。これまでも講義資料は Web に掲載していたが、加えて、Zoom の録画を LMS に掲載することで、学生からは復習ができて良いと好評であった。
演習の際に、Zoom 共有画面での操作のデモと、自分の端末とを見比べて作業がしやすいとのコメントがあった。以上を踏まえて、来年度も引き続きオンラインでの講義を想定している。

２．講義内容本講義で行った講義内容を表 1 に示す。内容については、A セメスターからは、Python を用いた並列処理や機械学習フレームワークの使用方法についても紹介することにした。用いたアプリ
ケーションは、行列-ベクトル積、べき乗法（行列-ベクトル積を応用した固有値・固有ベクトルの初等的な数値計算法）、行列-行列積、LU 分解法の 4 種類である。
加えて、講義の一環として、受講生が参加できる「プログラミングコンテスト」を開催した。
すべての出題を解答できるプログラムを提出したコンテストの参加者には、成績に加点した。さらに、コンテストにおける入賞者（1 位〜3 位）においては、無条件で「優」以上を与えた。
演習には、表 2 に示す 11 本のサンプルプログラムを教材として用いている。受講者はこれらをダウンロードした上で、動作確認した上で演習を実施する。表 2 最後の Python によるものを除いて、それぞれ、C 言語版と Fortran 版を用意している。
表 1 講義内容

スーパーコンピューティングニュース

1 --- 33

Vol. 23, No.2

2021

講義回数

講義内容

ガイダン

初回ガイダンス、高性能計算の基礎ス
第1回

並列数値処理の基本演算

第2回

スパコンを利用しよう：スパコン(Reedbush-U)を用いた実習

第3回

高性能プログラミング技法の基礎(1): 階層メモリ、パイプライン処理、ループアンローリング、キャッシュヒット率

第4回高性能プログラミング技法の基礎(2): キャッシュブロック化、OpenMP 超入門

第5回

行列-ベクトル積

第6回

べき乗法

第7回

行列-行列積(1): ループ交換法、ブロック化(タイリング)法、 Cannon のアルゴ
リズム、Fox のアルゴリズム、簡単な並列化

第8回

行列-行列積(2): 完全な並列化

第9回

LU 分解法(1): LU 分解法(ガウス・ジョルダン法、ガウス消去法、枢軸選択、LU
分 解法(外積形式、内積形式、クラウト法、ブロック形式ガウス法、縦ブロックガウス法、前進・後退代入))、コンテスト課題発表

第 10 回LU 分解法(2): LU 分解のアルゴリズム詳細

第 11 回(S)LU 分解法(3): 非同期通信、LU 分解の並列化

第 11 回(A)GPU プログラミング(1): OpenACC

第 12 回(S)GPU プログラミング(OpenACC による Reedbush-H の利用、性能比較)

第 12 回(A)Python & 機械学習

表 2 サンプルプログラム一覧
サンプルプログラム内容
Samples-ofp

並列版 Hello プログラム、並列円周率計算プログラム、 逐(第 2 回)

次転送方式による並列総和演算プログラム、二分木通信方式による並列総和演算プログラム、時間計測方法の並列プログ
ラム

Mat-Mat-noopt-ofp

行列-行列積の逐次プログラム(逐次チューニング用)(第 3 回)
Mat-Mat-openmp-ofp

行列-行列積の逐次プログラム(OpenMP 並列化用)(第 4 回)
Mat-vec-ofp

行列-ベクトル積の逐次プログラム（第 5 回）PowM-ofp

ベキ乗法の逐次プログラム（第 6 回）
Mat-Mat-ofp

行列-行列積の逐次プログラム（お手軽並列用）（第 7 回）

スーパーコンピューティングニュース

2 --- 34

Vol. 23, No.2

2021

Mat-Mat-d-ofp

行列-行列積の逐次プログラム（完全分散並列用）（第 8 回）
LU-ofp

LU 分解法による連立一次方程式の求解の逐次プログラム（第 9〜11 回(S), 9,10 回(A)）
Isend-ofp

非同期通信の並列プログラム（第 11 回(S),第 10 回(A)）
Mat-mat-acc

行列-行列積の逐次プログラム(OpenACC 並列化用)(第 12 回(S), 第 11 回(A))
PythonPython による並列プログラム、機械学習サンプル（第 12 回(A)）

３．受講者についての統計データ（1）受講者数
2020 年度の S セメスターの履修登録者は 36 名（学部：18 名、大学院：18 名）、A セメスターの履修登録者は 24 名（学部：13 名、大学院：11 名）であった。そのうち、単位取得者は、22 名（学部：12 名、大学院：10 名）であった。

（2）受講者の所属今年度の履修登録者について、以下の通りである。
l工学部: 30 名
Ø 工学部社会基盤学科 3
Ø 工学部機械工学科: 1
Ø 工学部機械情報工学科: 5
Ø 工学部航空宇宙工学科: 6
Ø 工学部電子情報工学科: 4
Ø 工学部電気電子工学科: 1
Ø 工学部計数工学科: 1
Ø 工学部マテリアル工学科: 3
Ø 工学部化学システム工学科: 1
Ø 工学部システム創成学科: 5l

教育学部: 1 名Øl

総合文化研究科: 3 名
Øl

教育学部総合教育科学科: 1
総合文化研究科広域科学専攻: 3

工学系研究科: 15 名
Ø

工学系研究科社会基盤学専攻: 1

Ø

工学系研究科機械工学専攻: 1

Ø

工学系研究科航空宇宙工学専攻: 2

スーパーコンピューティングニュース

3 --- 35

Vol. 23, No.2

2021

ll

Ø

工学系研究科システム創成学専攻: 3Ø

工学系研究科電気系工学専攻: 3Ø

工学系研究科物理工学専攻: 1

Ø

工学系研究科マテリアル工学専攻: 3Ø

工学系研究科化学生命工学専攻: 1

新領域創成科学研究科: 2 名
Ø

新領域創成科学研究科メディカル情報生命専攻: 1

Ø

新領域創成科学研究科先端エネルギー工学専攻: 1

情報理工学系研究科: 9 名
Ø

情報理工学系研究科システム情報学専攻: 5Ø

情報理工学系研究科数理情報学専攻: 1Ø

情報理工学系研究科知能機械情報学専攻: 3以上から、工学系・情報系を中心に、学内の多様な学部・学科から受講生が集まっていることがわかる。
本講義を通じて、本センターのスーパーコンピュータシステムの利用者を育成するだけでなく、スーパーコンピュータの活用を通じて学際領域分野に貢献できる人材を輩出していると考えられる。また、スパコン利用の経験が多くの学生に広がることにより、学界のみならず、産業界においてスパコンを利活用できる人材育成につなげていけるものと考えている。
来年度は、5 月中旬より稼働を始める Wisteria/BDEC-01 を、なるべく早い段階で使用できるよう移行したいと考えている。

参考

文

献

[1] 東京大学 後期教養教育科目について
http://www.u-tokyo.ac.jp/stu04/koukikyouyou.html[2] 東京大学 計算科学アライアンス http://www.compsci-alliance.jp/

スーパーコンピューティングニュース

4 --- 36

Vol. 23, No.2

2021