Skip to content

FlorentinD/GraphBlasInJavaBenchmarks

Repository files navigation

GraphBLAS in Java Benchmarks

This project contains implementations, benchmarks and visualization used in my master thesis GraphBLAS in the context of Java and in A GraphBLAS implementation in pure Java. It compares existing graph algorithm implementations in GDS and JGraphT against implementations via EJML, graphblas-java-native and the Pregel-API of GDS.

Implementations:

  • EJML-Graph format implementing the Graph API of GDS, which represents the graph by an EJML matrix.

  • Algorithms implemented via EJML and graphblas-java-native:

    • Breadth First Search (LEVEL and PARENT)

    • PageRank (weighted and unweighted)

    • Triangle Count (global and vertex-wise)

  • Format converters:

    • GDS graph → EJML-Graph | JGraphT graph | graphblas-java-native matrix

    • EJML matrix → graphblas-java-native matrix

Benchmarks:

  • Semiring and Mask in EJML and graphblas-java-native via mxm and column-wise reduce

  • Graph algorithms BFS, (weighted) PageRank, and Triangle Count

Setting up the project

Relies on locally build fork of EJML

Prerequisites

  • java (tested with openjdk 11.0.8 via sdkman)

  • mvn

  • git

# starting from this directory
cd ..

# ejml (my fork as not everythink is in the main-repo)
git clone [email protected]:FlorentinD/ejml.git
cd ejml/
git checkout mask_rebased
./gradlew autogenerate
./gradlew install

# graphblas-java-native
git clone --recurse-submodules https://github.com/FlorentinD/graphblas-java-native
git checkout graphBLAS_4_0_3
cd graphblas-java-native/
git submodule update --init --recursive
cd GraphBLAS/
make JOBS=32
sudo make install -j32 INSTALL=/usr/local/
cd ..
# on linux `sudo ldconfig` is needed
mvn clean install -Dgpg.skip

# Package gds pregel examples
# (1) copy pregel examples into bootstrap project
# (2) Create shadowjar
# (3) copy jar into /libs folder

# run benchmarks (exclude, include benchmarks via build.gradle)
# Specify the dataset directory containing neo4j db dumps of your dataset
# Change the org.github.florentind.bench.DataSetManager.DATA_SETS map according to your datasets
cd GraphBlasInJavaBenchmarks/
/gradlew -PmainClass=benchmarkClass -PdatasetDir=.. simpleBenchmark

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published