J. Plasma Fusion Res. Vol.89, No.1 (2013) 45‐48

講座

核融合プラズマシミュレーションの技法−大規模並列計算環境の活用−
Methods of Fusion Plasma Simulation
Utilizing Messively-Parallel Computation

１．はじめに渡邉智彦
核融合科学研究所・総合研究大学院大学（原稿受付：２０１２年１１月１２日）

本講座では，これから大規模なシミュレーションを始め品（コモディティ）化に伴う計算機環境の変化のスピードようとする大学院生や研究者に向けて，核融合プラズマのも著しく速い．例えば，現代のスマートフォンのプロセッ

シミュレーションで用いられる計算技法に関する解説を試

サであれば 10-20 GFlops 程度の理論演算性能を有しているみる．この章では，次章以降の本論への序論として，本講が，これは，初代地球シミュレータのベースとなった SX-座の背景と狙い，並列計算の必要性，並列計算機の変遷，5（１９９８年）の１プロセッサの演算性能（8 GFlops）を超え

そして並列計算の基礎概念，について述べる．

るほどである．

１．
１ 本講座の背景と狙いウェアの進展は比較的ゆるやかである．例えば，多くの研ハードウェアに比べ，その上で動作するシステムソフト
高性能コンピュータを用いたシミュレーション解析は，究者がシミュレーションに使うプログラミング言語 For-

今や，理学，工学の多種多様な分野で行われ，日々の天気

tran90 は１
９９０年に規格化されてから２０年以上が経つが，今予報から創薬にいたるまで日常生活にも密接な関連をもつ後もしばらく使われ続けるであろうし，その元となる For-ようになった．核融合プラズマ分野においても，その重要tran77 で記述されたコードもしばしば用いられている．ま性は他の科学・工学分野に勝るとも劣らず，複雑なプラズた，並列処理計算の基盤となる MPI（Message Passing In-

マ現象の解明や理解，そして将来の実験装置の性能予測にterface）ライブラリ［１，２］も，１９９５年に ver 1.2 が策定され向けて，様々なシミュレーション研究が進められている．

た後，いくつかの拡張はなされているものの核心部分は保本講座では，これから本格的なシミュレーション研究をはたれたまま多くのアプリケーションで利用されている．広じめようとする大学院生や研究者を対象に，核融合プラズ

く普及したシミュレーションや理論モデルは，さらに長いマ研究で用いられる計算技法についての解説を試みる．特寿命をもつ．例えば，１９６０年代初頭にJ. Dawson等によってに，並列プログラミング手法に焦点をあて，その基本的な始 め ら れ た プ ラ ズ マ の 粒 子 シ ミ ュ レ ー シ ョ ン（PIC:考え方から実際のコーディング例までをできるだけわかりParticle-in-Cell）法は，その原型をとどめたまま現在も多くやすくまとめたい．の研究で用いられている．

一口にコンピュータといっても，スマートフォンから，このように，ハードウェア，システムソフトウェア，ア最先端のスーパーコンピュータまで，その規模や性能は幅

プリケーションは，それぞれ異なった時間スケールで進歩

広い．２０１２年末時点で，top500 リストの３位にランクされするため，ある程度先進的なシミュレーション研究においる計算性能をもつスーパーコンピュータ「京」は，その名ては，計算モデルをどのように計算機環境に最適化するかのとおり１秒間に１京回もの浮動小数点演算を実行するこという問題に向き合うことになる．特に１９９０年代半ば以とができる．一方，その構成は非常に大規模かつ複雑なも降，単一の演算プロセッサの性能向上に限界が見えてきてのとなり，効率的なシミュレーション実行のために多くのから，並列計算機が登場し，これに伴い計算機ハードウェ努力が傾けられている．また，IT 技術の進歩とその日常製アの変化はより加速した．また，計算機環境が大きく変化

1. Introduction
WATANABE Tomo-Hikoauthor’s e-mail: watanabe.tomohiko@nifs.ac.jp

４５!2013 The Japan Society of Plasma
Science and Nuclear Fusion Research

Journal of Plasma and Fusion Research Vol.89, No.1 January 2013

し続けると，ひいては，シミュレーション・モデルの変更（＝１０億＝1 G）点の格子上で分布関数の時間発展を計算すを促すことにもなろう．こうした状況の中，上述の３つのることにしよう．少なく見積もっても，時間積分の１段あ技術（ハードウェア，システムソフトウェア，アプリケーたりおよそ１００回の浮動小数点演算を行い，さらに４段（４ション）をうまく調和させることが，先端的な大規模シ次）の時間発展スキームを使うと，時間ステップあたり 4ミュレーションの実行には不可欠なものとなった．

×1011 回の演算が必要となる．典型的なドリフト波の成長

大規模シミュレーションで用いる技法は，「ある時点で率 "は，イオンの移動時間（transit time）#で規格化してお利用可能な計算機環境下において，具体的な研究課題に関よそ 0.1 程度であり，不安定性の成長から飽和さらに乱流わる問題を最適化する」方法であるとも言え，一般的な数遷移に至るまでに成長時間の２５倍は計算するとすれば値計算の教科書にはいくつかの例がありつつも，普遍的な#の時間計算を行う必要がある．一方，十分な空間解像#$!

体系化がなかなか追いつかないのが現状であろう．一方，度を得るには波長の短い揺動を扱う必要があり，そのため大規模並列計算に向いたアルゴリズムの選択や並列実行効!
#程度に設定するとしよう．すると!"
時間ステップ幅は !

率の向上，通信の最適化のための工夫などの様々な「技法」

全計算ステップ数は 25,000 となり，全体の演算量は 1016について，シミュレーションの研究論文を読んだだけでとなる．これを１秒間に１兆回（1012）の浮動小数点演算は，その細部を知るのは困難である．こうした事情から，（1 TFlops）が実行可能な計算機があれば，およそ 10,000大規模並列コンピュータを実際のシミュレーション研究に秒でシミュレーションを実行することができる．実際のシどのように活用すればよいか，入門者にはやや敷居が高くミュレーションでは，より高解像度が求められ（例えば３感じられるかも知れない．そこで本講座では，実際に核融次元ヘリカル磁場構造をもつ核融合プラズマ閉じ込め装置合プラズマ研究に用いられているコードを題材に，非並で あ る LHD の 解 析 で は５００億 以 上 の 格 子 点 を 使 い，か列・チューニング前の書き方からはじめ，どのように大規つ，より細かな時間ステップ幅が要請される［３］），また，模並列環境に適した形にコードを書き換えていくか，その多成分プラズマやグローバルな形状効果が加わるなど，さ過程と背景にある考え方と合わせ，段階を追った説明を試らに大きな計算資源を必要とする場合が多い．
さて，上で述べた大規模シミュレーションで用いる計算みる．

機はどのような形で実現され得るだろうか？文献［４］にあ

本講座の構成と執筆者は以下の予定である．
第１章

はじめに（渡邉智彦）

げた教科書に興味深い見積もりがあるので，エッセンスを第２章

並列コードを開発するための基礎技法

そのままに，上記のケースへと例えを変えて紹介する．上（坂上仁志）

述の LHD プラズマの解析に使った５００億個の要素をもつ配MHD シミュレーションのコーディング技法

列 x（i），y（i），z（i）に対して，従来型のフォンノイマン型（三浦英昭，藤堂泰，後藤俊幸）

計算機において以下の do ループを実行することを考える．

第３章
第４章
第５章

Vlasov シミュレーションのコーディング技法

do̲i̲=̲1,̲50000000000（渡邉智彦，井戸村泰宏）

̲̲z(i)̲=̲x(i)̲+̲y(i)粒子シミュレーションのコーディング技法

end̲do
この処理を逐次的に実行するには，1.5×1011 個のデータを（佐竹真介，内藤裕志）
本論への導入として，並列計算の必要性，並列計算機の変メモリとの間で移動させなくてはならない．一方，データ遷，並列計算の基礎概念について，本章の後半で概説する．

転送速度は光速度（3×108 m/sec）で制限されているので，次章以降では，現在（または近い過去と未来も含むであろ上記の処理を１秒間で行うには（すなわち，実行性能で 5うが）の計算機環境の下で核融合プラズマ研究における課×1010 Flops=50 GFlops を達成するには，1.5×1011 回の転題を解決するためのレシピを記述しようとすることになる送が発生するので），全メモリへの平均距離を 2×10−3 mが，主題の性質からそれらは現時点でのスナップショット以内に近づける必要がある．そのためには，1.5×1011 個のとして捉えていただきたい．今後の計算機技術や計算モデデータをおよそ 4×10−3 m 四方の 中 に 収 め る こ と に な

ルさらにプラズマ理論の発展に伴って，核融合プラズマのり，データを表す１ワード間の平均距離を，4×10−3/（1.5シミュレーション技法もともに進化を続けることであろ×1011）0.5 m＝10−8 m＝10 nm 以下にする必要がある．すなう．

わち，Si の共有結合半径（およそ 0.1 nm）の１００倍程度の距離の中に１ワード（倍精度で６４ビット）のメモリ素子を実

１．
２ なぜ並列計算が必要か装しなければ，仮にどんなに高速な演算プロセッサが実現

これを議論するためには，最近の核融合プラズマのシできたとしても上記の処理を１秒間で完了することはできミュレーション研究課題を対象に，実際にどの程度の計算ないことになる．したがって，この問題に対する解決策は，速度が必要となるかを簡単に見積もってみるのがよいだろ

データ転送と計算処理を並列で行うことにあることは自明う．ここでは，４章で紹介するジャイロ運動論的 Vlasovであろう．

シミュレーションを例にとってみよう．ジャイロ運動論的

１．
３ 並列計算機の変遷

方程式は，５次元位相空間上で定義される．各座標方向におおまかに１００点の空間格子を設定したとすれば，計 1010

では，並列処理を行うコンピュータとはどのようなもの（＝１００億）点となるが，各方向に少しずつ節約して，109だろうか．そのアーキテクチャの詳細については次章に譲
４６

Lecture Note

1. Introduction

T-H. Watanabe

り，まず，ここでは我が国での利用を中心に並列計算機のるというメリットも併せ持つ．こうしたトレンドは，市販変遷について概説しよう．のプロセッサにもおよび，２００８年頃から一つのソケットに

１９８０年代には，日本製のベクトル型計算機が世界を席巻複数の演算コアを載せたマルチコア・プロセッサがリリーし，米国との貿易摩擦を引き起こすほどであった．従来型

スされ，さらにはメニーコアの時代に入ろうと していのベクトルマシンは，現在はNECのSX-9のみであるが，当る．２０１１年に日本が Top500 リスト首位の座を奪い返した

時は Cray，富士通，日立の各社が激しい開発競争を進めて「京」コンピュータは，８つの演算コアを一つのプロセッサいた．ベクトル型計算機の特徴は，パイプラインによってに搭載し，それらを 88,128 ノード接続した巨大なマシンでデータ処理を一斉に行えることにあり，優れたコンパイラあり，２０１２年９月末から供用が開始されている．一方，と相まって，ある程度のコツさえおぼえれば，利用者はそスーパーコンピュータの性能競争は果てしなく，２０１２年末れほど多くの負担を感じずにスーパーコンピュータ利用の時時点では Titan（Cray XK7）が 17 PFlops という性能を恩恵にあずかることができた．

挙げてトップを走っている．またここでは触れなかった

しかし，計算機の性能向上に対する要求は高まりこそすが，汎用 GPU を利用した計算機も開発され，大規模シミュれ衰えることはない．１９９０年代に入ると単一の演算プロレーションに利用されている．日本では，東京工業大学のセッサのみでは，その要求を満たせなくなり，１９９０年代中Tsubame 2.0 がよく知られている．

頃には各社が相次いで並列計算機を開発しはじめた．これ

一方，我が国の核融合研究分野で最近利用されている主に少し先立って，OS に Unix が採用され，ユーザ環境の標なスーパーコンピュータとしては，大阪大学の SX-9，日本準化が徐々に進行した．日本では，独自プロセッサを積ん

原子力研究開発機構の BX900，核融合科学研究所の SRだ富士通の VPP500，NEC SX-4，日立 SR2201 などがある．

16000/M1，国際核融合エネルギー研究センターの Helios

一方，米国では，本来はワークステーション用であった（Bullx B510）などがある．いずれも大規模なシステムであRISC プロセッサを多数組み合わせたシステムが開発されり，特に後の２者は 100 TFlops 級の大規模計算を実行可能た．原研にいち早く導入された Paragon などもその流れにであることから，核融合プラズマシミュレーションを大きある．

く進展させる原動力になると期待される．

当時は，並列計算機利用のためには各社独自のライブラ

１．
４ 並列計算の基礎概念

リを利用してノード間通信や並列処理の制御を行ってい

以下では，並列計算がどのように行われるか，その基礎た．しかしこれではアプリケーションの汎用性が失われ，概念を解説し，講座の導入部としての本章を終えたい．

開発効率が低下する．そのためシステムソフトウェアの規

現在，一般的に行われている並列計算は，大きく二つの格が作られ，並列処理の制御と計算ノード間の通信を行う種類に分けられる．

ライブラリとして MPI が標準的に用いられるようになっ一つは，メモリ空間を共有する複数の演算プロセッサた．
国内において，数千にもおよぶプロセッサを使う超並列（コア）が計算処理を分担し，データの読み書きを同一のメ

計算機が広く利用されるようになったのは，２００２年の初代

モリ領域に対して行う，共有並列である．プログラムの並地球シミュレータ（ES）の登場以降であろう．ES は，１

列化は，コンパイラの自動スレッド並列機能を用いて行う

ノードに８つのベクトルプロセッサを持ち，ノード内ではか，OpenMP を利用した指示行によって行われる．そのた共有メモリを使ったスレッド並列処理ができた．さらにめ，多くの場合，プログラムの構造を大きく改変する必要６４０の計算ノード（それぞれが一つの筐体に収められていはなく，比較的簡便な方法である．ただし，この場合の並た）を単段のクロスバーネットワークで接続した強力なマ列計算による性能向上は，共有並列可能なプロセッサ・コシンであり，２年半にわたって Top500 リストで一位の座ア数の上限で決まり，４から１６ないし３２並列程度が現状のを保った．米国をはじめとした海外では，この間，プロ上限である．

セッサのコモディティ化がさらに進行した．インテルのもう一つのタイプは，それぞれの計算ノードで異なるx86 プロセッサや AMD の Opteron を用いた大規模マシンデータを保持し，その処理を並列で行う分散並列である．

が相次いで開発された（東京大学・京都大学・筑波大学で異なるノード間でのデータのやりとりや，並列計算のタイ導入されたオープン・スパコン T2K は，この流れの延長上ミングを制御するために，MPI ライブラリが用 いられにあるといえよう）．

る．このため，シミュレーション・コードは一般に多くのしかし，従来型のCPUプロセッサを多数搭載しただけで変更を必要とし，並列計算の入門者にはやや敷居が高く感は，電力や設置スペースの制限から自ずと限界がある．そじられるであろう（MPI を使った並列プログラミングの困のため高密度実装の流れが２０００年代中頃から始まる．その難さを緩和するために，HPF などいくつかの言語環境が開先駆けは，IBM の Blue Gene であろう．個々のプロセッサ発されており，それらについては次章で触れられる）．一はそれほど強力でないが，電力消費を抑え高密度実装を実方，並列数の上限は，システムを構成する全ノード数（ま現して，ES を超える Linpack 性能を達成した．さらに２００７

たは全演算コア数）まで可能であり，うまくプログラムを年には，２０万を超える演算コアを搭載した Blue Gene/L作ることができれば，大きな並列化効果が期待できる．
分散並列プログラムは，また，２種類のカテゴリーに分は，470 TFlops という数値をたたき出した．

けられる．一つは，マスター・スレーブ型とよばれ，主プ

高密度実装は，部品点数を減らし，耐故障性を向上させ
４７Journal of Plasma and Fusion Research Vol.89, No.1 January 2013

ロセスが複数の子プロセスの実行を管理するものである．

あり，さらにはネットワーク形状を考慮したプロセス配置

これは，各並列プロセスの独立性が高く，プロセス毎の実や計算と通信のオーバーラップなどが行われることもあ

行時間がばらつき，同期が不要な場合に特に有用であり，る．また，次世代のエクサスケール・コンピュータ開発にプロセス毎にまったく異なる計算を実行させることもでき

際しては，計算科学とアプリケーション開発者が協業した

る．例えば，異なる温度をもつ熱浴の下で，分子動力学計

co-design が議論されており，大規模並列計算のためのプロ算を実行する場合などが挙げられる．もう一方は，単一のグラミングは，さらに困難かつ複雑なものになっていくかプログラムを，複数の並列プロセスで同期を取りながら同もしれない．こうしたなかで，本講座が，これから核融合時に実行する方法である．並列プロセス番号（ランク）にプラズマシミュレーションの最先端に挑戦しようという学応じて，分割したデータのどの領域を計算するかを指定

生，若手研究者諸賢のために，何らかの役に立つことを願し，他の領域とデータをやりとりしながらシミュレーショ

いつつ本章を終えたい．

ンを進める．領域分割された流体シミュレーションがその参考文献代表的な例である．
前節でみたように，現代の並列計算機の利用には，共有［１］http://www.mpi-forum.org/［２］W. Gropp et al., Using MPI (MIT Press, Cambridge, 1994).
［３］T.-H. Watanabe et al., Phys. Rev. Lett. 100, 195002 (2008).
［４］P．
パチェコ：MPI 並列プログラミング（培風館，２００１）．

並列と分散並列を両方とりいれたプログラミング技法が有効とされる．さらにプログラムの実行性能を高めるには，キャッシュの有効利用や演算パイプラインの利用が必要で!!!!!!!!!!!!

わたなべともひこ

渡 邉 智 彦
気がつけば，シミュレーションをやるようになってからの人生の方が，その前よりも長くなりました．次はどんなスーパーコンピュータを使えるようになるのか楽しみに，そろそろ，また新しい研究を始めたいと思っています．

!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!

４８