Betweenness Centrality (BC) is a graph analytics application that is part of the Pannotia benchmark suite. It is used to calculate betweenness centrality scores for all the vertices in a graph. The provided version is for use with the gpu-compute model of gem5. Thus, it has been ported from the prior CUDA and OpenCL variants to HIP, and validated on a Vega-class AMD GPU.
Compiling BC, compiling the GCN3_X86/Vega_X86 versions of gem5, and running BC on gem5 is dependent on the gcn-gpu docker image, util/dockerfiles/gcn-gpu/Dockerfile
on the gem5 stable branch.
To compile BC:
cd src/gpu/pannotia/bc docker run --rm -v ${PWD}:${PWD} -w ${PWD} -u $UID:$GID gcr.io/gem5-test/gcn-gpu make gem5-fusion
If you use the Makefile.default file instead, the Makefile will generate code designed to run on the real GPU instead. Moreover, note that Makefile.gem5-fusion requires you to set the GEM5_ROOT variable (either on the command line or by modifying the Makefile), because the Pannotia applications have been updated to use m5ops. By default, the Makefile builds for gfx801 and gfx803, and is placed in the src/gpu/pannotia/bc/bin folder.
BC is a GPU application, which requires that gem5 is built with the GCN3_X86 (or Vega_X86, although this has been less heavily tested) architecture. The test is run with the GCN3_X86 gem5 variant, compiled using the gcn-gpu docker image:
git clone https://gem5.googlesource.com/public/gem5 cd gem5 docker run -u $UID:$GID --volume $(pwd):$(pwd) -w $(pwd) gcr.io/gem5-test/gcn-gpu:latest scons build/GCN3_X86/gem5.opt -j <num cores>
wget http://dist.gem5.org/dist/develop/datasets/pannotia/bc/1k_128k.gr docker run --rm -v ${PWD}:${PWD} -w ${PWD} -u $UID:$GID gcr.io/gem5-test/gcn-gpu gem5/build/GCN3_X86/gem5.opt gem5/configs/example/apu_se.py -n3 --mem-size=8GB --benchmark-root=gem5-resources/src/gpu/pannotia/bc/bin -c bc.gem5 --options="1k_128k.gr"
Note that the datasets from the original Pannotia suite have been uploaded to: http://dist.gem5.org/dist/develop/datasets/pannotia. We recommend you start with the 1k_128k.gr input (http://dist.gem5.org/dist/develop/datasets/pannotia/bc/1k_128k.gr), as this is the smallest input designed to run with BC.
A pre-built binary will be added soon.