以下の計算サーバ (AMD Opteron : 通称 Magny-Cours) を 4 個搭載しているので、合計で 4 x 12 = 48 コアが存在する。この Magny-Cours は AMD Isntabul (6 コア) の CPU を二つ重ねたような構造を持っているので、12 コアの CPU であるが 6 コア x 2 CPU という構造とみなすこともできる。以下は現在所有している Dell PowerEdge R815 を前提とした内容である。
○計算サーバ (4 CPU x 12 コア = 48 コア)
CPU : AMD Opteron 6174 (2.20GHz / 12MB L3) x 4個
メモリ : 256GB (16 x 16GB / 1066MHz)
OS : Fedora 14 for x86_64
numactl コマンドで構成を調べると以下のようになる(8 nodes x 6 コアの構成)。
numactl --hardware
available: 8 nodes (0-7)
node 0 cpus: 0 4 8 12 16 20
node 0 size: 32758 MB
node 0 free: 24475 MB
node 1 cpus: 24 28 32 36 40 44
node 1 size: 32768 MB
node 1 free: 29383 MB
node 2 cpus: 3 7 11 15 19 23
node 2 size: 32768 MB
node 2 free: 26170 MB
node 3 cpus: 27 31 35 39 43 47
node 3 size: 32768 MB
node 3 free: 30255 MB
node 4 cpus: 2 6 10 14 18 22
node 4 size: 32768 MB
node 4 free: 23721 MB
node 5 cpus: 26 30 34 38 42 46
node 5 size: 32768 MB
node 5 free: 29136 MB
node 6 cpus: 1 5 9 13 17 21
node 6 size: 32768 MB
node 6 free: 29008 MB
node 7 cpus: 25 29 33 37 41 45
node 7 size: 32768 MB
node 7 free: 28666 MB
node distances:
node 0 1 2 3 4 5 6 7
0: 10 16 16 22 16 22 16 22
1: 16 10 16 22 22 16 22 16
2: 16 16 10 16 16 16 16 22
3: 22 22 16 10 16 16 22 16
4: 16 22 16 16 10 16 16 16
5: 22 16 16 16 16 10 22 22
6: 16 22 16 22 16 22 10 16
7: 22 16 22 16 16 22 16 10
物理的には CPU とコアの構成は以下のようになっている。
CPU 0 : 0 4 8 12 16 20 24 28 32 36 40 44
CPU 1 : 3 7 11 15 19 23 27 31 35 39 43 47
CPU 2 : 2 6 10 14 18 22 26 30 34 38 42 46
CPU 3 : 1 5 9 13 17 21 25 29 33 37 41 45
次の問題と SDPA, SDPARA を用いて幾つか実験を行ってみる。
◯問題 NH3+.2A2".STO6G.pqgt1t2p.dat-s
実験結果は以下の通りになる。
1: SDPA 48 コア (affinity 設定無し) : 236.9秒
2: SDPA 48 コア (affinity 設定有り) : 167.3秒
3: SDPARA 4 プロセス x 12 コア (affinity 設定無し) : 178.8秒
4: SDPARA 4 プロセス x 12 コア (affinity 設定有り) : 176.4秒
プロセス 0 : 0 4 8 12 16 20 24 28 32 36 40 44
プロセス 1 : 3 7 11 15 19 23 27 31 35 39 43 47
プロセス 2 : 2 6 10 14 18 22 26 30 34 38 42 46
プロセス 3 : 1 5 9 13 17 21 25 29 33 37 41 45
5: SDPARA 8 プロセス x 6 コア (affinity 設定無し) : 200.9秒
6: SDPARA 8 プロセス x 6 コア (affinity 設定有り) : 181.3秒
プロセス 0 : 0 4 8 12 16 20
プロセス 1 : 24 28 32 36 40 44
プロセス 2 : 3 7 11 15 19 23
プロセス 3 : 27 31 35 39 43 47
プロセス 4 : 2 6 10 14 18 22
プロセス 5 : 26 30 34 38 42 46
プロセス 6 : 1 5 9 13 17 21
プロセス 7 : 25 29 33 37 41 45
○計算サーバ (4 CPU x 12 コア = 48 コア)
CPU : AMD Opteron 6174 (2.20GHz / 12MB L3) x 4個
メモリ : 256GB (16 x 16GB / 1066MHz)
OS : Fedora 14 for x86_64
numactl コマンドで構成を調べると以下のようになる(8 nodes x 6 コアの構成)。
numactl --hardware
available: 8 nodes (0-7)
node 0 cpus: 0 4 8 12 16 20
node 0 size: 32758 MB
node 0 free: 24475 MB
node 1 cpus: 24 28 32 36 40 44
node 1 size: 32768 MB
node 1 free: 29383 MB
node 2 cpus: 3 7 11 15 19 23
node 2 size: 32768 MB
node 2 free: 26170 MB
node 3 cpus: 27 31 35 39 43 47
node 3 size: 32768 MB
node 3 free: 30255 MB
node 4 cpus: 2 6 10 14 18 22
node 4 size: 32768 MB
node 4 free: 23721 MB
node 5 cpus: 26 30 34 38 42 46
node 5 size: 32768 MB
node 5 free: 29136 MB
node 6 cpus: 1 5 9 13 17 21
node 6 size: 32768 MB
node 6 free: 29008 MB
node 7 cpus: 25 29 33 37 41 45
node 7 size: 32768 MB
node 7 free: 28666 MB
node distances:
node 0 1 2 3 4 5 6 7
0: 10 16 16 22 16 22 16 22
1: 16 10 16 22 22 16 22 16
2: 16 16 10 16 16 16 16 22
3: 22 22 16 10 16 16 22 16
4: 16 22 16 16 10 16 16 16
5: 22 16 16 16 16 10 22 22
6: 16 22 16 22 16 22 10 16
7: 22 16 22 16 16 22 16 10
物理的には CPU とコアの構成は以下のようになっている。
CPU 0 : 0 4 8 12 16 20 24 28 32 36 40 44
CPU 1 : 3 7 11 15 19 23 27 31 35 39 43 47
CPU 2 : 2 6 10 14 18 22 26 30 34 38 42 46
CPU 3 : 1 5 9 13 17 21 25 29 33 37 41 45
次の問題と SDPA, SDPARA を用いて幾つか実験を行ってみる。
◯問題 NH3+.2A2".STO6G.pqgt1t2p.dat-s
実験結果は以下の通りになる。
1: SDPA 48 コア (affinity 設定無し) : 236.9秒
2: SDPA 48 コア (affinity 設定有り) : 167.3秒
3: SDPARA 4 プロセス x 12 コア (affinity 設定無し) : 178.8秒
4: SDPARA 4 プロセス x 12 コア (affinity 設定有り) : 176.4秒
プロセス 0 : 0 4 8 12 16 20 24 28 32 36 40 44
プロセス 1 : 3 7 11 15 19 23 27 31 35 39 43 47
プロセス 2 : 2 6 10 14 18 22 26 30 34 38 42 46
プロセス 3 : 1 5 9 13 17 21 25 29 33 37 41 45
5: SDPARA 8 プロセス x 6 コア (affinity 設定無し) : 200.9秒
6: SDPARA 8 プロセス x 6 コア (affinity 設定有り) : 181.3秒
プロセス 0 : 0 4 8 12 16 20
プロセス 1 : 24 28 32 36 40 44
プロセス 2 : 3 7 11 15 19 23
プロセス 3 : 27 31 35 39 43 47
プロセス 4 : 2 6 10 14 18 22
プロセス 5 : 26 30 34 38 42 46
プロセス 6 : 1 5 9 13 17 21
プロセス 7 : 25 29 33 37 41 45
確かに affinity 設定の有無による性能差が小さ過ぎます。ためしに筋の悪そうな affinity の設定を手動で行うと性能が悪化しますので、MPI 側で Affinity の設定が行われている可能性があると思います。MPI は mpich2-1.3.2p1 を使っています。
Istanbul 24 コアの時ははっきりと差が出ていました。
http://blog.goo.ne.jp/sdpaninf/e/a0f01c8881e7bffd99a1ea358519f8da