RISC-V でのGAP Benchmark Suiteを実行する
GAPベンチマークをRISC-V向けにコンパイルしたのはいいのだが、いくつかのベンチマークではSpike上で実行することができない。
spike --isa=rv64gcv pk ./bfs -f benchmark/graphs/kron.sg -n64 bbl loader terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
QEMUでやってみると、今度は変なエラーを出した。
(ちなみに、QEMUでベクトル命令を有効にするための--cpu rv64,v=true
は初めて知った)
qemu-riscv64 --cpu rv64,v=true ./pr -f ../gapbs/benchmark/graphs/road.sg -i1000 -t1e-4 -n16 vector version is not specified, use the default value v1.0 Couldn't open file ../gapbs/benchmark/graphs/road.sg
うーん、なんでQEMUでファイルをオープンできないのかは詳細に見てみないと原因がわからない。
とりあえず、一部のベンチマークについてはRISC-VとSpike/pkで実行できることは確認した。
spike --isa=rv64gcv pk ./pr -f ../gapbs/benchmark/graphs/road.sg -i1000 -t1e-4 -n16 bbl loader Read Time: 8.66252 Graph has 23947347 nodes and 57708624 directed edges for degree: 2 0 0.274277 1 0.077724 2 0.027642 3 0.014076 4 0.008457 5 0.005467 6 0.003671 7 0.002518 8 0.001751 9 0.001229 10 0.000868 11 0.000615 12 0.000438 ... /* 以下省略: とりあえずめっちゃ遅い */
実行できないベンチマークは、やはりロードするファイルが大きすぎるからだろうか?