各スレッドに対して、MPI の RANK とスレッド番号を入手してから、sched_setaffinity 関数でアフィニティの設定を行い、再実験を行った。
○ 計算サーバ1 (4 CPU x 6 コア = 24 コア)
CPU : AMD Opteron 8439 (2.80GHz / 6MB L3) x 4 (24コア)
Memory : 128GB (32 x 4GB / 800MHz)
OS : Fedora 13 for x86_64
まずは、以下のコマンドで CPU やコア番号等に関する情報を入手する。
○ numactl --hardware
available: 4 nodes (0-3)
node 0 cpus: 0 4 8 12 16 20
node 0 size: 32762 MB
node 0 free: 31590 MB
node 1 cpus: 3 7 11 15 19 23
node 1 size: 32768 MB
node 1 free: 31710 MB
node 2 cpus: 2 6 10 14 18 22
node 2 size: 32768 MB
node 2 free: 31716 MB
node 3 cpus: 1 5 9 13 17 21
node 3 size: 32768 MB
node 3 free: 31606 MB
node distances:
node 0 1 2 3
0: 10 20 20 20
1: 20 10 20 20
2: 20 20 10 20
3: 20 20 20 10
2 MPI のときは4つの CPU を2つに分けるが、この場合では分け方によって特に差は生じなかった。結局、同じ RANK に属するスレッドは同じ CPU 内に割り当てるのが最速(4m10s)となった。
○ 問題 : NH3+.2A2".STO6G.pqgt1t2p.dat-s
○ 計算サーバ1:
■ SDPA 7.3.2 (24コア) : 4m15s
■ SDPARA 7.3.2 (1 MPI x 24 Pthread) : 4m58s
■ SDPARA 7.3.2 (2 MPI x 12 Pthread) : 4m15s
RANK 0 : 0,4,8,12,16,20,3,7,11,15,19,23
RANK 1 : 1,5,9,13,17,21,2,6,10,14,18,22
■ SDPARA 7.3.2 (2 MPI x 12 Pthread) : 4m15s
RANK 0 : 0,4,8,12,16,20,2,6,10,14,18,22
RANK 1 : 1,5,9,13,17,21,3,7,11,15,19,23
■ SDPARA 7.3.2 (4 MPI x 6 Pthread) : 4m10s
RANK 0 : 0,4,8,12,16,20
RANK 1 : 2,6,10,14,18,22
RANK 2 : 1,5,9,13,17,21
RANK 3 : 3,7,11,15,19,23
■ SDPARA 7.3.2 (4 MPI x 6 Pthread) : 4m32s
RANK 0 : 0,1,2,3,4,5
RANK 1 : 6,7,8,9,10,11
RANK 2 : 12,13,14,15,16,17
RANK 3 : 18,19,20,21,22,23
■ SDPARA 7.3.2 (6 MPI x 4 Pthread) : 4m35s
■ SDPARA 7.3.2 (12 MPI x 2 Pthread) : 4m59s
■ SDPARA 7.3.2 (24 MPI x 1 Pthread) : 5m52s
○ 計算サーバ1 (4 CPU x 6 コア = 24 コア)
CPU : AMD Opteron 8439 (2.80GHz / 6MB L3) x 4 (24コア)
Memory : 128GB (32 x 4GB / 800MHz)
OS : Fedora 13 for x86_64
まずは、以下のコマンドで CPU やコア番号等に関する情報を入手する。
○ numactl --hardware
available: 4 nodes (0-3)
node 0 cpus: 0 4 8 12 16 20
node 0 size: 32762 MB
node 0 free: 31590 MB
node 1 cpus: 3 7 11 15 19 23
node 1 size: 32768 MB
node 1 free: 31710 MB
node 2 cpus: 2 6 10 14 18 22
node 2 size: 32768 MB
node 2 free: 31716 MB
node 3 cpus: 1 5 9 13 17 21
node 3 size: 32768 MB
node 3 free: 31606 MB
node distances:
node 0 1 2 3
0: 10 20 20 20
1: 20 10 20 20
2: 20 20 10 20
3: 20 20 20 10
2 MPI のときは4つの CPU を2つに分けるが、この場合では分け方によって特に差は生じなかった。結局、同じ RANK に属するスレッドは同じ CPU 内に割り当てるのが最速(4m10s)となった。
○ 問題 : NH3+.2A2".STO6G.pqgt1t2p.dat-s
○ 計算サーバ1:
■ SDPA 7.3.2 (24コア) : 4m15s
■ SDPARA 7.3.2 (1 MPI x 24 Pthread) : 4m58s
■ SDPARA 7.3.2 (2 MPI x 12 Pthread) : 4m15s
RANK 0 : 0,4,8,12,16,20,3,7,11,15,19,23
RANK 1 : 1,5,9,13,17,21,2,6,10,14,18,22
■ SDPARA 7.3.2 (2 MPI x 12 Pthread) : 4m15s
RANK 0 : 0,4,8,12,16,20,2,6,10,14,18,22
RANK 1 : 1,5,9,13,17,21,3,7,11,15,19,23
■ SDPARA 7.3.2 (4 MPI x 6 Pthread) : 4m10s
RANK 0 : 0,4,8,12,16,20
RANK 1 : 2,6,10,14,18,22
RANK 2 : 1,5,9,13,17,21
RANK 3 : 3,7,11,15,19,23
■ SDPARA 7.3.2 (4 MPI x 6 Pthread) : 4m32s
RANK 0 : 0,1,2,3,4,5
RANK 1 : 6,7,8,9,10,11
RANK 2 : 12,13,14,15,16,17
RANK 3 : 18,19,20,21,22,23
■ SDPARA 7.3.2 (6 MPI x 4 Pthread) : 4m35s
■ SDPARA 7.3.2 (12 MPI x 2 Pthread) : 4m59s
■ SDPARA 7.3.2 (24 MPI x 1 Pthread) : 5m52s