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シミュレーションコードのベンチマークテストを実行した
結果をまとめました。スカラー並列機用に新たに開発した3次元領域分割MHD
コード(D) は、期待通りの高速計算を実現しています。また、cpu 数を増加した
場合のベクトル並列機では2次元領域分割(B) が最大計算効率を発揮できると言
えそうです。

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

表1は、上記の4つのコードを4種類の計算機で実行した時、1cpu当たりの
計算速度(GF/PE)を示しています。(A)、(B)、(C)は予想通りベクトル並列機で高
効率の結果が出ている一方、スカラー並列機のHPC2500ではかなり効率が悪い。
特に、(A)では最も計算速度が遅くなっています。これは、配列が大きいために
キャッシュがヒットしなくなるためと考えられます。反対に、(D)では、キャッ
シュのヒット率が上がって、HPC2500で1.4 GF/PE以上と高効率並列計算が実現で
きています。

表2は、表1と同じ4つのコードをグリッド数を(nx,ny,nz)=(510,510,510)に増
やしてNEC ESで走らせた結果を示しています。ESでもメモリの大きさの関係で64
cpu 以上でないと動きませんでした。 512 cpuで見ると(B) の2次元領域分割が
最も計算速度が速くなっているのが分かります。また、(B) は表1のグリッド数
(nx,ny,nz)=(510,254,254)の場合で見ても512 cpu までスケーラビリティが最も
よく出ているのがわかります。即ち、予想したように、(B) はx方向にベクトル
化をして、y,z方向の2次元で領域分割しているので通信量も少なくなるので、
ベクトル並列機でcpu 数を増加させた場合最も効率的な並列化コードになること
を示しています。

表3はMHDコードではなくて、3次元の波動方程式を解いた線形のコードです
が、プログラムの構造はMHDコードと同じ形を持っています。これは、前に北
村さんからもらった結果のまとめの改訂です。ratio-1 は8cpuを基準に取った時
の相対計算速度の比を取っています。数値が大きいほど計算効率が高いことを示
しています。ratio-2はHPC2500の8cpuでgrid number( 126, 126, 126)を基準に
取った時の相対計算速度の比を取っています。ratio-2で見て分かることは、cpu
数を256まで増加させた時でも、配列を(1022,1022,1022)に増加させた時でも、
並列化の効率劣化は全く見られないということと、むしろ計算効率が上がってい
るのを確認できます。計算効率が上がるのは、通信は隣り合うcpu との間で行う
のみであるから、cpu 数が増加しても通信量は一定値以上には増加せず頭打ちに
なることを示唆しているように思えます。

(D) mearthd3dd2n.fの3次元MHDコードもmwave611.fと全く同じプログラムの
形をもっています。従って、(D) mearthd3dd2n.fはHPC2500の多数のcpuで実行し
ても高効率が期待できると思っています。Table 1では実際16cpuまでかなりの高
い計算速度が得られています。その速度1.416GF/cpuは、(A)と同等のコードを
1 cpuで実行した時(約1.2-1.3GF/cpu)よりも高速化が得られています。こうし
て、(D) mearthd3dd2n.fはスカラー並列機HPC2500等で最も効率的に計算できる
3次元MHDコードになると想像しています。

平成16年11月09日
名古屋大学太陽地球環境研究所
荻野竜樹
ogino@stelab.nagoya-u.ac.jp

----------------------------------------------------------------------
Table 1. Computer Processing Capability by 3D MHD Code
         for (nx,ny,nz)=(510,254,254)     (Gflops/cpu)
----------------------------------------------------------------------
                              CPU     VPP5000  PRIMEPOWER  NEC SX6  NEC ES
                              Number           HPC2500
                                      (GF/PE)  (ngrd1)    (GF/PE)  (GF/PE)
----------------------------------------------------------------------
(A) mearthd1dc2n.f              2      7.08     -----      6.36      6.66
 1D Domain Decomposition        4      7.02     0.031      5.83      6.60
 by f(nx2,ny2,nz2,nb)           8      6.45     0.030      5.51      6.50
                               16      6.18     0.028      5.44      6.49
                               32                                    6.39
                               64                                    6.37

(B) mearthd2dc2n.f              4      7.51     0.199      6.34      6.63
 2D Domain Decomposition        8      6.88     0.191      6.28      6.47  
 by f(nx2,ny2,nz2,nb)          16      6.49     0.200      6.23      6.45
                               32                                    6.47
                               64                                    6.32
                              512                                    5.62
                           
(C) mearthd3dc2n.f              8      7.14     0.207      6.24      6.38
 3D Domain Decomposition       16      6.77     0.202      6.34      6.33
 by f(nx2,ny2,nz2,nb)          32                                    6.25
                               64                                    5.61
                              512                                    3.94
                           
(D) mearthd3dd2n.f              8      2.91     1.438      1.13      4.11
 3D Domain Decomposition       16      2.63     1.416      4.53      4.06
 by f(nb,nx2,ny2,nz2)          32                                    4.11
                               64                                    4.17
                              512                                    3.70
----------------------------------------------------------------------
----------------------------------------------------------------------
Table 2. Computer Processing Capability by 3D MHD Code
         for (nx,ny,nz)=(510,510,510)     (Gflops/cpu)
----------------------------------------------------------------------
                              CPU     VPP5000  PRIMEPOWER  NEC SX6  NEC ES
                              Number           HPC2500
                                      (GF/PE)  (ngrd1)    (GF/PE)  (GF/PE)
----------------------------------------------------------------------
(A) 1D Domain Decomposition    64      -----    -----     -----      6.30
    by f(nx2,ny2,nz2,nb) 

(B) 2D Domain Decomposition    64      -----    -----     -----      6.46
    by f(nx2,ny2,nz2,nb)      512                                    6.22

(C) 3D Domain Decomposition    64      -----    -----     -----      5.58
    by f(nx2,ny2,nz2,nb)      512                                    4.12

(D) 3D Domain Decomposition    64      -----    -----     -----      4.21
    by f(nb,nx2,ny2,nz2)      512                                    3.78
----------------------------------------------------------------------
------------------------------------------------------------------------------------
Table 3. CPU time of 8 step advances in simulation code for 3D wave equation, 
  mwave601.f (126,126,126) 1D Domain Decomposition
  mwave611.f (126,126,126) 3D Domain Decomposition
  
  PRIMEPOWER HPC2500 (SPARC64 V 1.56GHz X 128) × 4筐体
  Parallelnavi2.3
  Solaris Ver.8

  コンパイラーオプション:
  -Kfast_GP2=3,laragepage=2 -O5 -Kprefetch=4,prefetch_cache_level=2,
  prefetch_strong -Cpp
  + -KV9 for grid number of (1022,1022,1022)
  
  ノード設定:
   8CPU〜64CPU 1ノード(127CPUまで使用可)
   128CPU     2ノード(64CPU*2)
   256CPU     8ノード(32CPU*8)

computer  node    number     mwave601.f    mwave611.f   grid number       ratio-1 ratio-2
ngrd1              8cpu      2.40222(s)    0.44976(s)   ( 126, 126, 126)  0.9284
ngrd1             16cpu      1.23224(s)    0.22249(s)   ( 126, 126, 126)  0.9384
ngrd1             32cpu      0.67273(s)    0.11144(s)   ( 126, 126, 126)  0.9367

HPC2500      1     8cpu      1.93585       0.41756      ( 126, 126, 126)  1.0000  1.0000
HPC2500      1    16cpu      1.03095       0.21870      ( 126, 126, 126)  0.9546
HPC2500      1    32cpu      0.61046       0.11134      ( 126, 126, 126)  0.9376
HPC2500      1    64cpu                    0.04028      ( 126, 126, 126)  1.2958
HPC2500      2   128cpu                    0.02490      ( 126, 126, 126)  1.0481
HPC2500      8   256cpu                    0.01176      ( 126, 126, 126)  1.1096

HPC2500      1     8cpu    191.28384       2.85172      ( 254, 254, 254)  1.0000  1.1714
HPC2500      1    16cpu     98.17854       1.64795      ( 254, 254, 254)  0.8652  1.0135
HPC2500      1    32cpu     51.53204       0.85513      ( 254, 254, 254)  0.8337  0.9766
HPC2500      1    64cpu     29.37091       0.40170      ( 254, 254, 254)  0.8874  1.0395
HPC2500      2   128cpu                    0.23528      ( 254, 254, 254)  0.7575  0.8873
HPC2500      8   256cpu                    0.10433      ( 254, 254, 254)  0.8542  1.0006

HPC2500      1     8cpu   1656.47640      22.13068      ( 510, 510, 510)  1.0000  1.2075
HPC2500      1    16cpu    853.39174      10.79360      ( 510, 510, 510)  1.0252  1.2380
HPC2500      1    32cpu    456.50143       5.71031      ( 510, 510, 510)  0.9689  1.1700
HPC2500      1    64cpu    273.57107       3.14025      ( 510, 510, 510)  0.8809  1.0637
HPC2500      2   128cpu                    1.77276      ( 510, 510, 510)  0.7802  0.9421
HPC2500      8   256cpu                    0.78852      ( 510, 510, 510)  0.8771  1.0591

HPC2500      1     8cpu                  186.24975      (1022,1022,1022)  1.0000  1.1479
HPC2500      1    16cpu                   82.38303      (1022,1022,1022)  1.1304  1.2976
HPC2500      1    32cpu                   44.09687      (1022,1022,1022)  1.0559  1.2120
HPC2500      1    64cpu   2495.20300      27.04602      (1022,1022,1022)  0.7608  0.8733
HPC2500      2   128cpu                   12.20572      (1022,1022,1022)  0.9537  1.0947
HPC2500      8   256cpu                    5.40574      (1022,1022,1022)  1.0767  1.2359

VPP5000            4cpu      0.30021(s)                 ( 126, 126, 126)
VPP5000            8cpu      0.21667(s)    0.14309(s)   ( 126, 126, 126)          2.9195
VPP5000           16cpu      0.08808(s)    0.11995(s)   ( 126, 126, 126)          1.7406
------------------------------------------------------------------------------------


前のページに戻る