The Galois GPU Compiler

This is a pre-release page for the Galois GPU (CUDA) compiler. Last updated: April 25, 2019.

This version has been updated for the latest library and compiler versions, but is otherwise unchanged. It is in maintenance-only mode.

Obtaining

Download:
  1. The precompiled benchmarks and runtime (if you only want to run the applications) OR the full compiler
  2. The input data files and reference outputs (3 GB) for all benchmarks
  3. The bmk2 automated system to run, verify and obtain performance numbers
  4. The configuration files for bmk2
Additionally, you'll need CUB and ModernGPU (v1.1 only!) to compile the GGC runtime and benchmarks.

Installation

The updated version runs using CUDA 10.0 and runtime. Note that mst-wl-test will not run on CUDA > 7.0/7.5 due to bugs in the nvcc compiler.

You'll also need zlib header files. (zlib1g-dev or zlib-devel)

Unpack the downloaded files.

Switch to the directory containing the benchmarks and runtime.

Add links to CUB and MGPU:

  1. cd rt/include
  2. ln -s /path/to/cub-x.y.z/cub
  3. ln -s /path/to/moderngpu/ mgpu
  4. cd ../..

Running pre-compiled benchmarks

If you downloaded ggc-bmks.tar.bz2, run make rt to compile the runtime.

Now, you can compile individual benchmarks like:

$ cd gen-unoptimized
$ cd bfs-wl
$ make

Running the compiler

If you downloaded ggc.tar.bz2, run make to compile the runtime and benchmarks.

Now, you can compile individual benchmarks like:

$ cd gensrc
$ cd bfs-wl
$ make

Note, by default, make produces unoptimized benchmarks.

Execute make -C src -f Makefile.eval best to generate the best configuration (which is what we used, you may have to explore to find out what the best configuration for your setup isx).

Running

Execute the test binary created by most benchmarks:
$ cd gen-unoptimized
$ cd bfs-wl
$ ./test /path/to/inputgraph -o /path/to/output
You can automate running the benchmarks, see README.bmk2 for further instructions.