各種計算機アプリケーション性能比較
平成２５年度第3四半期
目次
1.はじめに
2.DD形式方式と整数演算方式の演算量
2.1 DD形式の2n倍精度の演算量
2.2 整数演算方式の演算量
3.量子モンテカルロ法による物性スペクトル計算
3.1 6,8,10倍精度演算での性能比較
3.2 x5570,e5430でのDDとieee754-2008形式の比較

各種計算機アーキテクチャの相違は性能のみならず,精度,コンパイラの最適化機能,互換性にも影響が出てきます。主に使用した計算機は以下の2つです。
(ア)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コア
演算器/物理コア 乗加算器４つ(イ)BG/Q
周波数 1.6GHz1 ノード 16core 論理性能 204.8GFLOPs
L1 キャシュ16/16KB (Core)
L2 32MB (node)
Main storage 16GB (Core)
Smt=1,2,4これらのほかに
x5570 8コア 2.93GHz キャシュ 8MB/コア
e5430 16コア 2.66GHz キャシュ 12MB/コア
T2kシステムなどとも比較しています.

1.はじめに

今回は主に量子モンテカルロ法による物性スペクトル計算で使用したDD形式の演算とieee754-2008形式の整数演算の演算量と実測値との関係に関して記述しています。
比較は,SR16000/M1,BG/QでのDD方式の結果と,整数演算でのX5570,E5430,T2Kシステムの結果に関して行っています。
また演算量の検証として,X5570,e5430シングルジョブでＤＤ形式の場合とieee754-2008形式での場合の比較を行っています。この結果ではアルゴリズムを同じ(ソースチューニングなし)の場合,8倍精度演算ではどちらの方式もほぼ同じ性能で,10倍精度演算ではieee754-2008形式(整数演算方式）の場合の性能が良く、浮動小数点演算性能のみでプログラムの性能を比較する方式の問題点を示しています。

2.DD形式方式と整数演算方式の演算量
2.1 DD形式の2n倍精度の演算量m  [ln 2 n]  1(1) 2n倍加減算
9n 2  14n  6

基本精度加減算( 2) 2n倍精度乗算
基本精度加減算

2( n  1)(n 2  4n  3)

基本精度乗算n(7 n  5)
2(3)2n倍精度除算
基本精度加減算 (n  1)(n 3  15n 2  22n  6)n(n  1)(7 n  5)2n

基本精度乗算基本精度除算(4)2n倍精度平方根(除算方式)
基本精度加減算m(n  1)(n 3  15n 2  22n  6)

 (m  1)(9n 2  14n  6)
基本精度乗算基本精度除算基本精度平方根mn(n  1)(7 n  5)2mn
1(5)2n倍精度平方根(逆数平方根方式)
基本精度加減算 2(3m  1)(n  1)(n 2  4n  3)

2.2 整数演算方式の演算量
整数演算方式では, 有効ビット (仮数部のビット数  1)を30ビット単位で操作しています。P ( 4)倍精度演算の有効ビット数mm  32  P  16  1となります。このため実行時間は
 m  1n  1の関数となります。通常演算量の単位は
 30 
浮動小数点演算のため, 整数演算方式では, 異なる精度での実行時間比を見積もる指標として, 演算量はnの関数形で定めています。ここで, k , k add , k mult は比例定数を表しています。
(1)加減算k add  n( 2)乗算
k mult  n 2(3)除算
2  k mult  n 2a11はa  で計算し, の計算は反復法ではな く直接整数
bbb
演算で求めてい てほぼ乗算と同じ実行時間になっています。
( 4)平方根
2lk mult  n 2  (l  1)  k add  4倍精度平方根nl  ln 2   1, 除算l回, 加減算l  1回より。
4
簡単に k  n 2.5 と見積もる場合もあります。

3.量子モンテカルロ法による物性スペクトル計算
3.1 6,8,10倍精度演算での性能比較
DD形式と整数演算方式の比較
測定ソース
DD形式

SR16000/M1でもっともチューニングされたもの
6倍精度演算は今回新たにチューニングされたもの
整数演算方式オリジナルソースの演算部分を多倍長精度演算に置き換えたもの

指定オプション
DD形式  O3  fp  mod el
整数演算方式

strict標準(O 2)

測定条件
6倍精度

N  100, L  448,   10,U  6

8倍精度

N  100, L  448,   20,U  8

10,12倍精度 N  100, L  448,   20,U  10
実行時間一覧表(秒)
CPU

X5570
E5430
整数演算 DD形式
整数演算 DD形式
6倍精度
1013.001
496.412 1368.826
696.4128倍精度
1471.272
992.806 1913.822 1338.291
10倍精度 1997.684 2314.178 2693.822 3108.519
12倍精度 2931.289
3945.040

整数演算方式では,P=5,6,7ではn=p,P=8,10,12ではn=p+1となるため実行時間比率で見ると8倍精度演算が大きくなります。

DD形式の8倍精度と10倍精度の実行時間の比
CPU
比率
SR16000
2.15BG/Q
2.30
x5570
2.33
e5430
2.33
T2K
2.29
演算量
8倍精度
演算
加減算
乗算
除算
平方根

加減算

乗算

演算
加減算
乗算
除算
平方根

加減算
乗算
除算
161336
96
2084
384
6896
1152

94
174
858
2950

除算
46138
414

平方根

412計
94
220
1000
3377

110倍精度
平方根

515整数演算方式
対８倍精度実行時間比
精度
x5570
e5430
計算
10倍精度
1.358
1.408
1.436
12倍精度
1.992
2.061
1.942

計算
304 304 2
() )  2  1.436
240 240
368 368 212倍精度 (() )  2  1.942
240 24010倍精度 (計1比率
1614322473
8064

1.71
1.96
2.472.39

DD形式か整数演算方式か？
分岐点は8倍精度にある模様
原因(1)DD形式では8倍精度,10倍精度となると倍精度加減算の比率が多くなるため,乗加算命令の効果がなくなる。
(2)DD形式では演算量から,最適化がうまく効くのは8倍精度までで,10倍精度以上では最適化の効果が低下する。
(3)整数演算方式では４倍精度演算から16倍精度演算の間では、他の演算精度と比較して8倍精度演算が実行時間比率で悪くなる。
精度の面からみると,8倍精度演算ではDD形式ではN  100, L  448,   20, U  8
整数演算方式では N  100, L  448,   20, U  10までと,10進10桁一致する解が得られる領域に差が,出ている。
またDD形式では更に精度をあげても, 表現できる数値範囲の問題で10倍精度演算, N  100, L  448,   27, U  10までしか計算できない 。

3.2 x5570,e5430でのDD形式とieee754-2008形式（整数演算方式)の比較
DD形式と整数演算方式の比較
測定ソース
オリジナルソースの演算部分を多倍長精度演算に置き換えたもの

指定オプション
DD形式  O3  fp  mod el
整数演算方式

strict標準(O 2)

測定条件
5,6,7 倍精度
8倍精度

N  100 , L  448 ,   10 , U  6
N  100 , L  448 ,   20 , U  810 ,12 倍精度 N  100 , L  448 ,   20 , U  10
性能比較一覧表
実行時間(秒)一覧表
演算精度 x5570
e5430
方式
整数演算 DD方式
整数演算 DD方式
5倍精度
896.776
1204.938
6倍精度
1013.001
752.237 1368.826
945.8597倍精度
1194.853
1617.087
8倍精度
1471.272 1339.420 1913.822 1636.684
10倍精度 1997.684 3009.714 2693.822 3614.172
12倍精度 2931.289
3945.040

有効ビット数 DD形式8倍精度(52+1)*4=212ビット
整数演算方式7倍精度
32*7-16+1=209ビット

整数演算7倍精度
β =20
U
7.5
7.6
7.7
7.8
7.9
8.0

必要ビット数
187.4
188.7
189.0
191.1
192.3
193.6

7倍精度整数演算方式

  20, N  100, L  448
u = 7.5 - 0.1000000000D + 01
u = 7.6 - 0.9999999999D + 00
u = 7.7 - 0.9999999997D + 00
u = 7.8 - 0.1000000008D + 01
u = 7.9 - 0.1000000092D + 01
u = 8.0 - 0.9999983747D + 00
DD形式8倍精度と有効ビットの差は3ビット