Skip to content
/ BuffCut Public
forked from KaHIP/HeiStream

A buffered streaming graph partitioner using prioritized buffering and multilevel refinement. Robust against adversarial node orderings.

License

Notifications You must be signed in to change notification settings

libaum/BuffCut

 
 

Repository files navigation

BuffCut

BuffCut is a buffered streaming graph partitioner developed as part of my master’s thesis. It builds on the HeiStream framework and leverages prioritized buffering and multilevel refinement to achieve more robust partition quality, especially under adversarial node orderings.


🧩 Concept

BuffCut processes the input graph as a stream and keeps a configurable buffer of recently seen nodes. Nodes are scored and selected for partitioning in small batches using a multilevel partitioning strategy.

  • Increasing the buffer size and batch size improves partition quality.
  • Larger values also increase memory consumption.
  • Typically, a ratio of about 1:8 to 1:16 (batch size : buffer size) works well.
  • The ghost neighbor mechanism can be enabled to improve partition quality.

🚀 Minimal Example

Building BuffCut

To build the software, run

./compile.sh

After building the project, two executables are available in deploy/:

  • buffcut – serial version
  • par_buffcut – parallel version (faster, slightly higher memory usage)

Basic Usage

To partition a graph in METIS format using the standard parameters of BuffCut, run

./par_buffcut <graph_file> --k=4

Adjusting buffer and batch size (serial):

./par_buffcut <graph file> --k=4 --batch_size=16384 --buffer_size=131072

Ghost neighbors enabled:

./par_buffcut <graph file> --k=4 --batch_size=16384 --buffer_size=131072 --enable_ghost

For a complete list of parameters alongside with descriptions, run:

./par_buffcut --help

For a description of the graph format, please have a look at the KaHiP manual.

Note:

  • The program stores the results of the executed command in a flatbuffer .bin file identified by graph_k_batchsize_buffersize.bin if you pass the flag write_log.

About

A buffered streaming graph partitioner using prioritized buffering and multilevel refinement. Robust against adversarial node orderings.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.0%
  • Other 1.0%