Graph 500のコードを動かしてみた

Graph 500 | large-scale benchmarks

Graph 500というスパコンベンチがあって、これのコードは公開されているので触ってみた。 スパコン持ってないので、実験機材は普通のノートPCにUbuntu 16.04が入ったもの。

まずはv3.0.0のコードをもらってくる。 https://github.com/graph500/graph500/archive/graph500-3.0.0.tar.gz

mpi関連をインストールする。

apt install mpich

展開する。

tar xzf graph500-3.0.0.tar.gz
cd graph500-graph500-3.0.0/

このままビルドするとリンクでエラーになるので、Makefile内のコンパイル引数に指定されている -lpthread とか -lm を後ろに持っていく。

ビルドする。

make

ビルド結果としては4つの実行ファイルが出来上がるが、名前に reference と付いている方は実行可能で、 custom と付いている方は動かない(本来の目的である、自分の実装をするためのものなので)。

ローカルでmpiの4並列実行してみる。

time mpiexec -n 4 ./graph500_reference_bfs 20

結果は長いので最後だけ抜粋。

SCALE:                          20
edgefactor:                     16
NBFS:                           64
graph_generation:               4.61012
num_mpi_processes:              4
construction_time:              1.36205
bfs  min_time:                  0.277266
bfs  firstquartile_time:        0.283024
bfs  median_time:               0.291698
bfs  thirdquartile_time:        0.302793
bfs  max_time:                  0.349763
bfs  mean_time:                 0.295806
bfs  stddev_time:               0.0167295
min_nedge:                      16775818
firstquartile_nedge:            16775818
median_nedge:                   16775818
thirdquartile_nedge:            16775818
max_nedge:                      16775818
mean_nedge:                     16775818
stddev_nedge:                   0
bfs  min_TEPS:                  4.79634e+07
bfs  firstquartile_TEPS:        5.54037e+07
bfs  median_TEPS:               5.75108e+07
bfs  thirdquartile_TEPS:        5.92735e+07
bfs  max_TEPS:                  6.05044e+07
bfs  harmonic_mean_TEPS:     !  5.67123e+07
bfs  harmonic_stddev_TEPS:      404095
bfs  min_validate:              1.18584
bfs  firstquartile_validate:    1.21473
bfs  median_validate:           1.22582
bfs  thirdquartile_validate:    1.26528
bfs  max_validate:              1.44657
bfs  mean_validate:             1.24752
bfs  stddev_validate:           0.0512569

real    1m50.265s
user    6m41.675s
sys 0m25.753s

なんとなく動いた。

Complete Results | Graph 500 を見るとパソコンレベルの1ノード構成でも1GTEPSくらいは出るみたいなので、max 0.06GTEPSはかなり遅い気がする。 reference だとそんなもんなんだろうか?