各種計算機基本性能調査

平成２４年度第１四半期
目次
1. SR16000/M1 システム
1.1 姫野ベンチ
1.2 重力多体問題（N体問題）
1.3 分子動力学計算
1.4 ループ積分
2. BG/Q システム
2.1 姫野ベンチ
2.2 重力多体問題（N体問題）
2.3 ループ積分性能評価用プログラムとして特徴のある３つのものを使用しています。これらは並列化が容易という共通点があります。

（１）姫野ベンチプログラム
演算は単精度,演算量はメモリ量に比例。
３次元領域サイズを2049*2049*1025とすると、メモリ容量は１９２GB,１点の計算を行う際、１６GB離れた領域を１０回参照します。SIMD命令は適用されます。
（２）重力多体問題（N体問題）
演算は倍精度、演算量はメモリ量の２乗に比例。
粒子数をNとすると、メモリ容量は１０４N バイト。
一般的なサイズはN=2＾15=32768から2^20=1048576でメモリサイズは3.328MBから104MBになります。
SIMD命令は適用されます。
（３）ループ積分
演算は４倍精度、演算量はメモリ量の積分次元数乗に比例。
二重指数関数型積分法で３次元積分の場合はテーブルサイズ
は,N=1024,2048,4096 でメモリ容量は32KB,64KB,128KBと非常に小さくて済みます。SIMD命令は適用されません。
これらのジョブから並列実行時には、領域分割が必要か否か
フラットMPIかMPIとSMPの組み合わせかメモリ配置の変更が必要か否か
SMTの数は幾つが良いか（１，２，４）を決める必要があります。

１． SR16000 モデルM1
SR16000/M1システムの複数ノードでの実行に関しての記述です。
１ノードの概略は以下の様になっています。
プロセッサ:power7
周波数:3.83GHz
CPUコア数 32(物理的),64(論理的)理論最大性能 980.48 GFLOPs
メモリ容量 256GB
メモリアーキテクチャー NUMA,(16論理コア単位でflat)
SIMD(Single Instruction Multiple Data)をサポートするVSX機構付き
L3キャッシュ On-Chip 32MB/8コア演算器/物理コア 乗加算器４つ

1.1 姫野ベンチ
姫野ベンチは演算精度は単精度で核の部分は以下の様になっていて、SIMD命令は適用されます。
DO K=2,kmax-1
DO J=2,jmax-1
DO I=2,imax-1
S0=a(I,J,K,1)*p(I+1,J,K)+a(I,J,K,2)*p(I,J+1,K)
1+a(I,J,K,3)*p(I,J,K+1)
2+b(I,J,K,1)*(p(I+1,J+1,K)-p(I+1,J-1,K)
3-p(I-1,J+1,K)+p(I-1,J-1,K))
4+b(I,J,K,2)*(p(I,J+1,K+1)-p(I,J-1,K+1)5-p(I,J+1,K-1)+p(I,J-1,K-1))
6+b(I,J,K,3)*(p(I+1,J,K+1)-p(I-1,J,K+1)7-p(I+1,J,K-1)+p(I-1,J,K-1))
8+c(I,J,K,1)*p(I-1,J,K)+c(I,J,K,2)*p(I,J-1,K)
9+c(I,J,K,3)*p(I,J,K-1)+wrk1(I,J,K)
SS=(S0*a(I,J,K,4)-p(I,J,K))*bnd(I,J,K)
WGOSA=WGOSA+SS*SS
wrk2(I,J,K)=p(I,J,K)+OMEGA *SS
enddo
enddo
enddo

ここで配列a,b,cのメモリアクセスで非常に離れた領域を参照する事になります。

もとの配列は以下の様に定められています。
CC Arraydimension p(mimax,mjmax,mkmax)
dimension a(mimax,mjmax,mkmax,4),>b(mimax,mjmax,mkmax,3),c(mimax,mjmax,mkmax,3)dimension bnd(mimax,mjmax,mkmax)
dimension wrk1(mimax,mjmax,mkmax),>wrk2(mimax,mjmax,mkmax)

これを,A,b,c をまとめて配列aとして、以下の様にメモリ配置を変更すると、連続領域を参照する様になります。この場合にはSIMD命例は適用されなくなります。

CC Arraydimension p(mimax,mjmax,mkmax)
dimension a(10,mimax,mjmax,mkmax)
dimension bnd(mimax,mjmax,mkmax)
dimension wrk1(mimax,mjmax,mkmax),>wrk2(mimax,mjmax,mkmax)

ソースプログラムの名称は最初の場合をori,後者の場合をTune と表しています。

計算領域サイズを２０４９＊２０４９＊１０２５とすると、所要メモリ容量は１９２GBとなるので、複数ノード、領域分割をして実行しました。並列化はフラットMPIを使用しています。
ソース
orituneorituneorituneoritune

MPI数

ノード数
512512256256256256128128GFLOPs
8269
8967
81668850
41354439
4874439

すべてのケースで配列の再配置の効果がでています。
８ノードでフラットMPIとSMP＊MPIのハイブリッドの比較は以下の様になりました。
ソース
orituneorituneorituneoritune

MPI数

SMP数
512512256256
8888GFLOPs
12691967
1166
18506422764560
3214632556

フラットMPIがハイブリッドより効果があります。1.2 重力多体問題（N体問題）

重力多体問題はmj Fi  Gmi  3 rij
j  i rij rij | ri  rj |G : 万有引力定数, mi : 粒子iの質量ri : 粒子iの位置, Fi : 粒子iにかかる力で計算します。
演算精度は倍精度でSIMD命令が適用されます。
演算量は粒子数Nの二乗に比例します。

４ノードでフラットMPIでSMT ON、SMT OFFの場合の結果です。
演算量がN=2**nの二乗に比例しますので、実行時間はlog2スケールで表しています。タイムステップ数は100です。
Log2(実行時間（秒））14710312177810446

8113smt on

6smt off

284720151617181920n

粒子数N=2**n

SMT ON,OFF での実行時間に有意差は見られません。

また、フラットMPIとハイブリッドの差をN=2**18,2**20で調べた結果は以下の様になりました。

サイズ2**n smp数
task数
ノード数 実行時間（秒）2012568359920151283612
2032883603
2064883604
2083283593
2086483607
サイズ2**n smp数
task数
ノード数 実行時間（秒）1812568224
1815128231
183288222186488228
188328222
188648223

フラットMPIとハイブリッドでも実行時間に有意差は見られません。

1.3 分子動力学計算

分子動力学計算は以下の２つの計算からなり、クーロン力計算は重力多体問題と同様の計算となりますが、異なる計算として、ワンデルワールス力計算があります。逆に二乗則と逆六乗則の差により、演算する範囲が異なり、演算量も単純に粒子数の何乗に比例するとは言えません。
演算精度は倍精度でSIMD命令は一部適用されます。
qj  qi
クーロン力 Fi rr
|riji  rj |3 ij
4 0 j i rij
qi : 電荷量,  0 : 真空の誘電率
ワンデルワールス力
分子間に働く分散力で、等方向性で原子間距離の６乗に反比例する力 a bF k 6r

 : 分極率

SR16000/M1 複数ノードでの実行時間は以下の様になっています。
実行はフラットMPIを使用しています。所要メモリはそれぞれ、11.8MB,28.0MB,54.7MBとなっています。
実行時間（単位秒）
N=48MPI数
ノード数
VdWCoulomb
全体128
4
1.81984.44435
6.26732256
42.52998
8.61865
11.15244
256
81.71889
2.66658
4.3885951283.35877
3.98576
7.34833
N=64MPI数
ノード数
VdW
Coulomb
全体
1284 12.54277
63.21624
75.76465
256
4 16.55753
97.01006 113.57417
25688.77493
35.4702244.25077512
8 20.90441
63.69971
84.61077
N=80MPI数
ノード数
VdW
Coulomb
全体
128
4 44.93113 412.63567 457.57689
256
4 63.25216 362.52039 425.78437
2568 33.06468 259.85763 292.93251
512
8 91.30541 281.84471 373.16153

粒子の数はn=N**3 で演算量はCoulmb(クーロン力)はn(n-1)/2に比例,VdW(ファンデルワールス力)はn(n-1)/2/近傍にある粒子の数に比例します。
VdWではすべてのケースでSMT OFF の効果があり、クーロン力
はN=80,4node ではSMT ONがそれ以外はSMT OFFが効果があります。これは転送量がMPI数に比例するため、演算量との比でSMT ON,OFFの効果が異なる様になります。

1. 4 ループ積分
測定したループ積分の積分式,解析近似解は以下の様なものです。
演算精度は４倍精度でSIMD命令は適用されません。
1 1 x 1 x  y

1I     2 dzdydx
0 0 0 D式

D  sxy  tz (1  x  y  z )  ( x  y)2  (1  x  y  z )(1  x  y)me z (1  x  y)m f

2s  500 2 , t  150 2 , m f  150,
me  0.0005,   10 30
解析近似解(t  m f ) 22I

21
sln() ln
2222 s(t  m f ) me m f

相対誤差7 1026 以下

データ

１ノードでサイズN=1024,2048,4096での実行結果です。
ここでは、SMT数＝SMP数/32と記しています。
N=1024smp数

ｓｍｔ数

実行時間（秒）1
4.036747
22.396178
33.429908
43.842133

ｓｍｔ数

実行時間（秒）132.350153
219.282983
326.350305
427.733024

ｓｍｔ数

実行時間（秒）
1256.204864
2153.281336
3205.601229
4195.04127

326496128N=2048
smp数
326496128
N=4096smp数
326496128

演算が４倍精度のため、SIMD命令が適用されないので、SMP数＝６４、SMT数＝２（SMT ON)の場合がもっとも高速になります。

複数ノード,フラットMPIでのN=1024,2048,4096の場合の実行時間は以下の様になりました。
N=1024
MPI数

ノード数

実行時間
(秒）
4
1.00925140.60237
80.50608
80.302202

ノード数

実行時間
(秒）
4
8.069988
44.787942
84.047229
82.394252

ノード数

実行時間
(秒）
464.550396
438.031384
832.274641
819.017973

128
256256512
N=2048
MPI数
128256256
512
N=4096
MPI数
128256256512

演算量がNの三乗に比例する事と、SMT ONの効果がでる事がはっきりとでています。

２ BG/Q システム
使用していますBG/Q システムの概略は以下の様になっています。

周波数 1.6GHz
1 ノード 16core 論理性能 204.8GFLOPs
L1 キャシュ
16/16KB (Core)
L2 32MB (node)
Main storage 16GB (Core)
Smt=1,2,4

実行クラス
32 node 6553.6 GFLOPs
128 node 26214.4 GFLOPs
256 node 52428.8 GFLOPs
512 node 1048576.6 GFLOPs
あり、今回は32 node を中心にした測定結果をしめします。

２．１ 姫野ベンチ

領域サイズ2049*2049*1025 で所要メモリは１９２GB、１要素の演算中１６GB離れた領域を１０回アクセスします。

SMT数と配列のメモリ再配置の効果の関係の調査結果は以下の様になりました。

３次元分割 ソース
32*16*16 ori
32*16*16 tune
16*16*16 ori
16*16*16 tune
16*16*8 ori
16*16*8 tune

MPI数 ノード数 SMT数 GFLOPs
8192
128
49758192128
4
1,0654096
12826954096
1282
1,1352048
128
18422048128
1811

１ノード当たりの所要メモリは１．５GB、１スレッドあたり128MPI で２MB,4096MPI で４MB,2048MPIで８MB離れた領域をアクセスします。配列のメモリ再配置の影響はSMT=2が最も大きく,SMT=1ではもとの配列のメモリ配置のほうが良い数値となっています。これは、もとの配列のメモリ配置ではSIMD命令が適用され、配列のメモリ再配置だとSIMD命令が適用されない事とL2キャシュ２MBである影響によるものです。
総合的にみると、SMT数が４の場合がもっとも高速といえます。

さらにノード数を増やし、SMT=4の場合の結果は以下の様になりました。

３次元分割 ソース MPI数 ノード数 SMT数 GFLOPs
32*32*32 ori
32768 512
4 4,163
32*32*32 tune
32768 512
4 5,038
16*32*32 ori
16384 512
2 2,139
16*32*32 tune
16384 512
2 4,462
所要メモリは１ノード当たり384MB,MPI数32768で0.5MB,MPI数
16384で1MB離れた領域をアクセスするため、L2 ２MBより配列のメモり再配置の効果の様子が大きく変わっています。

２．２ 重力多体問題（N体問題）
領域分割をせずに並列実行する場合、粒子数N=2**15=32768からN=2**20=1048576 とすると1スレッド当たりの所要メモリ量が3.328MBから104MBため、SMPとMPIのハイブリッド方式がフラットMPIより効果がでます。演算量がNの二乗に比例するため、実行時間の軸はlog2を取っています。実行結果は以下の様になりました。タイムステップ数は１００です。

Log2(実行時間(秒))122179101922595482

184

8121

58621.1

フラットMPI
ハイブリッド

314
7.9

6.1

2

2.1

01516171819

粒子数N=2**n20n

２．３ ループ積分
１ノードでサイズN=1024,2048,4096での実行結果です。
ここでは、SMT数＝SMP数/16となります。
N=1024smp数

ｓｍｔ数

実行時間（秒）1
31.759181
217.368297
312.878649
411.529416

ｓｍｔ数

実行時間（秒）
1254.202281
2138.318369
3101.279492
491.819282

ｓｍｔ数

実行時間（秒）
12032.887439
21106.144559
3808.601665
4734.234379

16
32
4864
N=2048smp数16324864
N=4096smp数
16324864

演算が４倍精度のため、SIMD命令が適用されないので、SMP数＝６４、SMT数＝４の場合がもっとも高速になります。

複数ノード,フラットMPIでのN=1024,2048,4096の場合の実行時間は以下の様になりました。
N=1024
MPI数

ノード数

実行時間
(秒）
32
0.524877

ノード数

実行時間
(秒）
32
7.923729
32
4.212413
32
2.838767

ノード数

実行時間
(秒）
32
84.754495
32
44.105198
32
28.051443

1024
N=2048
MPI数
512
1024
2048
N=4096
MPI数
512
1024
2048

演算量がNの三乗に比例していますが、所要メモリは１ノード当たり、N=1024で１MB,N=2048で2MB,N=4096で４MBとなり、N=2048とN=4096では演算量比以上の実行時間比となっています。