TritonPart is a constraints-driven general hypergraph partitioner. Currently our repo is under active development.
- OpenROAD includes the source code for TritonPart. The codes are available in OpenROAD/src/par.
- titan23_benchmark provides the titan23 benchmark suites.
- regression provides the scripts for benchmarking TritonPart.
- Start of the art multiple-constraints driven partitioning “multi-tool”
- Optimizes cost function based on user requirement
- Permissive open-source license
- Solves multi-way partitioning with following features:
- Multidimensional weights on vertices and hyperedges
- Multilevel coarsening and refinement framework
- Fixed vertices
- Timing-driven partitioning framework
- Community constraints: Groups of vertices need to be in same partition
The first step, independent of the build method, is to download the repository:
- We implement our TritonPart based on OpenROAD app. Please check the dependencies of OpenROAD app first.
- We use Google OR-Tools and CPLEX as our ILP solver. Please install Google OR-Tools following the instructions and CPLEX.
- Please unload Anaconda from the environment.
- Run following scripts
mkdir build
cd build
cmake ../OpenROAD/
make
The example tcl command is as follows.
triton_part_hypergraph -hypergraph_file des90.hgr -num_parts 3 -balance_constraint 2 -seed 2
You can run this example with following comands.
cd test
source run.sh
The example tcl command is as follows.
triton_part_hypergraph -hypergraph_file sample.hgr -num_parts 2 -balance_constraint 20 -seed 2 -fixed_file sample.fix
You can run this example with following comands.
cd test
source run_fix.sh
The example tcl command is as follows.
triton_part_hypergraph -hypergraph_file sample.hgr -num_parts 2 -balance_constraint 20 -seed 2 \
-placement_file sample.emb -placement_wt_factors { 1.0 1.0 } -placement_dimension 2
You can run this example with following comands.
cd test
source run_emb.sh
We recommend users to specify their parameters by modifying the regression.py from Line 131 to Line 148. You can run the regression scripts as following:
python regression.py | tee summary.log