Graph500 Benchmark: Scalable Kronecker Graph Generator Jeremiah Willcock and Andrew Lumsdaine This directory contains a parallel Kronecker graph generator, as well as a random permutation generator and code to apply a distributed permutation to the endpoints of the elements of an edge list. The benefits of this approach are two-fold: first, the generated graphs and permutations are consistent for a given graph size, initiator, and seed, regardless of shared vs. distributed memory or processor count; and second, the generator detects parallel edges (including those with the endpoints given in the opposite order for an undirected graph) automatically and without needing to store the edges explicitly. Its main disadvantage is that some performance is lost through the use of a more sophisticated pseudo-random number generator (PRNG); if reproducibility is not required, a cheaper PRNG can be used for more performance while keeping the parallel edge detection property. Four Makefiles are provided: Makefile.seq (sequential), Makefile.xmt (Cray XMT), Makefile.omp (OpenMP), and Makefile.mpi (MPI). There are three corresponding generator_test_* programs that demonstrate how to use the generator. The file make_graph.h declares a simplified interface suitable for benchmark implementations; this interface hides many of the parameters that are fixed in the benchmark specification. Most compile-time settings are at the top of graph_generator.h; users should not need to modify most of them, except for possibly data type sizes. Developers of the benchmark specification itself might benefit from playing around with different initiators and other settings, however. Copyright (C) 2009-2010 The Trustees of Indiana University. Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)