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