行列サイズを N とすると Linpack の計算量は
(2 / 3) * N * N * N + 2 * N * N
となる。
一方 Cholesky 分解の計算量は
N * (1/3 + N * (1/2 + N / 6)) + N * (N * N - 1) / 6
となる。
例えば N = 1484406 ときの計算量は以下の通り。
Linpack : 2.1806e+18 FLOP
Cholesky : 1.0903e+18 FLOP
つまり、Cholesky 分解の計算量は Linpack (LU分解)の約半分。
参考
◯ TSUBAME における Linpack 測定 (2010年10月18日): 1357 ノード, 4071 GPU
N = 2490368, 計算量 1.0297e+19 FLOP, 実行時間 8639.84秒, 1.1918e+15 FLOPS
◯ TSUBAME における Cholesky 測定 (2012年4月5日) : 1360 ノード, 4080 GPU
N = 1484406, 計算量 1.0903e+18 FLOP, 実行時間 2045.0秒, 5.3314e+14 FLOPS
◯東工大 TSUBAME 2.0
HP Proliant SL390s G7 1408台
HP Proliant SL390s G7
CPU: Intel Xeon 2.93GHz 6コア×2ソケット = 12コア(Hyperthreading時 = 24コア)
GPU: NVIDIA Tesla M2050 3GPU
Memory: 54GB (一部は96GB)
SSD: 120GB (一部は240GB)
ネットワーク: QDR InfiniBand x 2 = 80Gbps
◯1ノードあたりの性能(倍精度)
CPU 140GF(2.93GHz) + GPU 1545GF = 1685GF
CPU 153GF(3.2GHz : TB) + GPU 1545GF = 1698GF
(2 / 3) * N * N * N + 2 * N * N
となる。
一方 Cholesky 分解の計算量は
N * (1/3 + N * (1/2 + N / 6)) + N * (N * N - 1) / 6
となる。
例えば N = 1484406 ときの計算量は以下の通り。
Linpack : 2.1806e+18 FLOP
Cholesky : 1.0903e+18 FLOP
つまり、Cholesky 分解の計算量は Linpack (LU分解)の約半分。
参考
◯ TSUBAME における Linpack 測定 (2010年10月18日): 1357 ノード, 4071 GPU
N = 2490368, 計算量 1.0297e+19 FLOP, 実行時間 8639.84秒, 1.1918e+15 FLOPS
◯ TSUBAME における Cholesky 測定 (2012年4月5日) : 1360 ノード, 4080 GPU
N = 1484406, 計算量 1.0903e+18 FLOP, 実行時間 2045.0秒, 5.3314e+14 FLOPS
◯東工大 TSUBAME 2.0
HP Proliant SL390s G7 1408台
HP Proliant SL390s G7
CPU: Intel Xeon 2.93GHz 6コア×2ソケット = 12コア(Hyperthreading時 = 24コア)
GPU: NVIDIA Tesla M2050 3GPU
Memory: 54GB (一部は96GB)
SSD: 120GB (一部は240GB)
ネットワーク: QDR InfiniBand x 2 = 80Gbps
◯1ノードあたりの性能(倍精度)
CPU 140GF(2.93GHz) + GPU 1545GF = 1685GF
CPU 153GF(3.2GHz : TB) + GPU 1545GF = 1698GF