Planar is a single-machine system for graph analytics by reusing existing PRAM algorithms. It supports both out-of-core and in-memory analytics, and provides a set of graph algorithms, including WCC, SSSP, MST, Coloring, PageRank and Random Walk.
Planar builds, runs, and has been tested on GNU/Linux. It depends on the following libraries:
- C++17 standard library
- CMake (>=2.8)
- Facebook folly library (latest version)
- GoogleTest (>= 1.11.0)
- yaml-cpp (>= 0.6.3)
- liburing (need linux kernel version >= 5.6)
First, install all dependencies. Then, run the following commands to build Planar:
git submodule init
git submodule update
Second, build yaml-cpp library for Planar.
cd third_party/yaml-cpp
mkdir build
cd build
cmake ..
make
Third, install liburing library for Planar.
git clone https://github.com/axboe/liburing.git
cd liburing
./configure
make
sudo make install
Finally, build Planar in project root directory.
./build.sh
After build, you can find the applications binary in root directory bin/planar/
.
To run the applications, you can use the following command:
./bin/planar/wcc_exec -i [input path] -p [parallelism]
other applications are similar.
./bin/planar/sssp_exec -i [input path] -p [parallelism] -source [source vertex id]
./bin/planar/mst_exec -i [input path] -p [parallelism]
./bin/planar/coloring_exec -i [input path] -p [parallelism]
./bin/planar/pagerank_exec -i [input path] -p [parallelism] -iter [iteration]
./bin/planar/random_walk_exec -i [input path] -p [parallelism] -walk [steps]
Planar use customized CSR format.
To get the final CSR format graph, you need to convert the Edgelist format graph file to a basic CSR binary file first.
Then partitioning the CSR graph to multiple subgraphs. The process is: Edgelist -> CSR -> Partitioned CSR
.
./bin/tools/graph_convertor_exec -i [input path] -o [output path] -t edgelistcsv2csrbin
./bin/planar/partitioner_exec -i [input path] -o [output path] -p [partition number] -cut_v [cut vertex number]
We also provide docs for the converter and partitioner, You can follow the tools/docs
and planar/docs
to do this.
For bugs, please raise an issue on GiHub. Questions and comments are also welcome at my email: [email protected].