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
だとそんなもんなんだろうか?