研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

NUMA-affinity @ Istanbul その1

2010-11-24 16:39:39 | Weblog
Istanbul(Opteron8439SE) 4sockets 構成には 6cores x 4sockets = 24cores が搭載されており、affinity の指定の組合せも非常に多い。割振りによって、性能が異なるか調べてみる。

ダイクストラ法をスレッド並列する際には、グラフデータを共有することでメモリ要求量を抑えつつ、そのためキャッシュメモリのヒット率が向上することとなる。

その際、「(グラフデータを共有したコア・グループ) x (グループ数)」という組合せで特性は決定する。理想的なのは「ソケット内でグラフデータを共有する」ことになると予想はあるものの、まずは確認していく。

でのマルチスレッドの組合せ 6x4, 3x8, 2x12, 1x24 に対して性能比較を行った。たとえば、
今度は 24 threads でのコアの組合せを変えて実験してみる。やはり、グラフデータは


hugepage & (6x4)--affinity=0,4,8,12,16,20:1,5,9,13,17,21:2,6,10,14,18,22:3,7,11,15,19,23
193.426 sec.  174.2951 GE/s

hugepage & (3x8)--affinity=0,4,8:12,16,20:1,5,9:13,17,21:2,6,10:14,18,22:3,7,11:15,19,23
196.382 sec.  171.0955 GE/s

hugepage & (2x12)--affinity=0,4:8,12:16,20:1,5:9,13:17,21:2,6:10,14:18,22:3,7:11,15:19,23
194.565 sec.  172.6930 GE/s

hugepage & (1x24)--affinity=0:4:8:12:16:20:1:5:9:13:17:21:2:6:10:14:18:22:3:7:11:15:19:23
198.523 sec.  169.2500 GE/s

hugepage & (1x24)--affinity=0,1,2,3,4,5:6,7,8,9,10,11:12,13,14,15,16,17:18,19,20,21,22,23
268.190 sec.  125.2846 GE/s