サイエンティフィック・システム研究会

2003 年 10 月 31 日

科学技術計算分科会 2003 年度 第 2 回会合

３次元 MHD コードによる PRIMEPOWER HPC2500 の性能評価：名古屋大学における事例報告
名古屋大学太陽地球環境研究所
荻野竜樹
名古屋大学情報連携基盤センター
津田知子
１．

はじめに

太陽観測衛星「ようこう」の軟Ｘ線画像が明らかにしたように、太陽活動は時々刻々大きく変動しており、その影響として地球磁気圏電離圏ではサブストーム／磁気嵐が発生し、極地方では活発なオーロラがみられる。その太陽活動とジオスペース（地球外圏）環境変化の因果関係を解明しようとするのが、図１に示す太陽風と地球磁気圏相互作用の研究である。太陽風と地球磁気圏相互作用の３次元グローバ
ル電磁流体力学的（ＭＨＤ）シミュレーションは、約２５年前に、力が釣り合った平均的な磁気圏の形をやっと再現できるところから出発して、コンピュータとＩＴ技術の長足の進歩に相まって発展を続け、最近では、衛星・地上観測と比較して磁気圏のダイナミックスを議論できる程度にまで成長してきた。
地球磁気圏

こうして、上流の太陽風や惑星間磁場（ＩＭＦ）の変化に対する磁気圏・電離圏の応答や、磁気圏での大きな擾乱現象であるサブストームや磁気嵐を直接シミュレーションから調べようとする試みも行われるようになってきた。これらの太陽風
磁気圏相互作用のグローバルＭＨＤシミュレーションを精度よく実行するために

太陽活動

オーロラ

は、外部境界をできるだけ遠くに設定してかつ空間分解能をできるだけ上げることが望ましい。以上の点から、計算方法の改良が一方で必要であると同時に、最大級のスーパーコンピュータの利用、それも効率的な並列計算法の利用は不可欠である。

NASA 提供

図１

太陽活動とジオスペース（地球外圏）環境変化の因果関係を調べる太陽風と地球磁気圏相互作用。

そのような並列計算共通プログラム言語の候補として、High Performance Fortran (HPF)と Message
Passing Interface(MPI)がある。HPF は、米国の共同研究者が共通プログラム言語として優れていると
1

言っている反面、多くの大型プログラムで性能が十分に出ないという欠点が指摘されていた。こうした中、2000 年から HPF/JA（JAHPF による HPF の日本拡張版）が使えるようになり、VPP Fortran でフルベ
クトル化フル並列化されている流体コードや MHD コードは、比較的容易に HPF/JA に書き換えることができて、更にその HPF/JA のプログラムは VPP Fortran と同等の性能を得ることができるようになった。
しかし、HPF/JA の成功にもかかわらず、HPF の普及は進んでいないのが現状である。そして、世界標準
並列化手法として最後に残った MPI に対する期待が高まっていた。この VPP Fortran と HPF/JA から MPIへの書き換えも MHD モデルでは上手くことが運び、VPP5000 では３者とも高効率の並列計算を実現できるようになった。
しかし、富士通株式会社のスーパーコンピュータもベクトル並列機の開発は VPP5000 で終了し、後継機
種はクラスタ型のスカラ並列機 PRIMEPOWER HPC2500 になる。超並列機の性能は全く予断を許さない。
米国では通常の並列プログラムに対する最大規模の超並列機の効率は 3‑7%とも言われており、また DOEのスーパーコンピュータ利用科学研究マネージャーの超並列機の効率予測は最大 10%となっている。このように、ベクトル並列機が 30‑70%の高効率を実現してきたのに対して、大規模の超並列機は大体 10%以下の効率しか実現できていない。この高効率並列計算を実現できるかどうかが、大規模の計算が必要なシミュレーション研究者にとって、VPP5000 から PRIMEPOWER HPC2500 の移行に対する最大の心配ごとであった。こうして、クラスタ型のスカラ並列機 PRIMEPOWER HPC2500 の性能を実用的グローバル３次
元 MHD コードを用いて調べることにした。
２．

地球磁気圏の３次元グローバル MHD モデル

太陽風磁気圏相互作用の３次元ＭＨＤモデルでは、ＭＨＤ方程式とマックスウェル方程式を初期値境界値問題として、様々な方法でその時間発展を解いている。偏微分方程式を差分化して 2 step
Lax‑Wendroff 法で解く方法などはその例である。空間分解能を上げるための計算方法における様々な工夫として、非一様格子法、非構造格子法、自動調節格子法、時空間多重格子法の導入などが行われている。私達は、高精度計算法の一つである modified leap‑frog 法を用いた３次元グローバルＭＨＤシミュレーションから、太陽風や惑星間磁場（IMF）の変化に依存した地球磁気圏電離圏の応答を調べている。
MHD モデルの基礎となる規格された MHD 方程式と Maxwell 方程式を以下に示す。

∂ρ= −∇ ⋅ ( vρ ) + D∇ 2 ρ
∂t
∂v
1
1
1
= −( v ⋅ ∇ )v − ∇ p + J × B + g + Φ
∂t
ρ
ρ
ρ
∂p
= −( v ⋅ ∇ ) p − γ p∇ ⋅ v + Dp∇ 2 p∂t∂B= ∇ × (v × B ) + η ∇ 2B∂t
J = ∇ × (B − Bd )

2

(1)
( 2)
(3)
(4)
(5)

式（１）〜（４）はそれぞれ、連続の式、運動方程式、エネルギー保存則より求まる圧力変化の式、インダクション方程式と呼ばれる磁場変化を示す式である。ただし、ρ はプラズマ密度、ｖは速度ベクト
ル、ｐはプラズマ圧力、Β は磁場ベクトルである。この８つのパラメータを未知数として求めていく。
ただし、差分法の数値誤差により、Βd に対する J が本来の零とは違って有限値になるため、式（５）を用いてその数値誤差を除去している。ここでの Βd は地球の固有磁場としての双極子磁場である。
シミュレーションには、図２に示すような太陽方向ｘ軸正、夕方向ｙ軸正、磁気北極方向ｚ軸正とした
太陽地球磁気圏座標系を用いて、MHD 方程式とマックスウェル方程式を時空間で差分化し、初期値境界値問題として MHD 方程式の８個の物理変数の時間発展を解く。ここでは、朝夕と南北で対称性を仮定した 1/4 領域の地球磁気圏モデルを示している。シミュレーションで用いる modified leap‑frog 法は、
two step Lax‑Wendroff 法の数値的安定化効果を一部取り入れて、leap‑frog 法の数値的減衰と分散の小さい効果をより多く取り入れた、数値的減衰と分散にバランスの良くとれた一種の組み合わせ計算方法となっている。また、パラメータを変化させることによって、性質の良く分かった２つの計算方法に一致させることができるので、結果に与える数値誤差の影響も理解しやすい利点を持っている。３次元
MHD コードのフローチャートを図３に示す。計算環境設定のパラメータを与えて、初期値を決め、計算
継続の場合は前のデータを読み込んで、２段解法の modified leap‑frog スキームを開始する。並列計
算では、z 方向に領域分割しているので領域分割間データの転送が必要である。そのデータ転送も図３に示すように、必要最小限の２カ所にコンパクトにまとめてある。

計算環境設定初期値
前データの read
境界条件
領域分割間データの転送 (reflect)
First Step の計算
領域分割間データの転送 (reflect)
Second Step の計算
内部境界の修正
上流境界の更新
サンプリングデータの write
計算終了

図２

３次元 MHD シミュレーションに用いる太陽地球磁気圏
座標系。

図３

３次元 MHD コードのフローチャート。

スーパーコンピューティングの説明に進む前に、太陽地球磁気圏相互作用の３次元グローバル MHD シミ
ュレーションの例を図４と図５に示す。図４は磁気軸が 30 度傾いている北半球が夏の場合、惑星間磁場（IMF）の南北向きの違いによる地球磁気圏構造の違いを磁力線とプラズマ温度分布で示す。南向き
IMF では磁気圏尾部の磁力線が直線的形状になって薄いプラズマシートが形成されているのに対し、北3

向き IMF では磁力線が丸い形状になって厚いプラズマシートが形成されているのがみられる。このように、惑星間磁場が南北に向きを変える時、磁気圏の形は大きく変化し、それが IMF と地球磁場の間の磁気リコネクションの起こり方の違いによることが理解される。図５は、衛星観測の太陽風と惑星間磁場データを計算のインプットとして用いた場合、1999 年 10 月の大きな磁気嵐に対する MHD シミュレーシ
ョン結果で、磁気嵐前と磁気嵐時の磁気圏構造の変化を示している。磁気嵐前は IMF が北向きであったために丸い形状の磁力線が広がっているが、磁気嵐時には丸い形状（ダイポール型）の磁力線は地球近傍に収縮して、静止衛星軌道（6.6Re）より内側で丸い形状（ダイポール型）から直線的形状（テール型）に急激に遷移している。このように、３次元グローバル MHD シミュレーションから、太陽風と惑星間磁場の変化に対する地球磁気圏の応答を知ることができる。

南向きIMF

北向きIMF

図４

磁気軸が傾いている場合で、惑星間磁場（IMF）の南北向きの違いによる地球磁気圏構造の変化。

磁気嵐が起こる前の地球磁気圏

磁気嵐が起こっている時の地球磁気圏 Duskward and southward
IMF
07:20/22-10-1999 by VRML

Large storm event
Northward IMF
23:30/21-10-1999
by VRML

図５

1999 年 10 月 21,22 日の大きな磁気嵐現象に対して MHD シミュレーションから示される
磁気嵐前と磁気嵐時の地球磁気圏構造の変化。

4

３．

VPP における並列化

1995 年に Fujitsu VPP500 が使用できるようになって、太陽風と地球磁気圏相互作用のグローバル MHD
シミュレーションを実行するためのフルベクトル化されていた３次元 MHD コードを VPP Fortran 用に書き換えた。コードの全面的な書き換えを行って、VPP Fortran で計算効率の高い、ほぼフルベクトル化
フル並列化された３次元 MHD コードを作成した[荻野、1997]。その後、2000 年に３次元 MHD コードを
VPP Fortran から HPF/JA へ書き換えた[荻野、2000; Ogino, 2002]。結果的には、HPF/JA で書いた３次
元 MHD コードも VPP Fortran の３次元 MHD コードと同様にフルベクトル化フル並列化することができ、計算速度も VPP Fortran と同等の性能を得ることができた。VPP Fortran でも、HPF/JA でもベクトル並列化 MHD コードとしては、ほとんど同等のものであるが、ベクトル化 MHD コードとは全く別物である。
その最も大きな違いは、ベクトル化 MHD コードは、プログラムサイズを最小化しているのに対し、ベク
トル並列化 MHD コードでは並列計算の性質上プログラムサイズの最小化が不可能だったことである。このため、同じ格子点数の MHD シミュレーションをする場合、ベクトル化コードに比べて、ベクトル並列
化コードは約３〜４倍のコンピュータメモリが必要となった[荻野、2000; Ogino, 2002]。
2002 年になって、周りの人の協力を得て HPF/JA から MPI へと VPP Fortran から MPI への書き換えを行い、MPI でほぼフルベクトル化フル並列化された３次元 MHD コードを作成することができた。その計算速度は、VPP Fortran や HPF/JA の MHD コードと同等以上の高計算効率を得ることができた。書き換えの労力だが、VPP Fortran や HPF/JA でフルベクトル化フル並列化された３次元 MHD コードがあれば比較的容易に MPI 利用の Fortran コードに書き換えることが可能である。実際、プログラムの構造をほとんど変えずに、VPP Fortran と HPF/JA から MPI の並列化指示行を挿入することでプログラムの大半の部分を書き換えることができる。それに、それぞれのコンパイラに特有の部分をユニットとして追加すれば、プログラムの大部分ができあがる。後に残される問題は、大まかに言えば境界条件と入出力である。これらも通常の場合はそれほど深刻な問題とはならない。しかし、MPI で超大型計算まで目標としている
場合には、境界条件と入出力には注意が必要である。
ベクトル化や並列化した場合、非ベクトル化コードや非並列化コードに比べて何倍の速度向上率が得られるかを示すものに、アムダールの法則がある。その法則によると、多数の PE（Processing Element）
を用いて高い速度向上率を得るためには、並列化率が 100％に限りなく近いことが極めて重要となる。
従って、高効率のシミュレーションコードを作成するためには、どうやってフルベクトル化とフル並列化を実現するかにかかっている。実際には、内側の do loop でベクトル化されているので、そのベクトル化を維持したまま外側の do loop で並列化をすればよいことになる。よく、「計算時間のかかっている do loop から並列化せよ」と言われるが、その方法だとある程度までは並列化効率が上がるが、100％に近い並列化効率を得ることはほとんど不可能である。これまでのベクトル化と並列化の経験からすると、プログラムの構造をきちんと決めることが最も重要であると確信している。分散メモリ型並列計算機を用いる場合の並列計算の基本は単純なことで、計算する前に、計算に必要な変数を全て各 PE に集めればよいわけで、それもできるだけ一括して転送し、転送回数をできるだけ少なくすればよい。即ち、プログラムの構造とは、領域分割の変数（方向）を軸とした計算の流れを示すフローチャートに、効率5的な配列の利用内容を割り付けたものである。並列計算プログラムでは通常作業配列を多く取る必要が生じるので、プログラムの構造を決める時に作業配列の量を最小にすることが同時に必要となる。
４．

PRIMEPOWER HPC2500 (ngrd)における並列化

３次元グローバル MHD コードは、VPP で使用していた MPI バージョンのプログラムをほとんどそのまま使用していて、VPP の場合と同じように k (z)方向のみに 1 次元の領域分割を行って、数値計算法としては Modified leap‑frog 法を用いている。従って、配列の順序は、f(nx2,ny2,nz2,nb)のように、x 方
向、y 方向、z 方向、8 個の MHD 方程式の成分の順序である。
次に、PRIMEPOWER HPC2500 で使用し、現在までで最高の計算速度を出した３次元 MHD コードの最終 MPI
バージョンの重要な部分を示す。先ず、f(nx2,ny2,nz2,nb)から F(nb,nx2,ny2,nz2)への配列の順序の並び替えを宣言している。これは差分で解くため、MHD 方程式の 8 成分は近傍の格子点で必ず値を参照されるので、遠くに離さない方がよいためである。z 方向の分割は MPI で標準的な連続領域分割を用いる。
また、VPP Fortran の袖あるいは HPF/JA の reflect として用いていた、領域分割の両端のデータを cpu間で通信する場合は、次に示す様に wild card、mpi̲sendrecv の利用及び通信データのコンパクト化を行っている。
<< MPI バージョンの３次元グローバル MHD コード >>#define f(a,b,c,d) F(d,a,b,c)#define ff(a,b,c,d) FF(d,a,b,c)#define p(a,b,c,d) P(d,a,b,c)#define u(a,b,c,d) U(d,a,b,c)cparameter (npe=48)
integer recvcount(npe),displs(npe)cparameter (nx=500,ny=318,nz=318,nxp=150,nb=8)
parameter (nx2=nx+2,ny2=ny+2,nz2=nz+2)
parameter (nzz=(nz2‑1)/npe+1)
dimension f(nx2,ny2,0:nzz+1,nb),u(nx2,ny2,0:nzz+1,nb)c!hpf$ reflect f
CC MPI START
iright = irank + 1
ileft = irank ‑ 1
if(irank.eq.0) thenileft = MPI̲PROC̲NULL
else if(irank.eq.isize‑1) theniright = MPI̲PROC̲NULL
end ifdo m=1,nb
ftemp1=f(:,:,ks,m)ftemp2=f(:,:,ke+1,m)6

call mpi̲sendrecv(ftemp1,n2,mpi̲real,ileft,100,
ftemp2,n2,mpi̲real,iright,100,mpi̲comm̲world,istatus,ier)f(:,:,ks,m)=ftemp1
f(:,:,ke+1,m)=ftemp2
end doCC MPI END&&

名古屋大学情報連携基盤センターに 2002 年度に導入された富士通のクラスタ型スカラ並列機
PRIMEPOWER HPC2500 (ngrd) の性能を次に示す。
<< 名古屋大学情報連携基盤センターの PRIMEPOWER HPC2500 (ngrd) の性能 >>【ＣＰＵ】
32CPU 構成×2 筐体＝計 64CPU（このうち、Batch には 24CPU×2 を使用、あとは、TSS と Grid 用）・SPARC64 V(1.3GHz)
・内部キャッシュ(1 次キャッシュ:命令 128KB+データ 128KB、2 次キャッシュ:2MB)・理論計算速度：5.2 GFlops/CPU, 332.8 GFlops/TOTAL【メモリ】
64GB×2 筐体＝計 128GB【高速インターコネクト】
ノード間通信性能：4GB/s×2＝8GB/s (理論性能値)
・33CPU 以上では GbE を使用
次に、PRIMEPOWER HPC2500 で３次元 MHD コードをコンパイルした時のオプションと実行シェルを示す。
最高速の計算結果は最後のコンパイルオプションで実現した。このオプションでは、キャッシュのレベ
ルの最適化、largepage の利用、64bit 対応用のオプション V9 のオフを採用している。実行シェルも最高速の計算結果を得た時のものである。
<< PRIMEPOWER HPC2500 (ngrd) でのコンパイルオプションと実行シェル >>mpifrt ‑KV9 ‑o progmpi progmpi.f
mpifrt ‑Kfast̲GP2=3 ‑o progmpi progmpi.f
mpifrt ‑Kfast̲GP2=3,largepage=2 ‑o progmpi progmpi.f
mpifrt ‑Kfast̲GP2=3,largepage=2 ‑o progmpi progmpi.f
mpifrt ‑Kfast̲GP2=3,V9 ‑O5 ‑Kprefetch=4,prefetch̲cache̲level=2,prefetch̲strong ‑o progmpi progmpi.f
mpifrt ‑Kfast̲GP2=3,largepage=2,V9 ‑O5 ‑Kprefetch=4,prefetch̲cache̲level=2,prefetch̲strong ‑o progmpi progmpi.f
mpifrt ‑Kfast̲GP2=3,largepage=2,V9 ‑O5 ‑Kprefetch=4,prefetch̲cache̲level=2,prefetch̲strong ‑Cpp ‑o progmpi
progmpi.f
mpifrt ‑Kfast̲GP2=3,largepage=2 ‑O5 ‑Kprefetch=4,prefetch̲cache̲level=2,prefetch̲strong ‑Cpp ‑o progmpi progmpi.f
qsub mpiexec.sh
ngrd% more mpiexec.sh

7

#
#

@$‑q gs ‑eo ‑o mpiexec.out@$‑lP 16 ‑lM 3.0gb ‑ls 128mb

mpiexec ‑n 16 ‑mode limited ./mearthd2/progmpi

５．

HPC2500 (ngrd)と VPP における３次元 MHD コード計算速度

３次元 MHD シミュレーションなどの大型シミュレーションを実行するためには、スーパーコンピュータの利用と、ベクトル化や並列化による計算速度の効率化は必須である。表１に、富士通 VPP5000/64 を用いて、VPP Fortran、HPF/JA 及び MPI で書かれた３次元 MHD コードを実行した場合の計算処理速度の比較を示す。計算時間（sec）は、Modified leap‑frog 法で１回時間ステップを進めるのに要する時間を示している。VPP Fortran, HPF/JA 及び MPI で同等の計算速度がでていて、スケーラビリティも良くかつその計算効率もかなり高いことが分かる。これらの並列計算 MHD コードはフルベクトル化とフル並列化ができていて、VPP Fortran と HPF/JA と MPI のいずれの大規模計算でも 400 Gflops 程度以上の高効率も実現している。
表２に、HPC2500（ngrd）と VPP5000/64 を用いて、MPI と HPF/JA で書かれた３次元グローバル MHD コー
ドを実行した場合の計算処理速度の比較を示す。実際の太陽風地球磁気圏相互作用の３次元 MHD シミュ
レーションでは、約１万回以上の繰り返し計算をするので、大規模計算になると VPP5000 でも 100 時間のオーダーの計算時間がかかる。VPP5000 利用の MPI と HPF/JA の３次元 MHD コードでの格子点数は、境界を除いて(nx,ny,nz)=(500,318,318)である。領域分割の両端のデータを cpu 間で通信する方法として
HPF/JA では reflect の一通りに対して、MPI では mpi̲send and mpi̲recv、mpi̲isend and mpi̲irec、
mpi̲sendrecv の３つの方法があるが、その３者の間の差異はほとんどみられない。また、計算は正しくないが比較のために、領域分割の両端のデータ通信を停止した場合の計算速度も測定した。その通信を停止した場合の計算速度に対する通信有りの計算速度の比は、HPF/JA で 81.7%、MPI で 90.5%であった。
HPC2500（ngrd）は、他との差異は少なかったので MPI での mpi̲sendrecv を利用した結果のみを示す。
コンパイルオプションは(nx,ny,nz)=(250,158,158)では２番目、(500,318,318)では最後の最高速の計算結果を得た場合である。32cpu まではかなりよいスケーラビィリティが得られている。多くの格子点(500,318,318)の使用では、配列の順序の並び替え f(nb,nx2,ny2,nz2)を宣言して、かつ largepage を使用している。また、33cpu 使用で計算速度が急に遅くなっているのは、HPC2500（ngrd）において 33cpu
以上では高速ネットワークが働かなくなるからである。通信停止の場合の計算速度を測定すると 48cpuまで確実によいスケーラビィリティが得られている。その通信を停止した場合の計算速度に対する通信有りの計算速度の比は、32cpu で 76.9%であった。(nx,ny,nz)=(500,318,318)の格子点を用いた場合、VPP5000 の 1cpu での速度 6.90 Gflops に対して、HPC2500 (ngrd)の 8cpu で 8.36 Gflops の計算速度を得ているように、VPP5000 の 1cpu に対して HPC2500 (ngrd)の 7cpu で同等の速度を得ることができる。
この結果は他の高効率計算の例と同様の結果を示している。

8

表１

名古屋大学情報連携基盤センターの富士通 VPP5000/64 を用いて、VPP Fortran、HPF/JA 及び MPIで書かれた太陽風と地球磁気圏相互作用の３次元グローバル電磁流体力学的（MHD）コードで調べた場
合の計算処理速度の比較。
Table 1. Comparison of computer processing capability between VPP Fortran, HPF/JAand MPI in a
3‑dimensional global MHD code of the solar wind‑magnetosphere interaction by using Fujitsu
VPP5000/64.
Numberof PE

Number ofgrids

VPP Fortran
cpu time Gflops Gf/PE

HPF/JA
cpu time Gflops Gf/PE

MPI
cpu time Gflops Gf/PE

1PE
1PE
2PE
4PE
8PE
16PE
24PE
32PE
48PE
56PE
64PE

200x100x478
200x100x478
200x100x478
200x100x478
200x100x478
200x100x478
200x100x478
200x100x478
200x100x478
200x100x478
200x100x478

119.607 ( 0.17) 0.17 (scalar)
2.967 ( 6.88) 6.88
3.002 ( 6.80) 6.80
1.458 ( 14.01) 7.00
1.535 ( 13.30) 6.65
0.721 ( 28.32) 7.08
0.761 ( 26.85) 6.71
0.365 ( 55.89) 6.99
0.386 ( 52.92) 6.62
0.205 ( 99.38) 6.21
0.219 ( 93.39) 5.84
0.141 (144.49) 6.02
0.143 (143.02) 5.96
0.107 (191.23) 5.98
0.110 (186.13) 5.82
0.069 (297.96) 6.21
0.074 (276.96) 5.77
0.064 (319.53) 5.71
0.068 (299.27) 5.34
0.0662(308.91) 4.83
0.0627(324.57) 5.07

1.444 ( 14.14) 7.07
0.714 ( 28.60) 7.15
0.361 ( 56.55) 7.07
0.191 (107.19) 6.70
0.1302(157.24) 6.55
0.1011(202.50) 6.33
0.0679(301.51) 6.28
0.0639(320.39) 5.72
0.0569(359.80) 5.62

1PE
2PE
4PE
8PE
16PE
24PE
32PE
48PE
56PE
64PE

500x100x200
500x100x200
500x100x200
500x100x200
500x100x200
500x100x200
500x100x200
500x100x200
500x100x200
500x100x200

2.691 ( 7.94) 7.94
1.381 ( 15.47) 7.73
0.715 ( 29.97) 7.47
0.398 ( 53.65) 6.71
0.210 (101.87) 6.37
0.160 (133.70) 5.57
0.131 (163.55) 5.11
0.100 (214.48) 4.46
0.089 (239.48) 4.28
0.0956(222.95) 3.48

2.691 ( 7.94) 7.94
1.390 ( 15.37) 7.68
0.712 ( 29.99) 7.50
0.393 ( 54.38) 6.80
0.202 (105.74) 6.61
0.150 (142.40) 5.93
0.120 (175.50) 5.48
0.091 (231.69) 4.82
0.086 (244.85) 4.37
0.0844(249.49) 3.90

1.357 ( 15.74) 7.87
0.688 ( 31.03) 7.76
0.372 ( 57.50) 7.19
0.193 (110.70) 6.92
0.135 (158.26) 6.59
0.1084(197.10) 6.15
0.0811(263.44) 5.49
0.0688(310.54) 5.55
0.0687(310.99) 4.86

2PE
4PE
8PE
12PE
16PE
24PE
32PE
48PE
56PE
64PE

800x200x478
800x200x478
800x200x478
800x200x478
800x200x478
800x200x478
800x200x478
800x200x478
800x200x478
800x200x478

10.659 ( 15.33) 7.66
5.351 ( 30.53) 7.63
2.738 ( 59.67) 7.46
1.865 ( 87.58) 7.30
1.419 (115.12) 7.19
0.975 (167.54) 6.98
0.722 (226.33) 7.07
0.534 (305.70) 6.36
0.494 (330.95) 5.91
0.465 (351.59) 5.49

10.742 ( 15.21) 7.60
5.354 ( 30.52) 7.63
2.730 ( 59.85) 7.48
1.911 ( 85.49) 7.12
1.389 (117.66) 7.35
0.976 (167.45) 6.98
0.717 (227.72) 7.12
0.515 (317.26) 6.61
0.464 (352.49) 6.29
0.438 (373.41) 5.83

10.428 ( 15.67) 7.83
5.223 ( 31.28) 7.82
2.696 ( 60.61) 7.58
1.771 ( 92.25) 7.68
1.342 (121.81) 7.61
0.905 (180.59) 7.52
0.690 (236.63) 7.39
0.469 (348.38) 7.25
0.433 (377.73) 7.74
0.389 (420.45) 6.57

4PE
8PE
12PE
16PE
24PE

800x200x670
800x200x670
800x200x670
800x200x670
800x200x670

7.618 ( 30.06) 7.52
3.794 ( 60.36) 7.54
2.806 ( 81.61) 6.80
1.924 (119.00) 7.44
1.308 (175.10) 7.30

8.001 ( 28.62) 7.16
3.962 ( 57.81) 7.23
3.005 ( 76.21) 6.35
2.012 (113.85) 7.12
1.360 (168.44) 7.02

7.433 ( 30.81) 7.70
3.683 ( 62.17) 7.77
2.696 ( 84.95) 7.08
1.854 (123.53) 7.72
1.254 (182.61) 7.60

9

32PE
48PE
56PE
64PE

800x200x670
800x200x670
800x200x670
800x200x670

0.979 (233.85) 7.31
0.682 (335.62) 6.99
0.595 (384.61) 6.87

1.032 (221.88) 6.93
0.721 (317.80) 6.62
0.628 (364.87) 6.52

0.955 (239.77) 7.49
0.662 (346.21) 7.21
0.572 (400.59) 7.15
0.519 (441.50) 6.90

16PE
32PE
48PE
56PE
32PE
48PE
56PE

1000x500x1118
9.668 (123.52) 7.72
9.619 (125.50) 7.84
1000x500x1118
5.044 (236.73) 7.40
4.992 (241.83) 7.56
1000x500x1118
3.550 (336.40) 7.01
3.479 (346.97) 7.23
1000x500x1118
2.985 (400.04) 7.14
2.935 (411.36) 7.35
1000x1000x1118
9.979 (239.33) 7.48
9.813 (243.37) 7.61
1000x1000x1118
7.177 (332.79) 6.93
7.028 (339.85) 7.08
1000x1000x1118
5.817 (410.55) 7.33
5.794 (412.23) 7.36‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑: Mflops is an estimated value in comparison with the computation by
1 processor of CRAY Y‑MP C90.

表２

名古屋大学情報連携基盤センターの富士通 HPC2500（ngrd）と VPP5000/64 を用いて、MPI と HPF/JAで書かれた太陽風と地球磁気圏相互作用の３次元グローバル電磁流体力学的（MHD）コードで調べた場
合の計算処理速度の比較。
Table 2. Comparison of computer processing capability in the MPI and HPF/JA 3‑dimensional global
MHD codes of the solar wind‑magnetosphere interaction by using Fujitsu HPC2500 and VPP5000/64.
The used 3D MHD code is to solve full 3D Earth's Magnetosphere with grid points of(nx,ny,nz)=(250,158,158) and (500,318,318).
Kind of
Number of
cpu time Gflops Gf/PE
cpu time Gflops Gf/PE Datecomputer
PEs
(sec)
(sec)
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
HPF/JA reflect
MPI mpi̲send and mpi̲recv
VPP5000
1PE
16.7886 (6.44) 6.44
VPP5000
2PE
8.3927 ( 12.87) 6.44
7.8305 ( 13.80) 6.90
VPP5000
4PE
4.4073 ( 24.52) 6.13
4.0589 ( 26.61) 6.65
VPP5000
8PE
2.1753 ( 49.67) 6.21
1.9973 ( 54.10) 6.76
VPP5000
16PE
1.1446 ( 94.40) 5.90
1.0103 ( 106.95) 6.68
VPP5000
32PE
0.6139 ( 176.01) 5.50
0.5116 ( 211.21) 6.60

VPP5000
VPP5000
VPP5000

2PE
16PE
32PE

MPI mpi̲sendrecv
7.8334 ( 13.79) 6.90
1.0109 ( 106.88) 6.68
0.5127 ( 210.74) 6.59

MPI mpi̲isend and mpi̲irecv
7.8227 ( 13.81) 6.90
0.5089 ( 212.31) 6.63

HPF/JA without comm
MPI without comm
VPP5000
2PE
7.8898 ( 13.69) 6.85
7.3934 ( 14.61) 7.31
VPP5000
32PE
0.5016 ( 215.40) 6.73
0.4639 ( 232.90) 7.28‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
MPI

10

HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)

2PE (250,158,158) sendrecv ‑KV94PE (250,158,158) sendrecv ‑KV9
8PE (250,158,158) sendrecv ‑KV9
16PE (250,158,158) sendrecv ‑Kfast
24PE (250,158,158) sendrecv ‑Kfast
32PE (250,158,158) sendrecv ‑Kfast
48PE (250,158,158) sendrecv ‑Kfast

6.7873 ( 1.999) 0.999
3.5883 ( 3.780) 0.945
1.8780 ( 7.224) 0.903
0.8991 ( 15.091) 0.943
0.6378 ( 21.273) 0.886
0.5036 ( 26.940) 0.841
4.8827 ( 2.779) 0.058

HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)

2PE (250,158,158) no comm
4PE (250,158,158) no comm
8PE (250,158,158) no comm16PE (250,158,158) no comm24PE (250,158,158) no comm32PE (250,158,158) no comm
48PE (250,158,158) no comm6.7865 ( 1.999) 0.999
3.3942 ( 3.997) 0.999
1.7190 ( 7.892) 0.986
0.8289 ( 16.366) 1.023
0.5898 ( 23.001) 0.958
0.4464 ( 30.387) 0.950
0.3755 ( 36.125) 0.753

HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)
HPC2500 (ngrd)

2PE (500,318,318) sendrecv ‑Cpp
4PE (500,318,318) sendrecv ‑Cpp
8PE (500,318,318) sendrecv ‑Cpp
16PE (500,318,318) sendrecv ‑Cpp
20PE (500,318,318) sendrecv ‑Cpp
24PE (500,318,318) sendrecv ‑Cpp
32PE (500,318,318) sendrecv ‑Cpp
33PE (500,318,318) sendrecv ‑Cpp
40PE (500,318,318) sendrecv ‑Cpp
48PE (500,318,318) sendrecv ‑Cpp

‑KV9
‑KV9
‑KV9
‑Kfast‑Kfast‑Kfast‑Kfast48.4191 ( 2.231) 1.116
24.7140 ( 4.372) 1.093
12.9242 ( 8.360) 1.045
6.8664 ( 15.736) 0.983
5.6745 ( 19.041) 0.952
4.9517 ( 21.820) 0.909
4.1945 ( 25.760) 0.805
15.2646 ( 7.078) 0.214
13.9701 ( 7.733) 0.193
12.5962 ( 8.577) 0.179

HPC2500 (ngrd)
2PE (500,318,318) no comm ‑Cpp
47.6551 ( 2.268) 1.134
HPC2500 (ngrd)
4PE (500,318,318) no comm ‑Cpp
22.6370 ( 4.774) 1.194
HPC2500 (ngrd)
8PE (500,318,318) no comm ‑Cpp
11.6999 ( 9.237) 1.155
HPC2500 (ngrd)
16PE (500,318,318) no comm ‑Cpp
5.8821 ( 18.376) 1.148
HPC2500 (ngrd)
24PE (500,318,318) no comm ‑Cpp
4.3032 ( 25.118) 1.047
HPC2500 (ngrd)
32PE (500,318,318) no comm ‑Cpp
3.2285 ( 33.479) 1.046
HPC2500 (ngrd)
48PE (500,318,318) no comm ‑Cpp2.3294 ( 46.401) 0.967‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
６．

計算速度の比較の考察と問題点

HPC2500（ngrd）と VPP5000/64 を用いて、MPI と HPF/JA で書かれた３次元グローバル MHD コードを実行
した場合の計算処理速度の比較を表１、２からグラフにして図６−９に示す。HPC2500（ngrd）における cpu 数を増加した時のスケーラビィリティの良さが明瞭にみられる。図６の VPP5000 による VPP
Fortran、HPF/JA 及び MPI で書かれた３次元 MHD コードの計算処理速度の比較では３つとも同程度であるが、小さな差異をみると MPI が一番速く、HPF/JA、VPP Fortran の順に計算速度が少し遅くなっている。図７は、HPC2500 との比較のために格子点数が(nx,ny,nz)= (500,318,318)の場合を示した。図８と図９は格子点数が(nx,ny,nz)=(250,158,158)と(500,318,318)の場合に対する HPC2500 での計算速度を示し、32cpu までスケーラビィティがよいのが分かる。33cpu 以上では計算速度が急に低下している。

11

Computer Processing Capability in the MPI, HPF/JA and VPP Fortran by Using VPP
Computation Speed per Processor(Gflops/processor)

Computation Speed (Gflops)

450
400
350
300
250
200
150
VPP Fortran
HPF/JA
MPI

100
50
0

0

10

20

30

40

50

60

9
8
7
6
5
4
3

1
0

70

VPP Fortran
HPF/JA
MPI

2

0

10

20

30

図６

40

50

60

70

No. of Processors

No. of Processors

VPP5000 による VPP Fortran、HPF/JA 及び MPI で書かれた３次元 MHD コードの計算処理速度の比較。

Computer Processing Capability in the MPI and HPF/JA by Using VPP
Computation Speed per Processor(Gflops/processor)

Computation Speed (Gflops)

250
200
150
100
HPF/JAMPI
HPF/JA (no comm)MPI (no comm)

50
0

0

5

10

15

20

25

30

35

8
7
6
5
4
3
HPF/JAMPI
HPF/JA (no comm)MPI (no comm)

2
1
0

0

5

10

図７

15

20

25

30

35

No. of Processors

No. of Processors

VPP5000 による MPI と HPF/JA で書かれた３次元 MHD コードの計算処理速度の比較、格子点数は(nx,ny,nz)=(500,318,318)。

Computer Processing Capability in the MPI by Using HPC2500(nx,ny,nz)=(250,158,158)
Computation Speed per Processor(Gflops/processor)

Computation Speed (Gflops)

40
35
30
25
20
15
10
sendrecv
no comm

5
0

0

10

20

30

40

1
0.8
0.6
0.4
0.2
0

50

No. of Processors

図８

1.2

sendrecv
no comm

0

10

20

30

40

50

No. of Processors

HPC2500 による MPI の MHD コードの計算処理速度、格子点数は(nx,ny,nz)=(250,158,158)。

12

Computer Processing Capability in the MPI by Using HPC2500(nx,ny,nz)=(500,318,318)
Computation Speed per Processor(Gflops/processor)

Computation Speed (Gflops)

50
45
40
35
30
25
20

sendrecv
no comm

15
10
5
0

0

10

20

30

40

50

1.2
1
0.8
0.6
sendrecv
no comm

0.4
0.2
0

0

10

20

30

40

50

No. of Processors

No. of Processors

図９

1.4

HPC2500 による MPI の MHD コードの計算処理速度、格子点数は(nx,ny,nz)=(500,318,318)。

PRIMEPOWER HPC2500 で、33cpu 以上では並列計算の顕著な劣化がみられた。これは、33cpu 以上ではデータ転送に高速光インターコネクト（4GB/sec）を用いずに、GbE を使用しているため(‑ldt 0)であり、センターシステムのハード的制限による。このように、これまでの PRIMEPOWER HPC2500（ngrd）のテス
トでは 33cpu 以上の高効率並列計算は実現できなかった。また、24cpu 使用時のコンパイルオプションの違いによるハードバリアとソフトバリア利用の計算速度は、それぞれ 21.82 Gflops と 20.27 Gflops
であり、そのハードバリアとソフトバリアの差は約 7.1%であった。HPC2500 は 1 ノード当たり最大 128cpuの構成であるから、128cpu でどこまで高速計算ができるか、更に 10 ノード（128cpu/node）1280cpu でどうか、最大の関心事である。
今後、富士通のベクトル並列機 VPP5000 はスカラ並列機 PRIMEPOWER HPC2500 に更新されることになろう。ベクトル並列機で高効率であったプログラムがスカラ並列機でも高効率が保証されるのか、特に大規模計算では見通しが立たない。ベクトル並列機とスカラ並列機は根本的に異なる。例えば、ベクトル並列機では最内の do loop でベクトル化して、最外の do loop で並列化するのが基本であった。従って、計算効率を上げるためには最内の do loop は長い方が望ましかった。しかし、スカラ並列機はキャッシ
ュのヒットが高速計算に不可欠となる。１次キャッシュと２次キャッシュのヒット、largepage の機能
で高速計算を保証している。従って、計算に関与する変数の番地はあまり離れていないことが望ましいことになる。大規模コードではこれは深刻な問題となる。３次元 MHD コードの配列の順序を
f(nx2,ny2,nz2,nb)から F(nb,nx2,ny2,nz2)に変更しているのは、まさにその問題解決のためである。cpu数が 1000 個以上になってもそれだけで高速計算が実現できるのか、大変疑問である。やはり、大規模シミュレーション MHD コードで高効率並列計算を実現するためには、キャッシュの利用を考慮した、ス
カラ並列機用の新しい３次元 MHD コードを新たに作らなければならないのだろうか？その一つの解は、プログラムを変えなくても２次元目をスレッド並列（自動並列、あるいは OpenMP を使用したノード内
並列）、３次元目をプロセス並列（MPI）で並列化すれば高速計算が可能であろうと富士通 SE からコメントがあった。大変興味のある今後の課題である。また、３次元領域分割を基本にする新しい３次元 MHD
コードの開発はもう一つの解であろうと思われる。

13

2D and 3D MHD Simulation
1010

3D MHD2D MHDADENART

○ ●
△ ▲
×

109

4 times/ 3 yearsor
10 times/ 5years

2048*1024* 1024○
1502*1002*1120 ○
2240*560*1120 ○○○1002* 1002 *1120 1024*1024* 1024
1002*502*1120 ○△
1340*448*896

2D and 3D MHD Simulation●

802*202*672 ○108
Total Grid Number, Ng○

402*202*202 ○107

482*162* 162
○
△

○
△

502*202*102

212*142*72○
182*122*62○

106

○

○

○
○

○
○

○
○

○
○

△

322*82*82

152*102*52
182*62*62

●

×
×

●

62*32*32 ○ ○

●
○
△

104

○
●

○

26*26 *18

▲

○

▲
▲

▲

●
●

△●

☆

●
●

×

▲

●
▲

◇

◇

＋
◇
＋

◇ ◇

＋
＋

□
△

10-1

＋
＋

×

▲

E
56P

◇

◇

×
×

△

※

■

★
▲

▲

100

◇

◇ ◇
◇
◇

＋

▲
＊
◆
×

○

2
51 ○
4
102

PE
64

◇
◇◇

▲

▲

1980

1985

1990

1995

2000

10-2
104

2005

105

106
107
108
Total Grid Number, Ng

Year

図１０

ES

◇

●

△

▲

103
1975

△◎
○
○
△
○

101

▲

18*1 8*12
○ ○

○

E
16P E
32P

322*82*162○

160*60*70○

162*42*52 ○ ○△94*53*53 ●

105

○

○

CRAY -YMP-864

◆

102

○

CPU Time (seconds)

302*102*102□■
SX-3/14
CRAY -C90(8 cpu), 2LW◎ Convex C3840(4cpu)☆ VPP-500, MLF(1PE)★ SGI Origin 2000(8cpu) ＋ VPP-500, MLF(16PE)※ CRAY -1◇ VPP-5000,MLF

ADENART, 2D△ VP-200, 2LW○ VP-200, MLF
× VP-2600, MLF

642*162*322 ○S3800/480＊▲○

802*202*402○

ADENART

総格子点数でみた２次元と３次元 MHD
シミュレーションの年毎の発展、総格子点数は３年で４倍あるいは

図１１

109

1010

1011

MHD シミュレーションの総格子点数に対する１回の時間ステップを進めるために必要とする計算時間。

５年で１０倍に増加。

3D MHD Simulation

2D and 3D MHD Simulation○

ADENART,3D, 7x64Ng▲ ADENART, 2D, 4x64Ng

☆

64N
g

1010
☆

109
● ● ▲▲
▲

●

8

10

●

●

▲

▲

▲

VP-200, MLF, 3D, 2x32Ng△

VP-200, 2LW, 3D, 1x32Ng■

CRAY-C90, 2LW, 3D, 1x64Ng

×

VP-2600, MLF, 3D, 2x32Ng☆

VPP-500, MLF, 3D, 2x32Ng
VPP-5000, MLF, 3D, 2x32Ng

○

○ △
■
○
×
△

◇ 3◇ 3

◇3

◇2◇ 2

◇2

10

2

◇ 1◇1

◇1

＋

＋

◇3

◇3

◇2

◇2

◇1

＋

■
×

100

△

△

10

★

×◆
＊
⑥
●

⑤
①□
②△

-1

△

◎

③④
※

105

106
107
108
Total Grid Number, Ng

109

1010

10-2
104

1011

図１２ MHD シミュレーションの総格子点数に対する必要な計算機メモリの総容量。

７．

△

101

■

△

107

106 4
10

○

◇

ES

ADENART
VP-200× VP-2600, MLF＊ S3800◆ SX-3◎ Convex C3840(4cpu)★ SGI Origin 2000(8cpu)※ CRAY-1□ CRAY-YMP -864
■ CRAY Y -MP C90(8cpu)＋ VPP-500, MLF(16PE)◇ 1 VPP-5000,MLF(16PE)◇ 2 VPP-5000,MLF(32PE)◇ 3 VPP-5000,MLF(56PE)① DEC Alpha(500MHz)② SGI Octane, Origin2000③ Sun S-7/7000U④ VP100⑤ SX-2⑥ S810●103

Computer Capability ( Gflops)

25 448
6N Ng
g

◇

160
Ng

1011

◇
◇
◇

○

○

●

32
Ng

Computer Memory (Bytes)

1012

図１３

105

106
107
108
Total Grid Number, Ng

109

1010

MHD シミュレーションの総格子点数に対するコンピュータの絶対処理能力の比較。

地球磁気圏の３次元グローバル MHD シミュレーションの将来

太陽風と地球磁気圏相互作用のグローバル MHD シミュレーションを約 25 年間行ってきたが、その推移をまとめ、実際のシミュレーション実行のデータを基にして将来を展望してみる。先ず、各年度でどのくらいの２次元と３次元の総格子点数を用いた MHD シミュレーションを実行することができたかを示したのが図１０である。1982 年から CRAY‑1 を用いた地球磁気圏の３次元グローバル MHD シミュレーショ
14

ンに着手し、 使用格子点数は、62*32*32、50*50*26 と増大したが、CRAY‑1 では主メモリの大きさ （1MW）
が制限であった。その後、国産のベクトル機が開発されて、Fujitsu VP‑100, VP‑200 及び VP‑2600 の使用によって 100 の３乗を越す３次元 MHD シミュレーションを行うことができるようになった。更に 1995
年からベクトル並列機 VPP500 が、そして 2000 年に VPP5000 が使用できるようになり、1000 の３乗の格子点数を用いた３次元 MHD シミュレーションも現実のものとなった。利用できる総格子点数からみた MHD
シミュレーションの年毎の発展拡大の傾向をみると、この 25 年間破線で示すように、３年で平均して４倍あるいは５年で１０倍の割合で増大している。
図１１に MHD シミュレーションを実行する場合、時間ステップを１回だけ進めるのに必要とする計算時間を、図１２に MHD シミュレーションで用いる総格子点数に対する計算機メモリの必要総容量を示す。
Earth Simulator(ES)で 512cpu と 1024cpu を使用した場合の計算時間も示してある。計算機の種類と計算方法にも依存するが、通常総格子点数に比例して計算時間は長くなり必要計算機メモリも増大する。
地球磁気圏の MHD シミュレーションでは、数千回から数万回の時間ステップを繰り返し計算するので、１回の時間ステップを進めるのに必要とする cpu time は大体 10 秒以下でないと実用にならない。こうして、計算機の計算速度から使用できる３次元格子点数の大きさが決まり、同時に、その３次元格子点数を用いた時の３次元 MHD プログラムサイズが計算機主メモリに収まる必要がある。
MHD モデルでは、密度、速度３成分、圧力、磁場３成分の８成分の時間発展を解くので、総格子点数をNg とした時独立な変数は８Ng で、容量は単精度で 32Ng Bytes になる。MHD モデルの必要不可欠の変数
量は 2 step Lax‑Wendrotf 法（2LW）を用いた場合 32Ng Bytes が、Modified Leap‑Frog 法（MLF）を用いた場合、２つの時刻の変数を同時に保持するために 64Ng Bytes が必要となる。多種類のベクトル機で実行していた 3 次元 MHD コード(2LW, MLF)では、作業変数を徹底的に減らした結果、プログラムサイズは必要不可欠な変数量の 1.3 倍以内に収まっていたが、並列機になって作業変数を減らすことはほとんど不可能になり、プログラムサイズがかなり増大した。しかし、VPP500 や VPP5000 ではその増加の割合も、MLF 法使用の場合で必要不可欠の変数量の約 2.5 倍(160Ng=2.5*64Ng) に収まっている。こうした総格子点数に対する計算速度と必要計算機メモリの関係を調べておくと、新しい研究テーマを設定する
際、どれだけ大きな 3 次元 MHD シミュレーションを実行することができるか、そして将来の見通しはど
うかをかなり正確に予測できる。
MHD シミュレーションで用いる総格子点数に対する種々の計算機による絶対処理能力の比較をまとめたものを図１３に示す。ベクトル機からベクトル並列機への移行で計算機の処理能力は飛躍的に高くなり、最近の高性能のワークステーションやパーソナルコンピュータは、一昔前のスーパーコンピュータの計
算速度（0.3 Gflops 程度）に達している。しかし、最大級のスーパーコンピュータは常にそれらの約千倍の高速計算処理能力を有している。多数の 3 次元格子点を用いた大容量シミュレーションでは、メモリ不足や RISC 計算機での cache 不足などによって、更に決定的な差が生じる。フルベクトル化／フル並列化されたプログラムを用いて、VPP5000 等のスーパーコンピュータで 100 時間かかる 3 次元 MHD シ
ミュレーションは、スーパーコンピュータ以外の通常のワークステーションやパーソナルコンピュータで実行することは全く不可能である。地球磁気圏の 3 次元グローバル MHD シミュレーションなどの大型コンピュータシミュレーションを実行するためには、最大級のスーパーコンピュータの利用は常に必須

15

の条件と言える。現在までの最大計算速度は VPP5000(64cpu)で 441 Mflops、Earth Simulator(ES,1024cpu)で 7.1 Tflops が得られている。
８．

おわりに

名古屋大学情報連携基盤センターにグリッドシステムとして導入された PRIMEPOWER HPC2500(ngrd)の性能評価を、MPI で書かれた地球磁気圏の３次元 MHD シミュレーションコードを用いて行った。ベクトル
並列機 VPP5000 から、クラスタ型スカラ並列機 PRIMEPOWER への移行であったために、計算効率を上げるためにいくつかの困難に直面したが、32cpu までの利用ではスケーラビィティもかなりよく、グリッ
ド数（nx,ny,nz）=(500,318,318)を用いた場合、2cpu で 21%(=0.116/5.2)の実行効率があり、更に 8cpu
で 8.4 Gflops、32cpu で 25.8 Gflops の計算速度を実現するまで改良できた。33cpu 以上ではセンターシステムのデータ転送におけるハード的制限のために高効率の計算は実現できなかった。ただし、今回はスレッド並列は用いずに、MPI によるプロセス並列ジョブの測定だけであった。
富士通のスーパーコンピュータもベクトル並列機 VPP5000 から、後継機種としてクラスタ型のスカラ並
列機 PRIMEPOWER HPC2500 に替わることになる。ベクトル並列機で高効率を実現していたプログラムがそれ相応の高効率並列計算をスカラ並列機でも実現できるのか。この問題が、多くの大規模シミュレー
ション研究者にとっての大きな関心事であろう。米国のほとんどの一般ユーザーのプログラムは、大規模のスカラ並列機（MPP）で高効率を実現できていないと言われている。気象の大規模シミュレーショ
ンコードでは、3‑7%の実行効率と言われているし、米国 DOE の全科学分野の大規模シミュレーションコ
ードでは、10%の実行効率の実現を目標としている。また、最近の米国 ASCI プロジェクトの中で、ノード内自動並列、ノード間利用者による並列化で高効率計算を実現するはずのものが、実際には高効率が実現できなので困っているとも聞いている。このように、大規模スカラ並列機での高効率並列計算はほとんど実現されたことがない、非常に困難な問題であり、新しい挑戦である。
富士通のスーパーコンピュータ PRIMEPOWER HPC2500 は、設計思想としてスレッド並列（自動並列、あるいは OpenMP を使用したノード内並列）とプロセス並列（ MPI 等を使用したノード間並列）との併用による並列ジョブの実行を想定していて、最大性能を引き出すにあたってはやはりその構成が望ましいと聞いている。そのような最適の並列化手法を駆使して、PRIMEPOWER HPC2500 で更に cpu 数を増やし Tflopsの実行速度が実現すること、最大規模の構成で Earth Simulator に負けない計算速度を実現することを強く期待している。
なお、本稿で使用した MPI や HPF/JA などで書かれた３次元 MHD コードの基本形とその説明、計算速度を測定したプログラムなどは次のホームページに載せている。
コンピュータシミュレーション

http://gedas.stelab.nagoya‑u.ac.jp/simulation/simulation̲j.html

16

科学研究費基盤研究（A）(1)「共通並列計算電磁流体・粒子コードによる太陽風磁気圏電離圏ダイナミックスの研究」

http://center.stelab.nagoya‑u.ac.jp/kaken/kakenhi.html
９．

謝辞

本稿の３次元 MHD コードの計算速度測定は名古屋大学情報連携基盤センターのスーパーコンピュータ、
Fujitsu VPP5000/64 と PRIMEPOWER HPC2500 (ngrd)を利用してなされたものです。また、VPP Fortranから HPF/JA と MPI への書き換えと PRIMEPOWER HPC2500 の利用で多くの助言を頂いた富士通株式会社のSE の方に、更に、MPI への原型の書き換えではお世話して頂いた国立極地研究所の岡田雅樹助手と日立製作所の SE の方に感謝いたします。

[参考文献][1] T. Ogino, A three‑dimensional MHD simulation of the interaction of the solar wind with theearth's magnetosphere: The generation of field‑aligned currents,
J. Geophys. Res., 91, 6791‑6806 (1986).
[2] T. Ogino, R.J. Walker and M. Ashour‑Abdalla, A global magnetohydrodynamic simulation of themagnetosheath and magnetopause when the interplanetary magnetic field is northward,
IEEE Transactions on Plasma Science, Vol.20, No.6, 817‑828 (1992).
[3] T. Ogino, Two‑Dimensional MHD Code, (in Computer Space Plasma Physics), Ed. by H.
Matsumoto and Y. Omura, Terra Scientific Publishing Company,
161‑215, 411‑467 (1993).
[4] T. Ogino, R.J. Walker and M. Ashour‑Abdalla, A global magnetohydrodynamic simulation of the
response of the magnetosphere to a northward turning of the interplanetary magnetic field,
J. Geophys. Res., Vol.99, No.A6, 11,027‑11,042 (1994).
[5] 荻野竜樹、「太陽風と磁気圏相互作用の電磁流体力学的シミュレーション」，
プラズマ・核融合学会誌，CD‑ROM 特別企画（解説論文）， Vol.75, No.5, CD‑ROM 20‑30, 1999.

http://gedas.stelab.nagoya‑u.ac.jp/simulation/mhd3d01/mhd3d.html[6] 荻野竜樹、「太陽風磁気圏相互作用の計算機シミュレーション」，
名古屋大学大型計算機センターニュース, Vol.28, No.4, 280‑291, 1997.
[7] 荻野竜樹、「コンピュータシミュレーションと可視化」，
愛媛大学総合情報処理センター広報， Vol.6, 4‑15, 1999.
http://gedas.stelab.nagoya‑u.ac.jp/simulation/simua/ehime985.html[8] 荻野竜樹，「VPP Fortran から HPF へ」，名古屋大学大型計算機センターニュース
372‑405, Vol.31, No.4, (2000).

http://gedas.stelab.nagoya‑u.ac.jp/simulation/hpfja/hpf013.html

17

解説,

[9] Ogino, T., Global MHD Simulation Code for the Earth's Magnetosphere Using HPF/JA,
Special Issues of Concurrency: Practice and Experience, 14, 631‑646, 2002.

http://gedas.stelab.nagoya‑u.ac.jp/simulation/hpfja/mhd00.html[10] 荻野竜樹，「地球磁気圏の MHD シミュレーションと可視化」，天体とスペースプラズマのシミレーションセミナー（流体・磁気流体コース、アドバンストコース、プラズマ粒子シミュレ
ーションコース）

講義テキスト，107‑136, (2003).

「並列３次元 MHD コードと３次元可視化」

http://center.stelab.nagoya‑u.ac.jp/kaken/mpi/mpi‑j.html[11] 津田知子、「新スーパーコンピュータ VPP5000/56 の利用について」、
名古屋大学大型計算機センターニュース、Vol.31, No.1, 18‑33, 2000.
[12] 津田知子、「MPI による並列化」、名古屋大学情報連携基盤センター

MPI 講習会資料、

2002 年 2 月[13] High Performance Fortran Forum, 「High Performance Fortran 2.0 公式マニュアル」、
Springer, 1999.
[14] 富士通株式会社、「HPF プログラミング〜並列プログラミング（HPF 編）

UXP/V 第 1.0 版、2000 年 6 月.
[15] 富士通株式会社、「VPP FORTRAN プログラミング」、UXP/V, UXP/M
第 1.2 版、1997 年 4 月.
[16] 富士通株式会社、「MPI プログラミング[17] 富士通株式会社、「MPI 使用手引き書〜Fortran, C〜」第 1.3 版、2001 年４月．
V20 用」、UXP/V 初版

1999 年 9 月[18] 青山幸也（日本アイ・ビーエム株式会社）、「並列プログラミング虎の巻

MPI 版」

虎の巻シリーズ２、2001 年 1 月．
[19] 株式会社日立製作所、「スーパーテクニカルサーバ SR8000 プログラム移植報告書」
国立極地研究所、2002 年 3 月．
[20] 名古屋大学情報連携基盤センター、「スーパーコンピュータ VPP5000 利用の手引き」
2002 年 4 月．
「VPP5000 利用の手引きの pdf ファイル」

http://nucc.cc.nagoya‑u.ac.jp/CENT/vpp̲tebiki.pdf「スーパーコンピュータ VPP5000/64 利用案内」の Homepage

http://www2.itc.nagoya‑u.ac.jp/sys̲riyou/vpp/vpptebiki.htm

18