各種計算機基本性能調査

平成２6度第2四半期
目次
1.はじめに2.性能評価問題の演算量
2.1 ３次元反復法計算
2.1.1 対称行列計算
2.1.2 非対称行列計算
2.2 N体問題計算
2.3 4次元積分計算
3.性能評価問題の実行時間
3.1 ３次元反復法計算
3.1.1 対称行列計算
3.1.2 非対称行列計算
3.2 N体問題計算
3.3 4次元積分計算

1.はじめに

最近はシュミレーションの規模が大きくなり、倍精度演算では、表現できる数値範囲と仮数部のビット数が問題となってきています。
4倍精度変数は倍精度浮動小数点数を2つつなげた方式とieee754-2008のデータ形式がありそれぞれ一長一短があります。

また演算に1-xの様な計算があると精度低下を防ぐためには倍精度浮動小数点数を2つつなげた方式をとる必要があります。このため,倍精度変数で表現できる数値範囲の問題と仮数部のビット数の問題があると、演算に1-xの計算が多いか否かで適用する方式を考える必要があります。
さらにこの問題はアクセラレータなどの適用方法と絡むため問題がさらに複雑になります。
今四半期はこの問題を中心に扱っていきます。

SR16000/M1 システムでは、性能評価の基準となる演算量の算出と倍精度では,3次元対称問題での反復法の計算,倍精度超の精度での3次元非対称問題の反復計算を中心にしています。
サーバーでは整数演算方式による超多倍長計算、GPUでは各種演算精度での性能比較とDD形式と整数演算方式の性能比較を行っています。

ＧＰＵでは,Phi5110Pは他とは少し異なるアーキテクチャーのため、詳細に解析し,またHD7970,W8000,CYP7(AMD HD7980)などの結果も示しました。

尚,SR16000での一般ジョブに関しては,主に各種計算機アプリケーション性能比較に記載しています。

2.性能評価問題の演算量

2.1 ３次元反復法計算
倍精度演算用に以下の問題を設定しました。
対称行列用(1)サイズ 257  257  257の対角優位な問題を解くcg法(conjugategradient )(2)ポアソン方程式
u  3 sin( x )  sin( y)  sin( z)
解析解u ( x , y, z)  sin( x )  sin( y)  sin( z)sor (successiveover  relaxation)

陰解法 sor1
陽解法 sor 2
odd  even法 sor3adi(alternatingdirection

R  100, nx  ny  nz  113
収束判定値は共役残差10 12
初期値u ( x , y, z)  0

implicitmethod)法

倍精度超の演算精度が必要な場合用に以下の問題を設定しました。
非対称行列用
3次元ポアソン方程式
u fx領域[0,1]  [0,1]  [0,1]u  R

解析解u ( x, y, z)  e xyz  sin(x )  sin(y)  sin(z)bcg(biconjugategradient )法R  100, nx  ny  nz  129
cgs(conjugategradientsquare)法R  100, nx  ny  nz  113
収束判定値は共役残差10 12
初期値u ( x, y, z)  0

2.1.1 対称行列計算

解法により反復回数が大きく異なるため演算量は以下の様にばらつきがおおきくなっています。

演算量一覧(GFLOP)
解法
SOR(陰解法)
SOR(陽解法)
SOR(odd-even)
ADI
CG法

演算量
1148
15267
443
4554
506

2.1.2 非対称行列計算
非対称行列の場合は倍精度超演算が必要になる
ので性能モニターでの値が基本的な性能データとなります。

倍精度での演算量 (FLOP ) / 1反復bcg法 18  (nx  2)  (ny  2)  (nz  2)
 2[14  18  (nx  1)  22  (ny  1)  13  nx  ny  (nz  2)]
cgs法 21  (nx  2)  (ny  2)  (nz  2)
 2[14  18  (nx  1)  22  (ny  1)  13  nx  ny  (nz  2)]
性能モニターによる演算量
解法
bcg
cgs
cgs(GFLOP)

精度
反復回数 演算量
4倍精度
316
487
6倍精度
288 1239
8倍精度
217 21072.2 N体問題計算

粒子数N=1000,4000,10000でそれぞれタイムステップを10000,625,100として総演算量が同じになる様に設定しました。
総演算量はSR16000の性能モニターでは270GFLOPですが,GPUボードでは平方根をサポートしていないケースがあり,GPUボードで平方根計算を反復法で計算したプログラムをSR16000の性能モニターで実行すると580GFLOPとなっています。
平方根計算, 除算計算の演算数はよく変わり得るのでここでは,演算量  50  タイムステップ数  (粒子数) 2 FLOPとしています。

2.3 4次元積分計算

4次元積分計算としてS221テストを使用しています。DOループで見ると,2重ＤＯループを一次元化していますので, プログラム的には2重DOループ計算となります。
問題はS221 (1,100,100,0,100), N  576
で性能モニターによる演算量は倍精度演算 : 4568GFLOP
4倍精度演算 : 42187GFLOPとなっています。

4倍精度演算量
 9.2となっています。
倍精度演算量3.性能評価問題の実行時間
3.1 ３次元反復法計算
3.1.1 対称行列計算
SR16000実行時間(秒)プログラム 32core 64smp 反復回数
d3cg
14.4999 16.2941
1104
d3sor2233.2875 362.1883 61382
d3sor315.3201 16.7317
1780
d3adi
106.0389 171.7138
7632
d3sor

523.7610

4626 1cpu

d3sor 陰解法 並列化不可
d3sor 2 陽解法

並列化可

d3sor3 odd  even 並列化可

1.SORでは陽解法の反復回数は大幅に増えるが、並列化効果により,陰解法より高速になっています。
2.odd-even法の効果が大きい。
3.smt=off,(32core)の性能が良い。

3.1.2 非対称行列計算
ベースとなるシングルジョブ実行結果は下記の様になっています。

シングルジョブ実行結果
SR16000

実行時間:秒プログラム 精度
反復回数 実行時間
bcg
4倍精度
317 10.9749
cgs
6倍精度
277 437.1204
cgs
8倍精度
217 715.7060

並列実行反復法(実行時間：秒)

sr16000

64smp

1node

bcg
精度
4倍精度

実行時間 反復回数
4.1678316

single10.9747

cgs
精度
6倍精度
8倍精度

実行時間 反復回数
76.5859288
118.5751
217

再並列化強化後
cgs
精度
6倍精度
8倍精度

実行時間 反復回数
29.1450281
33.5245217

single437.1204715.7060

1.bsg法は並列効果は大きくない。
2.cｓｇの並列化効果は内積演算の修正によるものです。

3.2 N体問題計算
N体問題性能測定結果一覧
粒子数はN=1000,4000,10000で演算量は同じになる様に調整しました。

N

実行時間(秒)一覧表
32core64smp
1000
4.7332
4.76684000
4.25974.336510000
4.16374.579710002.6379
2.64714000
2.63042.7826
10000
2.58802.6867

最適化
OPT3
OPT3
OPT3
SOPT
SOPT
SOPT

1.最適化の効果は約1.8倍
2.Nの値の違いによる実行時間の差はほとんどないので並列化オーバーヘッドが少ない事がわかります。

3.3 4次元積分計算
S 221 テスト
S 221 (  1,100 ,100 , 0 , 0 ,100 )N  576
SR16000

実行時間(秒)

精度
倍精度
4倍精度

32core64smp
30.395169 24.126208
550.758631 330.429147

性能的には倍精度,4倍精度演算
ともに, smt  on (64smp)の方が良い。
また演算性能での4倍精度演算
 13.8と演算量比倍精度演算9.2を大きく上回っています。
すなわち 4倍精度演算の性能が悪くなっている事を示しています。