Benchmark Test of MPI programs by PRIMEPOWER HPC2500


Benchmark Test of New Domain Decomposition 3-Dimensional MHD Code



領域分割3次元MHDコードのベンチマークテスト方法

                     2004年11月09日
                     名古屋大学太陽地球環境研究所
                     荻野竜樹

太陽風と地球磁気圏相互作用の3次元MHDシミュレーションコード(MPIで
書かれている)に於いて、ベクトル並列機用の1、2、3次元領域分割コードと
スカラー並列機用の3次元領域分割コードの4種類を作成しました。それらのコ
ードでは、入出力は全てコメントアウトしてあり、コンプリートコードの状態で
す。これらのベンチマーク用の3次元MHDコードは、Web 上に置いてあります。
どれも、テストですからcpu時間は数分程度です。

  (A) mearthd1dc2n.f 1次元領域分割 ベクトル並列機用 f(nx2,ny2,nz2,nb)
  (B) mearthd2dc2n.f 2次元領域分割 ベクトル並列機用 f(nx2,ny2,nz2,nb)
  (C) mearthd3dc2n.f 3次元領域分割 ベクトル並列機用 f(nx2,ny2,nz2,nb)
  (D) mearthd3dd2n.f  3次元領域分割 スカラー並列機用 f(nb,nx2,ny2,nz2)

(D) mearthd3dd2n.f の例でプログラム内容を具体的に説明しますと、

 npex=2  x方向の分割数
 npey=2  y方向の分割数
 npez=2  z方向の分割数
 npe=npex*npey*npez  cpuの数

として各方向の分割数とcpu数を定義しています。プログラムでは次の様に定義し
ています。

       parameter (npex=2,npey=2,npez=2)
       parameter (npe=npex*npey*npez,npexy=npex*npey)
c      parameter (nx=510,ny=254,nz=254,nxp=155)

x方向npex=2、y方向npey=2、z方向npez=2とそれぞれ領域分割した場合cpu数は
npe=npex*npey*npez=8となります。3次元分割の場合npex, npey, npezは全て2
以上でなくてはなりません。また、x方向、y方向、z方向の配列は境界を含め
ると、nx2=nx+2=512, ny2=ny+2=256, nz2=nz+2=256となって2のべき乗になって
います。

これらの分割数と配列の大きさ(nx=510,ny=254,nz=254)はメインプログラムとサ
ブルーチンの全てで合わせなければなりません。

 f(nb,nx2,ny2,nz2)=f(8,512,256,256)
       parameter (npex=2,npey=2,npez=2)  npe=   8 cpu's
       parameter (npex=2,npey=2,npez=4)  npe=  16 cpu's
       parameter (npex=2,npey=4,npez=4)  npe=  32 cpu's
       parameter (npex=4,npey=4,npez=4)  npe=  64 cpu's
       parameter (npex=4,npey=4,npez=8)  npe= 128 cpu's
       parameter (npex=4,npey=8,npez=8)  npe= 256 cpu's
       parameter (npex=8,npey=8,npez=8)  npe= 512 cpu's
       parameter (npex=8,npey=8,npez=16) npe=1024 cpu's

そこで、上記の様にcpu 数を大きくした時、4種類MHDコードがスカラー並列
機などのスーパーコンピュータでどの程度の効率を出せるかを知りたいと思って
います。機会があればベンチマークテストをお願いします。
(A) mearthd1dc2n.f、(B) mearthd2dc2n.f、(C) mearthd3dc2n.fの3つは2回毎
にcpu時間を、(D) mearthd3dd2n.fは8回毎にcpu時間を秒で計測します。
別表のcpu timeにあるのは1回毎のcpu時間を示します。


Fujitsu PRIMEPOWER2500 (ngrd1)でのコンパイルと実行は次のように行っていま
す。

mpifrt -Kfast_GP2=3,largepage=2 -O5 -Kprefetch=4,prefetch_cache_level=2,
prefetch_strong -Cpp -o progmpi mearthd3dd2n.f
mv progmpi ztest0008
qsub mpiex08b.sh

ngrd1% more mpiex08b.sh
#  @$-q gs  -eo -o  ztest0008.out
#  @$-lP 8 -lM 3.0gb -ls 128mb -lB 0 -lb 0
mpiexec -n 8 -mode limited ./mearthd5/ztest0008

----------------------------------------------------------------------------------
領域分割法による並列計算(2004年10月1日)

1、2、3次元領域分割法による地球磁気圏の並列計算の3次元MHDシミュ
レーションコードを作成した。ベクトル並列機用のプログラムは、従来と同じ
く配列の順序は
 f(x方向、y方向、z方向、成分)
で配列の第1変数を長く取れるように定義している。一方、スカラー並列機用
のプログラムは、キャッシュのヒット率を上げるために配列の順序は
 f(成分、x方向、y方向、z方向)
となり、計算に必要な変数がなるべく近くになるように配列の順序を変えてい
る。

gpcs%/vpp/home/usr6/a41456c/mearthd4
(A) mearthd1dc2n.f 1次元領域分割 ベクトル並列機用 f(nx2,ny2,nz2,nb)
(B) mearthd2dc2n.f 2次元領域分割 ベクトル並列機用 f(nx2,ny2,nz2,nb)
(C) mearthd3dc2n.f 3次元領域分割 ベクトル並列機用 f(nx2,ny2,nz2,nb)
(D) mearthd3dd2n.f 3次元領域分割 スカラー並列機用 f(nb,nx2,ny2,nz2)

多数のcpu(1000個程度)を利用したベクトル並列機では、(B)の2次元領域分
割が最も効率的であろうと予想している。一方、スカラー並列機では、(D)の
3次元領域分割が最も効率的であると予想される。


前のページに戻る