並列Fortran研究会 THW150818 v3

22
核融合プラズマシミュレーション でのFortranの活用 名古屋大学理学研究科 渡邉智彦 アンケートの実施において、物理学会領域2、天文学会、地球電 磁気・地球惑星圏学会、プラズマ・核融合学会、はじめ多くの 皆様のご協力をいただきました。この場をお借りして感謝申し 上げます。ありがとうございました。 2015/08/18 並列Fortran研究会@AICS, 神戸 1

Transcript of 並列Fortran研究会 THW150818 v3

Page 1: 並列Fortran研究会 THW150818 v3

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

名古屋大学理学研究科

渡邉智彦

アンケートの実施において、物理学会領域2、天文学会、地球電磁気・地球惑星圏学会、プラズマ・核融合学会、はじめ多くの皆様のご協力をいただきました。この場をお借りして感謝申し上げます。ありがとうございました。

2015/08/18 並列Fortran研究会@AICS, 神戸

1

Page 2: 並列Fortran研究会 THW150818 v3

アウトライン

�  はじめに

�  磁気核融合プラズマの数値解析 �  磁場閉じ込め核融合研究でどんな計算をやっているか �  物理モデルと計算モデル、プログラミング・モデル

�  Fortranの利用に関するアンケート �  物理学会領域2、天文学会、地球電磁気・地球惑星圏学会、はじめ多くの皆様のご協力をいただきました。ありがとうございました。

�  おわりに �  Fortran に望むこと、まとめ

2015/08/18 並列Fortran研究会@AICS, 神戸

2

Page 3: 並列Fortran研究会 THW150818 v3

はじめに

2015/08/18 並列Fortran研究会@AICS, 神戸

3

Page 4: 並列Fortran研究会 THW150818 v3

自己紹介

�  典型的な(あまり優秀でない)中高年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

Page 5: 並列Fortran研究会 THW150818 v3

磁気核融合プラズマ研究

�  磁場で1億度におよぶ高温プラズマを閉じ込め、核融合反応を発生させることを目指す �  コイルでドーナツ(トーラス)形状の磁場を形成 �  トカマク型(ITER, JT60など)、ヘリカル型(LHD)

�  乱流による熱や粒子の輸送が発生 �  閉じ込め性能を悪化させる要因 �  実験計測、理論予測の困難 �  計算機シミュレーションによる研究

�  実効性の高いシミュレーションをどう実現するか? �  核融合プラズマの理論研究において極めて重要

2015/08/18 並列Fortran研究会@AICS, 神戸

5

Page 6: 並列Fortran研究会 THW150818 v3

計算環境とモデルの変化 �  計算環境とモデルは異なるスピードで発展

�  物理モデルの進化は、緩やかだがその効果は劇的 2015/08/18 並列Fortran研究会@AICS, 神戸

6

ハードウェア (プロセッサ、メモリ、通信等)

ソフトウェア (コンパイラ、ライブラリ等)

プログラム言語

アプリケーション (コーディング)

計算手法・モデル

物理モデル

�  適化では、各拘束条件の下、その時点で も満足できる解を探す

�  プログラム言語の進化は、異なる時定数をもつシステムとユーザ間を媒介

Page 7: 並列Fortran研究会 THW150818 v3

磁気核融合プラズマの数値解析

2015/08/18 並列Fortran研究会@AICS, 神戸

7

Page 8: 並列Fortran研究会 THW150818 v3

磁気核融合プラズマの数値計算と 物理モデルの変遷

�  1960-70年代 �  プラズマ波動の線形分散関係、平衡配位計算、線形安定性

�  1980-90年代 �  大規模計算機を使った非線形現象の数値シミュレーション �  3次元流体(MHD)シミュレーション、粒子シミュレーション

�  2000年代以降 �  MPIでの分散並列を使った数値シミュレーション �  プラズマ乱流の運動論的シミュレーション

�  5次元位相空間上の「流体」計算 �  核融合分野で大半の計算資源を消費

�  約20年毎に研究対象となる物理モデルが進化 �  必要となる数値計算もそれに応じて大きく変化

2015/08/18 並列Fortran研究会@AICS, 神戸

8

Page 9: 並列Fortran研究会 THW150818 v3

プラズマ乱流のジャイロ運動論的 シミュレーション

�  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)

Page 10: 並列Fortran研究会 THW150818 v3

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( )

Page 11: 並列Fortran研究会 THW150818 v3

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

Page 12: 並列Fortran研究会 THW150818 v3

Fortranの利用に関する アンケート

2015/08/18 並列Fortran研究会@AICS, 神戸

12

Page 13: 並列Fortran研究会 THW150818 v3

アンケートの主旨

�  科学技術計算で広く使われて来た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

Page 14: 並列Fortran研究会 THW150818 v3

アンケートへの回答 (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

その他

Page 15: 並列Fortran研究会 THW150818 v3

アンケートへの回答 (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

使っていない

Page 16: 並列Fortran研究会 THW150818 v3

アンケートへの回答 (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歳代以上

大規模数値計算・シミュレーション(並列化) 数値計算・シミュレーション(非並列化) 数値データ解析

使わない

その他

Page 17: 並列Fortran研究会 THW150818 v3

アンケートへの回答 (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並列化のみ

コンパイラによる自動並列化のみ

並列計算は行っていない

Page 18: 並列Fortran研究会 THW150818 v3

アンケートへの回答 (5) �  Q8: Fortranを使う理由、または使わない理由を教えてください。  (回答多数のため抜粋) �  コードやライブラリの資産がある。周りで使っている [113] �  簡単で使いやすい。慣れている。他に知らない [99] �  コンパイラによる 適化が充実。計算が高速 �  配列やメモリの使用が簡単 �  複素倍精度や多倍長変数が簡単に使える �  科学計算に向いている

�  必要性を感じない。CやPythonが便利 �  I/Oが不便 �  Fortranを使えても、就職後、開発現場に配置されない

2015/08/18 並列Fortran研究会@AICS, 神戸

18

Page 19: 並列Fortran研究会 THW150818 v3

アンケートへの回答 (6) �  Q8: Fortran言語とそのコンパイラ、並列化プリプロセッサーなどについて、改善して欲しい点や要望等をお聞かせください。  (回答多数のため抜粋) �  今後もFortran環境を維持して欲しい。複雑になりすぎずに �  初学者向け資料整備・教育、2003以降の日本語でのテキスト �  プロファイラ、デバッガ、開発環境の整備 �  他言語への翻訳ツール �  自動並列化性能の強化、メニーコア向けの 適化 �  コンパイル・オプションの共通化 �  現代的なプロセッサの性能を生かせる言語仕様に �  Fortran という名前の印象が良くないのでは … �  …

2015/08/18 並列Fortran研究会@AICS, 神戸

19

Page 20: 並列Fortran研究会 THW150818 v3

おわりに

2015/08/18 並列Fortran研究会@AICS, 神戸

20

Page 21: 並列Fortran研究会 THW150818 v3

Fortranに望むこと、個人的嗜好 �  以下は個人的な意見

�  従来のプログラム資産を活用できる環境は、やはり必要 �  一方、過去と決別した言語仕様のサブセットは可能?

�  抽象的ですが、よりモダンなスタイルをとりつつも数値計算の目的に特化

�  当面、大規模な分散並列はMPIでよいのでは? �  メニーコアに対応した自動並列化機能の強化・指示行の共通化(OpenMPを部分的に使うのも可) �  分散並列を使わないlight userにも、簡便に並列化の恩恵を受けられるように。日本のコンパイラ技術の蓄積を生かす道

�  多重ループの自動並列化 (Fortran 2008 do concurrent で対応?)

�  Fortran 2003/2008 をいつから使い始めるか… �  Fortran 90 も使い始めるまで10年以上。いよいよこれからか!?

2015/08/18 並列Fortran研究会@AICS, 神戸

21

Page 22: 並列Fortran研究会 THW150818 v3

まとめ

�  磁気核融合プラズマの大規模シミュレーションにおいてFortran 90/95 を活用 + MPI + OpenMP

�  Fortran 90/95 を利用した数値計算は、科学研究において、いまだ極めて重要

�  高速な数値計算の需要は今後も高い

�  コンパイラ 適化・自動並列化、開発環境へ多くの要望

�  絶滅危惧種にしないために … �  普及につながる活動が必要 �  新たに習得するためのインセンティブをどう示せるか �  負のスパイラルに落ちないようベンダーのサポートも重要

2015/08/18 並列Fortran研究会@AICS, 神戸

22