Graph500 Benchmark Code for Energy Measurements

The original Graph500 code runs 64 iterations of a BFS-validate loop. The BFS steps are typically an order of magnitude faster than the validation steps and often only take in the order of seconds. To get a clear measurement of the BFS energy consumption only, the modified code runs only the BFS loop (without validation) for a specified number of seconds (repeating the same 64 BFS searches (same start vertices) as the actual benchmark). After the energy measurement loop is finished, the official Graph500 code is run (producing a number legal for submission).

The time to run the energy loop is passed as the third (unnamed) parameter. If no energy time (or 0) is specified, then the execution is identical to the original benchmark.

Download the code

Version 3.0.0 has energy loops integrated( to be enabled by defining macro at compile time)

Running the code
The original Graph 500 code runs several BFS searches with one check after each search. Each iteration is shorter than the time resolution of many power measurement devices. Thus, the Green Graph 500 code offers one more optional parameter that allows the user to specify the time for running run the BFS repeatedly in order to measure power consumption with low-resolution meters.

The MPI version can be started with:

mpiexec -n 2 ./graph500_mpi_simple 10 16 600

To run the measurement for 10 minutes. The benchmark will output the start and end-time for the energy measurement. The measurement can be performed anytime during this interval (after making sure all components are warmed up as stated in the rules).

Please contact us using the form above if you have any questions!