A high-performance framework for distributed computation of
The
Given an edge-weighted graph, the goal is to identify
| Algorithm | Approximation Guarantee | Key Features |
|---|---|---|
| kCS | Uses iterative proposals to heaviest neighbors with asynchronous communication. Ensures conflict-free coloring and high-quality kk-dimensional matchings. | |
| kMM | Employs local decisions with conflict handling. Achieves the best performance among the three algorithms. Guarantees a high-quality approximation. | |
| MRepLM | Computes |
|
| MRepS | Computes |
If you use this software, please cite:
Kathrin Hanauer, Sophia Heck, and Stefan Schmid. 2026. DistroMatch: Distributed Disjoint Weighted Matchings in Demand-Aware Reconfigurable Optical Datacenters. In 2026 International Conference on Supercomputing (ICS ’26), July 06–09, 2026, Belfast, United Kingdom. ACM, New York, NY, USA. https://doi.org/10.1145/3797905.3800555
@inproceedings{distromatch,
author = {Kathrin Hanauer, Sophia Heck, Stefan Schmid},
title = {DistroMatch: Distributed Disjoint Weighted Matchings in Demand-Aware Reconfigurable Optical Datacenters},
booktitle = {2026 International Conference on Supercomputing (ICS ’26)},
publisher = {ACM},
year = {2026},
doi = {10.1145/3797905.3800555}
}If you use MRepLM also cite the following paper, as our code uses code from LocalMaxMatching:
@inproceedings{localmaxmatching,
author = {Marcel Birn and Vitaly Osipov and Peter Sanders and Christian Schulz and Nodari Sitchinava},
title = {Efficient Parallel and External Matching},
booktitle = {Euro-Par 2013 Parallel Processing},
series = {Lecture Notes in Computer Science},
volume = {8097},
pages = {659--670},
publisher = {Springer},
year = {2013},
doi = {10.1007/978-3-642-40047-6_66}
}To build the framework, use the provided script, which utilizes cmake for compilation:
./easyCompileRun the framework in a terminal using the following command:
mpirun -np 4 build/Release/DistroMatch -i data/graph.mtx --algo=kCS --k=8 --partitioning=random --seed=0The framework provides a variety of running parameters:
Usage: build/Release/DistroMatch [--help] -i <file> [-o <file>] --algo=VARIANT --k=<int> -p VARIANT --seed=<int> [--ccm_epsilon=<double>]
--help Print help.
-i, --input_file=<file> Path to graph file.
-o, --output_file=<file> Path to .sol output file.
--algo=VARIANT Define the algorithm to solve kEC: [MRep|CPal|kM]
--k=<int> The number of matchings to compute.
-p, --partitioning=VARIANT Define the partitioning used: [metis|umetis|uwmetis|ukahip|random|dwfennel|none]
--seed=<int> Select a seed for the random fuction. [Default: 0]
--ccm_epsilon=<double> In CCM all edges of a vertex v with weight (1-ccm_epsilon)*max_weight_v are considered candidates. Range: [0,1]. Default: 0.1
The repository provides the necessary scripts, workflows, and documentation to reproduce the results presented in our study. Below, we outline the experimental setup, preparation times, and instructions for running the experiments.
The experiments in this repository are designed to evaluate various aspects of algorithms, including:
- Strong Scaling: Evaluating the scalability of algorithms on parallel architectures.
-
Comparison per
$k$ : Comparing performance for different values of$k$ (number of matchings). - Comparison on Synthetic Graphs: Analyzing performance on synthetic R-MAT graphs.
- Comparison on Large Graphs: Benchmarking performance on large-scale real-world graphs.
- Tradeoff Between Time and Weight: Investigating the tradeoff between execution time and solution quality.
The table below summarizes the dependencies to the required for each experiment:
| Experiment | rmat | large | STK | DJ-Match | KaHIP | METIS | |
|---|---|---|---|---|---|---|---|
| Strong Scaling | ✓ (a) | ✓ (b) | |||||
| Comparison per |
✓ | ✓ (b) | ✓ | ✓ | |||
| Comparison on Synthetic Graphs | ✓ | ✓ | ✓ | ||||
| Comparison on Large Graphs | ✓ | ✓ | |||||
| Tradeoff Between Time and Weight | ✓ | ✓ (b) | |||||
| Partitioning | ✓ (a) | ✓ (b) | ✓ | ✓ |
Notes:
- (a) Excludes the largest instance (fbB).
- (b) Only includes R-MAT graphs with
$2^{20}$ vertices.
All datasets required for the experiments can be generated or downloaded using the following script. If you only need specific datasets, you can configure the flags in the script.
./exp/get_graphs/get_graphs.shThe experiments use the following datasets:
- Facebook - Real-World Trace Data: Downloaded from DC Traces.
- RMAT - Synthetic Data: Generated using the R-MAT model (Graph500) with the NetworKit RmatGenerator.
- LARGE - Sparse Real-World Graphs: Sourced from the SuiteSparse Matrix Collection.
The following software is required for running the experiments. Ensure the correct executables are available and properly built in your environment:
- State-of-the-art Offline Algorithms:
Available in the DJ-Match repository
Path to the ex ecutable:../DJ-Match/build/Release/DJMatch - State-of-the-art Streaming Algorithms:
Provided by the authors of the paper (arXiv link). This code is referred to as STK.
Path to the ex ecutable:../GStream-dev/build/apps/kstmatch
Make sure these paths are correctly set up in your environment before running the experiments.
Each experiment follows a standardized workflow consisting of four tasks:
- Generate the execution statements with the correct parameter settings and organize them in a folder structure.
- Execute the experiment by running all the statements generated in
$T_1$ . - Extract the results and store them in a single file.
- Visually represent the results in a plot.
For tasks, we provide shell scripts for each experiment. Below is a list of the experiments and their corresponding scripts:
-
Strong Scaling
If you only want to evaluate scaling without partitioning (this is included in the partitioning experiment), use the following script:./exp/run_scaling.sh
-
Comparison per
$k$
Run this script to compare results for different values of$k$ :./exp/run_comp_benchmark.sh
-
Comparison on Synthetic Graphs
Use this script to evaluate performance on synthetic R-MAT graphs:./exp/run_rmat.sh
-
Comparison on Large Graphs
Use this script to compare performance on large-scale graphs:./exp/run_comp_benchmark_large.sh
-
Tradeoff Between Time and Weight
Run the following script to evaluate the tradeoff between execution time and solution weight:./exp/run_local_max_tradeoff.sh
Sophia Heck - University of Vienna
Kathrin Hanauer - University of Vienna
Stefan Schmid - TU Berlin, Fraunhofer SIT