研究日誌。

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

1 node Graph500 その4

2012-08-31 17:21:27 | Weblog
またまた更新。version 3.26 に。
今度は WestmereEX だけではなく、MagnyCours でも実験。
絶対性能では WestmereEX なのだが、MagnyCours の方がスケーラビリティが良い。
もちろん WestmereEX での性能低下の原因を解決する策もあるので、修正できると思われる。

○ 4-way Westmere-EX サーバ (20-cores x 4-NUMA-nodes = 80-threads)
Intel(R) Xeon(R) CPU E7- 4870 @ 2.40GHz, 512 GB RAM


○ 4-way Magny-Cours サーバ ( 8-cores x 6-NUMA-nodes = 48-threads)
AMD Opteron(tm) Processor 6174 @ 2.20GHz, 256 GB RAM

1 node Graph500 その3

2012-08-29 17:54:36 | Weblog
現在、絶賛高速化中で、ようやく Parallel BFS の挙動が分かってきた。
最新の実装は、現時点の最新のリストである Graph500 june 2012 list と比較すると 1 node で最も高速な実装となっている。
SCALE 26 で median 値が 9.69 GTEPS となり、
これまでの 25 位の SCALE 27 で 7.85 GTEPS に対して 2 GTEPS 弱の差をつけることができた。


----------------------------------------------------------------------
Parallel Breadth-First Search for Graph500 Benchmark version 3.24
----------------------------------------------------------------------
CPU name is Intel(R) Xeon(R) CPU E7- 4870 @ 2.40GHz
freq / RAM is 2400.107 MHz / 504.78 GB
#cpu, #nodes, #cores is 80 4 20
COMPILER is GCC (GNU C Compiler) version 4.4.6
----------------------------------------------------------------------
scale, edgefactor is 26 16
#threads, #NUMAs is 80 4
mpol_bind is ON(mmap with mbind(MPOL_BIND))
mem_interleave is OFF
switching parameter is 0.000035 (n ~= 2.348810e+03)
queue buffer size is 65536
----------------------------------------------------------------------
SCALE: 26
nvtx: 67108864
edgefactor: 16
terasize: 1.71798691839999997e-02
A: 5.69999999999999951e-01
B: 1.90000000000000002e-01
C: 1.90000000000000002e-01
D: 5.00000000000000444e-02
generation_time: 2.68578929901123047e+01
construction_time: 2.17296519279479980e+01
nbfs: 64
min_time: 1.02756023406982422e-01
firstquartile_time: 1.09368681907653809e-01
median_time: 1.10972046852111816e-01
thirdquartile_time: 1.15135550498962402e-01
max_time: 1.40076875686645508e-01
mean_time: 1.13488256931304932e-01
stddev_time: 7.59083816189232759e-03
min_nedge: 1.07373120400000000e+09
firstquartile_nedge: 1.07373120400000000e+09
median_nedge: 1.07373120400000000e+09
thirdquartile_nedge: 1.07373120400000000e+09
max_nedge: 1.07373120400000000e+09
mean_nedge: 1.07373120400000000e+09
stddev_nedge: 0.00000000000000000e+00
min_TEPS: 7.66529949170165730e+09
firstquartile_TEPS: 9.38029503046095467e+09
median_TEPS: 9.69146369931156921e+09
thirdquartile_TEPS: 9.84207161150045013e+09
max_TEPS: 1.04493261650201073e+10
harmonic_mean_TEPS: 9.46116570148694229e+09
harmonic_stddev_TEPS: 7.97284242052958459e+07


これまでは firstquartile ~ max だけの改善に留まっていたが、今回の更新で min が大きく改善され安定性が大幅に向上している。
当初、min が低いのは Hybrid Algorithm の切り替え失敗が原因であると予想していたのだが、
実際には負荷分散がうまくいっていないことが性能低下の主要因であったらしい。
4-way WestmereEX という構成は実コアとして 40 コア、HyperThreading で 80 コアと非常に多く、
負荷分散の重要性を再確認した。

ちなみにこの実装ではある程度大きい SCALE からはスレッド数を 80 と設定したときが最も良い性能となっており、
以下に示すいずれの結果もスレッド数を 80 に設定している。

○ 4-way Westmere-EX サーバ (20-cores x 4-NUMA-nodes = 80-threads)
Intel(R) Xeon(R) CPU E7- 4870 @ 2.40GHz, 512 GB RAM

○ Graph500
http://www.graph500.org/results_june_2012


1 node Graph500 その2

2012-08-23 01:29:54 | Weblog
アイディアを片っ端から試して、TEPS 値を更新中。
前回に比べて y 軸が大きくなっているので比較の際は注意が必要。

firstquartile median thirdquartile max の差が小さくなっており、安定性が向上している模様。
min は hybrid algorithm の切り替え失敗に相当しており、パラメータをチューニングすれば向上すると思われる。
不可解な挙動に関する理由付けの目星は付いたので、後は裏を取る作業だけ。

○ 4-way Westmere-EX サーバ (20-cores x 4-NUMA-nodes = 80-threads)
Intel(R) Xeon(R) CPU E7- 4870 @ 2.40GHz, 512 GB RAM


1 node Graph500

2012-08-15 05:48:20 | Weblog
Graph500 list の更新から2ヶ月ほど経つが、ようやく納得する性能が出始めるようになってきた。上記のリストの 1node の結果に関して、CPU版としては私の実装が最速で SCALE 29 での 5.68 GE/s で 32 位である。しかしながら、Convey 社チームの FPGA 版が SCALE 27 での 7.85 GE/s (25位), 6.64 GE/s (28位), 6.00 GE/s (30位) が更に上に位置しているため、CPU 版の印象は薄いかもしれない。Graph500 だけではなく、消費電力あたりの TEPS で競う Green Graph 500 では 1node の結果が非常に有効であるため、引き続き高速化を行っている。現在の実装では, 4-way Westmere-EX で 8.0 GTEPS (median) ほど, 4-way Magny-Cours はその半分の 4.0 GTEPS (median) ほどの性能になった。

○ 4-way Westmere-EX サーバ (20-cores x 4-NUMA-nodes = 80-threads)
Intel(R) Xeon(R) CPU E7- 4870 @ 2.40GHz, 512 GB RAM

○ 4-way Magny-Cours サーバ ( 8-cores x 6-NUMA-nodes = 48-threads)
AMD Opteron(tm) Processor 6174 @ 2.20GHz, 256 GB RAM