GraphMineSuite

Design Run Compare Profile

Creating high-performance graph mining algorithms made simple using set algebra

GMS

One code to rule them all

Focus on what really matters; the algorithm. You can easily switch out graph representations, datastructures and preprocessing routines.

template <class SGraph, class Set>
std::vector<Set> algorithm(const SGraph &graph)
{
    //your code
}

Easy Benchmark code setup

Express your benchmarks using our predefined benchmark kernels or write your own. Use verifiers to check the correctness of your code.

BenchmarkKernel(args, graph,
    CliqueCount<SortedSet, SetGraph>,
    CliqueCountVerifier,
    k, "SortedSet", "SortedGraph");

To Set or not to Set

Although GMS emphesis and strength lies on set algebra, we enable a non setbased design approach, too. Our provided representations offer multiple compression schemes and can be combined with neighbourhood permuters.

//Default
CSRGraph graph;
//Set-based
SortedSetGraph::FromCGraph(graph)
RoaringGraph::FromCGraph(graph)
RobinHoodGraph::FromCGraph(graph)
//Non-set-based
builder.csrToKbit(graph)
builder.csrToVarintByteBased(graph)
builder.csrToVarintWordBased(graph)

Profile your code

Profiling is directly embedded in the build pipeline and can be enabled/disabled using flags in the cmake files. GMS offers a simple API to include PAPI (hardware performance counters), which supports OpenMP.

PAPIW::INIT_PARALLEL(PAPI_L2_TCA, PAPI_L3_TCA);
#pragma omp parallel
{
    PAPIW::START();
    //your code
    PAPIW::STOP();
}
PAPIW::PRINT();

Strong Benchmark suite

GMS is build on top of GAPBS and therefore supports various graph formats and synthetic graph generators. Evaluate your code using an intuitive CLI.

$ ./triangle_count -f ../graphs/graph.el
$ ./triangle_count -g kronecker 10 --deg 64
$ ./triangle_count -g uniform 10 --deg 64

Compare against our state of the art base lines

We provide reference implementation of more than 40 baselines. Some of our variations enhance state of the art including:

- Degeneracy reordering (by up to >2x)
- Maximal clique listing (by up to >9x)
- k-clique listing (by 1.1x)
- Subgraph isomorphism (by up to 2.5x)

Publications

1. GraphMineSuite: Enabling High-Performance and Programmable Graph Mining Algorithms with Set Algebra

Maciej Besta, Zur Vonarburg-Shmaria, Yannick Schaffner, Leonardo Schwarz, Grzegorz Kwasniewski, Lukas Gianinazzi, Jakub Beranek, Kacper Janda, Tobias Holenstein, Sebastian Leisinger, Peter Tatkowski, Esref Ozdemir, Adrian Balla, Marcin Copik, Philipp Lindenberger, Pavel Kalvoda, Marek Konieczny, Onur Mutlu, Torsten Hoefler

arXiv:2103.03653 [cs.DC] 2021arXiv

2. High-Performance Parallel Graph Coloring with Strong Guarantees on Work, Depth, and Quality

Maciej Besta, Armon Carigiet, Zur Vonarburg-Shmaria, Kacper Janda, Lukas Gianinazzi, Torsten Hoefler

arXiv:2008.11321 [cs.DC] 2020arXiv

3. SISA: Set-Centric Instruction Set Architecture for Graph Mining on Processing-in-Memory Systems

Maciej Besta, Raghavendra Kanakagiri, Grzegorz Kwasniewski, Rachata Ausavarungnirun, Jakub Beránek, Konstantinos Kanellopoulos, Kacper Janda, Zur Vonarburg-Shmaria, Lukas Gianinazzi, Ioana Stefan, Juan Gómez Luna, Marcin Copik, Lukas Kapp-Schwoerer, Salvatore Di Girolamo, Marek Konieczny, Onur Mutlu, Torsten Hoefler

arXiv:2104.07582 [cs.AR] 2021arXiv

visual data

We are researchers from SPCL @ ETH Zurich

GraphMineSuite and the associated projects are actively developed. As subject of research it will likely include more features in the future. If you are interested in our work contact us via SPCL.

LICENSE
CODE
ETHZ
SPCL
open source

© Copyright 2021. All rights reserved