核融合プラズマシミュレーション でのFortranの活用

1
核融合プラズマシミュレーション
でのFortranの活用 名古屋大学理学研究科
渡邉智彦
アンケートの実施において、物理学会領域2、天文学会、地球電
磁気・地球惑星圏学会、プラズマ・核融合学会、はじめ多くの
皆様のご協力をいただきました。この場をお借りして感謝申し
上げます。ありがとうございました。
2015/08/18
並列Fortran研究会@AICS, 神戸
2
アウトライン —  はじめに
—  磁気核融合プラズマの数値解析
—  磁場閉じ込め核融合研究でどんな計算をやっているか
—  物理モデルと計算モデル、プログラミング・モデル
—  Fortranの利用に関するアンケート
—  物理学会領域2、天文学会、地球電磁気・地球惑星圏学会、
はじめ多くの皆様のご協力をいただきました。ありがとう
ございました。
—  おわりに
—  Fortran に望むこと、まとめ 2015/08/18
並列Fortran研究会@AICS, 神戸
3
はじめに 2015/08/18
並列Fortran研究会@AICS, 神戸
4
自己紹介 —  典型的な(あまり優秀でない)中高年Fortranユーザーのサン
プルとして
—  大学: Melcom, IBM, ACOS
—  FORTRAN77を講義で学ぶも… 卒業研究で粒子コード
—  大学院:SX-2, VP200, VP400
—  FORTRAN77、ベクトル化、粒子・流体シミュレーション
—  核融合研(初期):SX-3, SX-4, SX-5
—  FORTRAN77、ベクトル化、自動並列化(32PE)
—  核融合研(中期):SX-7, 地球シミュレータ, XT-4, SR8000
—  FORTRAN90、ベクトル化、自動並列化、MPI並列化
—  核融合研(後期):SR16000, Helios (Bull)
—  FORTRAN90/95、自動並列化、OpenMP、MPI並列化
—  現在:京, FX10/100
—  FORTRAN90/95、自動並列化、OpenMP、MPI並列化
2015/08/18
並列Fortran研究会@AICS, 神戸
5
磁気核融合プラズマ研究 —  磁場で1億度におよぶ高温プラズマを閉じ込め、核融合
反応を発生させることを目指す
—  コイルでドーナツ(トーラス)形状の磁場を形成
—  トカマク型(ITER, JT60など)、ヘリカル型(LHD)
—  乱流による熱や粒子の輸送が発生
—  閉じ込め性能を悪化させる要因
—  実験計測、理論予測の困難
—  計算機シミュレーションによる研究
—  実効性の高いシミュレーションをどう実現するか?
—  核融合プラズマの理論研究において極めて重要 2015/08/18
並列Fortran研究会@AICS, 神戸
6
計算環境とモデルの変化 —  計算環境とモデルは異なるスピードで発展
ハードウェア
(プロセッサ、メモリ、通信等) ソフトウェア
(コンパイラ、ライブラリ等) プログラム言語 アプリケーション
(コーディング) 計算手法・モデル —  最適化では、各拘束条件
の下、その時点で最も満
足できる解を探す
—  プログラム言語の進化は、
異なる時定数をもつシス
物理モデル テムとユーザ間を媒介
—  物理モデルの進化は、緩やかだがその効果は劇的
2015/08/18
並列Fortran研究会@AICS, 神戸
7
磁気核融合プラズマの数値解析 2015/08/18
並列Fortran研究会@AICS, 神戸
磁気核融合プラズマの数値計算と
物理モデルの変遷 —  1960-70年代
—  プラズマ波動の線形分散関係、平衡配位計算、線形安定性
—  1980-90年代
—  大規模計算機を使った非線形現象の数値シミュレーション
—  3次元流体(MHD)シミュレーション、粒子シミュレーション
—  2000年代以降
—  MPIでの分散並列を使った数値シミュレーション
—  プラズマ乱流の運動論的シミュレーション
—  5次元位相空間上の「流体」計算
—  核融合分野で大半の計算資源を消費
—  約20年毎に研究対象となる物理モデルが進化
—  必要となる数値計算もそれに応じて大きく変化
2015/08/18
並列Fortran研究会@AICS, 神戸
8
プラズマ乱流のジャイロ運動論的
シミュレーション —  5次元位相空間上での分布関数の時間発展を追跡
—  GKVコードを開発
—  粒子運動と流体運動を包摂 —  プラズマ閉じ込め性能予測へ
—  京でのマルチスケール乱流計算
—  格子点数 約1000億 2成分系
—  30万時間ステップ
—  K 12,288 nodes (98,304 cores) で120時間
—  100万コア規模まで良好な並列性能
2015/08/18
Maeyama et al. PRL (2015);
ibid, Parallel Comput. (2015) 並列Fortran研究会@AICS, 神戸
9
10
GKVの物理モデルと計算モデル —  非線形移流拡散方程式(静電的ジャイロ運動論的方程式)
⌢
⌢
&∂
( + v||b + v d ⋅ ∇ − µ b ⋅ ∇Ω
' ∂t
(
)
(
)
⌢ e∇ψ
)! c
!
FM + C f!s
+ fs + {ψ, fs } = v* − v d − v||b ⋅
*
B0
Ts
(
)
( )
—  2次元移流項:スペクトル法(多重FFT)、転置通信
—  他の3次元:差分、ステンシル計算、1対1通信(袖通信)
—  速度空間上の積分には、リダクション演算
—  粒子種でも分散並列化、多様な通信パターン、コミュニケータ
—  master threadでノード間通信処理し、演算とのoverlap
—  倍精度複素数演算、5次元の巨大配列 fs(10242x64x96x16)
—  大規模計算を高速に実行したい(可視化はポスト処理)
2015/08/18
並列Fortran研究会@AICS, 神戸
11
GKVのプログラミング・モデル —  Fortran 90/95によるmoduleを利用
—  構造化、変数/サブルーチンのviewを明確化
—  public変数はパラメータとしてのみ利用
—  モジュールの切り替えで計算モデルを変更
—  並列化の現状とこれまで
—  現行バージョンでは、OpenMPとMPIのハイブリッド
—  演算/通信のoverlapとコードのportabilityのため
—  2000年代には、コンパイラによる自動並列化とMPIのハイブ
リッドが高性能で実現していた
—  数行の指示行のみで8~16 thread程度まで良好な性能
—  米国でOpenMPとのハイブリッド並列化を議論(2010年頃)
—  2000年代にHPFを試用も …
2015/08/18
並列Fortran研究会@AICS, 神戸
12
Fortranの利用に関する
アンケート 2015/08/18
並列Fortran研究会@AICS, 神戸
13
アンケートの主旨 —  科学技術計算で広く使われて来たFortranですが、大学の講義で教
えられることもなくなり、年々、利用者は減っていると思われま
す。「絶滅危惧種」とも揶揄されますが、大規模シミュレーショ
ンでは、今も多くのユーザーが利用しているのではないでしょう
か(かくいう私もその一人です)。このアンケート調査は、数値計
算でプログラミング言語を利用するユーザーの声を集め、Fortran
の現状と展望を語るための貴重な意見として役立てたい、という
ものです。いただいた回答は統計データとして、「並列Fortranに
関するシンポジウム」
http://site.hpfpc.org/home/events/parallel_fortran_sympo で紹
介させていただきます。ご趣旨を理解いただき、是非、よろしく
ご協力の程、お願いいたします。
—  8月4日呼びかけ => 物理学会領域2、天文学会、地球電磁気・地球
惑星圏学会、プラズマ・核融合学会 ML
—  8月12日〆切 回答総数394 ご協力ありがとうございました!
2015/08/18
並列Fortran研究会@AICS, 神戸
14
アンケートへの回答 (1) 50歳代 20歳代
以上 以下 20%
21%
—  Q1: 年齢層別のデータを得
るため、あなたの年代を
教えてください。
—  Q2:科学計算にどんなプロ
グラミング言語を使いま
すか?(複数回答可) 50歳代以上 C, C++; 32
Fortran; 120
20歳代以下 10%
20%
30%
その他; 27
C, C++; 45
Fortran; 80
0%
その他; 19
40%
Fortran
C, C++
Fortran; 105
30歳代 2015/08/18
C, C++;
16
Fortran; 75
40歳代 30歳代 31%
40歳代 28%
C, C++; 19
50%
60%
70%
その他; 33
Python
MATLAB
その他 Python;
15
80%
その他; 18
90%
100%
並列Fortran研究会@AICS, 神戸
15
アンケートへの回答 (2) —  Q3: Fortranをどこでマスターしましたか?
50歳代以上 講義・演習; 38
40歳代 研究室; 18
講義・演習; 48
研究室; 32
講義・演習 自習・独習 研究室 自習・独習 講習会等 30歳代 講義・演習; 39
20歳代以下 研究室; 48
講義・演習; 31
0%
10%
20%
30%
研究室; 31
40%
50%
60%
70%
自習・独習 自習・独習 自習・ マスター
独習 していない マスターしてい
ない 80%
90%
100%
—  Q4: Fortranはどのバージョンを使っていますか? 50歳代以上 Fortran 90/95; 45
40歳代 Fortran 90/95; 75
30歳代 20歳代以下 0%
2015/08/18
FORTRAN 77; 28
10%
20%
30%
Fortran 2008
Fortran 2003
FORTRAN 77; 23
Fortran 90/95
Fortran 90/95; 100
FORTRAN 77
Fortran 90/95; 68
使っていない 40%
50%
60%
FORTRAN
70%
80%
90%
100%
並列Fortran研究会@AICS, 神戸
16
アンケートへの回答 (3) —  Q5: Fortranを今後も使いますか?
50歳代以上 ずっと使う; 53
40歳代 ずっと使う; 90
30歳代 ずっと使う; 101
20歳代以下 時々使う 時々使う; 16 時々使う; 19 ずっと使う; 53
0%
10%
20%
30%
40%
ずっと使う 時々使う; 22
時々使う; 26
50%
60%
70%
80%
90%
100%
—  Q6: Fortranを使う用途は何ですか?
50歳代以上 大規模数値計算・シミュ
レーション(並列化); 23
大規模数値計算・シミュ
レーション(並列化); 50
40歳代 大規模数値計算・シミュ
レーション(並列化); 31
20歳代以下 0%
10%
20%
30%
数値計算・シミュレー
ション(非並列化); 30
数値計算・シミュレー
ション(非並列化); 18
40%
50%
大規模数値計
算・シミュレー
ション(並列化)
数値計算・シ
ミュレーション
(非並列化)
数値データ解析 数値データ解析; 18
数値計算・シミュレー
ション(非並列化); 36
大規模数値計算・シミュ
レーション(並列化); 65
30歳代 2015/08/18
数値計算・シミュレー
ション(非並列化); 35
新たに使ってみ
たい 他の言語に乗り
換えるつもり 今後も使わない 数値データ
解析; 20
数値データ
解析; 25
使わない 数値データ解析; 31
その他 60%
70%
80%
90%
100%
並列Fortran研究会@AICS, 神戸
17
アンケートへの回答 (4) —  Q7: Fortranでは主にどのような並列化を行っていますか?
MPIとOpen
MP; 11
50歳代
30歳代 20歳代
MPIと自動
並列; 17
MPIのみ;
12
MPIとOpenMP; 40
MPIとOpen
MP; 10
0%
10%
並列計算は
行っていない; 29 自動並列のみ; 17 MPIとOpenMP;
21
40歳代 MPIのみ; 11
20%
30%
自動並列のみ; 21
MPIのみ; 24
OpenMP
のみ; 11 40%
MPIとOpenMP並列化のハ
イブリッド 並列計算は
行っていない; 31 OpenMP 自動並列
並列計算は
のみ; 13 のみ; 14 行っていない; 23 自動並列
のみ; 11 50%
Coarray 等のFortranでの
並列化 並列計算は
行っていない; 35
60%
70%
80%
90%
MPIとコンパイラによる自
動並列化のハイブリッド MPI並列化のみ OpenMP並列化のみ 100%
コンパイラによる自動並
列化のみ 並列計算は行っていない —  結果の簡単なまとめ
—  講義や演習、研究室での修得が多い
—  Fortran 90/95が最も普及。2003以降の利用は少数
—  今後もFortranへの需要は高い。特にシミュレーション
—  並列化にはMPIが普及も、未対応も4割程度
—  Q5, Q6, Q7に相関がありそう
2015/08/18
並列Fortran研究会@AICS, 神戸
18
アンケートへの回答 (5) —  Q8: Fortranを使う理由、または使わない理由を教えてくだ
さい。 (回答多数のため抜粋)
—  コードやライブラリの資産がある。周りで使っている [113]
—  簡単で使いやすい。慣れている。他に知らない [99]
—  コンパイラによる最適化が充実。計算が高速
—  配列やメモリの使用が簡単
—  複素倍精度や多倍長変数が簡単に使える
—  科学計算に向いている
—  必要性を感じない。CやPythonが便利
—  I/Oが不便
—  Fortranを使えても、就職後、開発現場に配置されない
2015/08/18
並列Fortran研究会@AICS, 神戸
19
アンケートへの回答 (6) —  Q8: Fortran言語とそのコンパイラ、並列化プリプロセッ
サーなどについて、改善して欲しい点や要望等をお聞かせ
ください。 (回答多数のため抜粋)
—  今後もFortran環境を維持して欲しい。複雑になりすぎずに
—  初学者向け資料整備・教育、2003以降の日本語でのテキスト
—  プロファイラ、デバッガ、開発環境の整備
—  他言語への翻訳ツール
—  自動並列化性能の強化、メニーコア向けの最適化
—  コンパイル・オプションの共通化
—  現代的なプロセッサの性能を生かせる言語仕様に
—  Fortran という名前の印象が良くないのでは …
—  …
2015/08/18
並列Fortran研究会@AICS, 神戸
20
おわりに 2015/08/18
並列Fortran研究会@AICS, 神戸
21
Fortranに望むこと、個人的嗜好 —  以下は個人的な意見
—  従来のプログラム資産を活用できる環境は、やはり必要
—  一方、過去と決別した言語仕様のサブセットは可能?
—  抽象的ですが、よりモダンなスタイルをとりつつも数値計算の
目的に特化
—  当面、大規模な分散並列はMPIでよいのでは?
—  メニーコアに対応した自動並列化機能の強化・指示行の共
通化(OpenMPを部分的に使うのも可)
—  分散並列を使わないlight userにも、簡便に並列化の恩恵を受け
られるように。日本のコンパイラ技術の蓄積を生かす道
—  多重ループの自動並列化 (Fortran 2008 do concurrent で対応?)
—  Fortran 2003/2008 をいつから使い始めるか…
—  Fortran 90 も使い始めるまで10年以上。いよいよこれからか!?
2015/08/18
並列Fortran研究会@AICS, 神戸
22
まとめ —  磁気核融合プラズマの大規模シミュレーションにおいて
Fortran 90/95 を活用 + MPI + OpenMP
—  Fortran 90/95 を利用した数値計算は、科学研究におい
て、いまだ極めて重要
—  高速な数値計算の需要は今後も高い
—  コンパイラ最適化・自動並列化、開発環境へ多くの要望
—  絶滅危惧種にしないために …
—  普及につながる活動が必要
—  新たに習得するためのインセンティブをどう示せるか
—  負のスパイラルに落ちないようベンダーのサポートも重要 2015/08/18
並列Fortran研究会@AICS, 神戸