Skip to content

Benchmarking

Christopher Liu edited this page Sep 28, 2021 · 3 revisions

Subject to change. Right now, the same code drives the micro-benchmarks and the Graph500 official benchmark.

Micro-Benchmarks

In order to figure out which device+kernel combination works best, we must try everything out.

Key Terms

  1. Segment: Each graph is ordered by descending degree (i.e., highest degree to lowest degree). For the benchmarking purposes, the graph is divided into n segments such that each roughly has an equal number of edges.
  2. GTEPs: Giga Traversed Edges Per second. The higher this number, the better!

Getting Benchmark Results

BFS

Go to profile/bfs. In profile/bfs/benchmark_bfs.cu, you may configure the number of segments NUM_SEGMENTS and the number of GPU blocks NUM_BLOCKS to use. Disable RUN_FULL_KERNELS if you only want to get micro-benchmark results.

Run make. make test will run a graph stored under graphs/graph_scale23_degree16.sg. The command is essentially

./benchmark_bfs.exe ../../graphs/graph_scale23_degree16.sg

To use your own graph, run

./benchmark_bfs.exe path/to/your/graph.sg

Optionally, run make clean to delete the compiled binary.

The resulting micro-benchmark results will be emitted in the same folder as named .yaml files.

SSSP

Go to profile/sssp. In profile/bfs/benchmark_sssp.cu, you may configure the number of segments NUM_SEGMENTS and the number of GPU blocks NUM_BLOCKS to use. Enable the RUN_EPOCH_KERNELS flag. Disable RUN_FULL_KERNELS if you only want to get micro-benchmark results.

Run make. make test will run a graph stored under graphs/graph_scale23_degree16.wsg. The command is essentially

./benchmark_sssp.exe ../../graphs/graph_scale23_degree16.wsg

To use your own graph, run

./benchmark_sssp.exe path/to/your/graph.wsg

Optionally, run make clean to delete the compiled binary.

The resulting micro-benchmark results will be emitted in the same folder as named .yaml files.

Official Graph500 Benchmarks

Follow the steps listed under Getting Benchmark Results to get the appropriate benchmark.cu file. Enable the RUN_FULL_KERNELS flag and disable the RUN_EPOCH_KERNELS flag. Make sure the heterogeneous kernel emitted by the "compiler" is copied (with the same file name) over to src/kernels/heterogeneous.

Clone this wiki locally