This repository contains the source code of SiskinCC and RobinCC, distributed Connected Components algorithms. The source code uses MPI and OpenMP. The implementation incorporates some components from the LaganLighter.
On Optimizing Resource Utilization in Distributed Connected Components
git clone https://github.com/MohsenKoohi/SiPaR-SiskinCC-RobinCC.git --recursive
git pull --recurse-submodulesor- You may set recursive submodule update globally using
git config --global submodule.recurse trueand thengit pullfetches all updates.
- Libraries:
mpi,openmp, andlibnuma - Compiler:
gccwith a version greater than 9 are required. - For using ParaGrapher:
JDKwith a version greater than 15 andlibfuse. unzip,bc, andwget.
- Make sure the requried libraries are accessible through
$LD_LIBRARY_PATH. - Allocating machines in SLURM:
- Interactive allocation:
- Mainly used for development and/or executing a single dataset.
- A sample execution of algirthms for cnr-2000 in WebGraph format:
salloc -p partition-name -N number_of_machines --exclusive -t max_exec_time --mem 0make siskincc_samplemake robincc_sample
- Batch allocation:
- Mainly used for processing a set of datasets.
- SiskinCC:
salloc -p partition -N number_of_machines --exclusive -t max_exec_time --mem 0 ./launcher.sh alg=alg1_siskincc -df=/path/to/data-folders - RobinCC:
salloc -p partition -N number_of_machines --exclusive -t max_exec_time --mem 0 ./launcher.sh alg=alg2_robincc -df=/path/to/data-folders - An example:

- Interactive allocation:
- Cleaning:
mpiexec --report-bindings -n $SLURM_NNODES -npernode 1 -oversubscribe make clean
- CompBin format, using WG2CompBin library, and
- WebGraph format, using ParaGrapher library .
Please refer to Graph Loading Documentation.
Please refer to Launcher Script Documentaion.
@article{SiskinCC_RobinCC,
title={On Optimizing Resource Utilization in Distributed Connected Components},
author=Mohsen {Koohi Esfahani},
year={2025},
eprint={2507.03695},
archivePrefix={arXiv},
url={https://arxiv.org/abs/2507.03695},
doi={10.48550/arXiv.2507.03695}
}
If you receive wrong results or you are suspicious about parts of the code, please contact us.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.