Closed ombhilare999 closed 8 months ago
For the grouping information, each line consists of vertices belonging to the same group. Please note that all vertex indices are one-indexed (similar to hMETIS) .
For example:
1 3 5 6
2 4 9 11
7 8 10
In this example:
Please create a file in this format and then use the -group_file
option to specify its path when running TritonPart.
In this situation, the group file that you are passing looks to be the correct way to pass grouping arguments.
Can you add the testcase, partition file and log file to this thread so that I can replicate this on my side?
Thanks a lot for your assistance. TritonPart is indeed an amazing tool.
Could you please share the community file format too.
Thank you once again.
The community file information for a hypergraph containing, say 10 vertices is as follows:
0
0
1
1
2
2
2
3
3
3
In this example:
Please note that the file must contain N
lines for N
vertices in your hypergraph. Hope this helps.
Thanks -- Bodhi
Thank you. Regarding the group file format, if I start the group numbers from 0 i.e
2 0
21 0
Then I see a core dumped error:
bhilareo@TOFC:~/winter/ece1755/project/TritonPart/test/noc-cgra$ sh run.sh riken_benchmarks/conv_unroll.hgr riken_benchmarks/conv_unroll.group 1
OpenROAD c67516299965fcf3820d806935b1805ba9cf65ed
This program is licensed under the BSD-3 license. See the LICENSE file for details.
Components of this program may be licensed under more restrictive licenses which must be honored.
========================================
[STATUS] Starting TritonPart Partitioner
========================================
[INFO PAR-0167] Partitioning parameters****
[INFO PAR-0002] Number of partitions = 16
[INFO PAR-0003] UBfactor = 100.0
[INFO PAR-0004] Seed = 1
[INFO PAR-0005] Vertex dimensions = 3
[INFO PAR-0006] Hyperedge dimensions = 1
[INFO PAR-0007] Placement dimensions = 0
[INFO PAR-0008] Hypergraph file = riken_benchmarks/conv_unroll.hgr
[INFO PAR-0009] Solution file = riken_benchmarks/conv_unroll.hgr.part.16
[INFO PAR-0010] Global net threshold = 1000
[INFO PAR-0013] Group file = riken_benchmarks/conv_unroll.group
[WARNING PAR-0119] Reset the timing_aware_flag to false. Timing-driven mode is not supported
[INFO PAR-0171] Hypergraph Information**
[INFO PAR-0172] Vertices = 36
[INFO PAR-0173] Hyperedges = 35
[INFO PAR-0077] hyperedge weight factor : [ 1.000000 ]
[INFO PAR-0078] vertex weight factor : [ 1.000000 1.000000 1.000000 ]
[INFO PAR-0079] placement weight factor : [ ]
[INFO PAR-0080] net_timing_factor : 1.0
[INFO PAR-0081] path_timing_factor : 1.0
[INFO PAR-0082] path_snaking_factor : 1.0
[INFO PAR-0083] timing_exp_factor : 2.0
[INFO PAR-0084] coarsen order : RANDOM
[INFO PAR-0085] thr_coarsen_hyperedge_size_skip : 200
[INFO PAR-0086] thr_coarsen_vertices : 10
[INFO PAR-0087] thr_coarsen_hyperedges : 50
[INFO PAR-0088] coarsening_ratio : 1.6
[INFO PAR-0089] max_coarsen_iters : 30
[INFO PAR-0090] adj_diff_ratio : 0.0001
[INFO PAR-0091] min_num_vertcies_each_part : 1
[INFO PAR-0092] num_initial_solutions : 50
[INFO PAR-0093] num_best_initial_solutions : 10
[INFO PAR-0094] refine_iters : 10
[INFO PAR-0095] max_moves (FM or greedy refinement) : 60
[INFO PAR-0096] early_stop_ratio : 0.5
[INFO PAR-0097] total_corking_passes : 25
[INFO PAR-0098] v_cycle_flag : true
[INFO PAR-0099] max_num_vcycle : 1
[INFO PAR-0100] num_coarsen_solutions : 3
[INFO PAR-0101] num_vertices_threshold_ilp : 50
Signal modified_vertex_balance:
16 4 9.5625
/usr/include/c++/11/bits/stl_vector.h:1045: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::reference = int&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__n < this->size()' failed.
6 received
Stack trace:
0# 0x000055601494082B in ../../build/src/openroad
1# 0x00007FA4DE642520 in /lib/x86_64-linux-gnu/libc.so.6
2# pthread_kill in /lib/x86_64-linux-gnu/libc.so.6
3# raise in /lib/x86_64-linux-gnu/libc.so.6
4# abort in /lib/x86_64-linux-gnu/libc.so.6
5# 0x000055601493E6D8 in ../../build/src/openroad
6# par::Coarsener::ClusterBasedGroupInfo(std::shared_ptr<par::Hypergraph> const&, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&, std::vector<int, std::allocator<int> >&, std::vector<std::vector<float, std::allocator<float> >, std::allocator<std::vector<float, std::allocator<float> > > >&, std::vector<int, std::allocator<int> >&, std::vector<int, std::allocator<int> >&, std::vector<std::vector<float, std::allocator<float> >, std::allocator<std::vector<float, std::allocator<float> > > >&) const in ../../build/src/openroad
7# par::Coarsener::GroupVertices(std::shared_ptr<par::Hypergraph> const&, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > const&) const in ../../build/src/openroad
8# par::TritonPart::MultiLevelPartition() in ../../build/src/openroad
9# par::TritonPart::PartitionHypergraph(unsigned int, float, unsigned int, int, int, int, char const*, char const*, char const*, char const*, char const*) in ../../build/src/openroad
10# par::PartitionMgr::tritonPartHypergraph(unsigned int, float, unsigned int, int, int, int, char const*, char const*, char const*, char const*, char const*, std::vector<float, std::allocator<float> > const&, std::vector<float, std::allocator<float> > const&, std::vector<float, std::allocator<float> > const&, int, int, int, float, int, float, int, int, int, int, int, float, int, bool, int, int, int, int) in ../../build/src/openroad
11# 0x00005560162DDA91 in ../../build/src/openroad
12# TclNRRunCallbacks in /lib/x86_64-linux-gnu/libtcl8.6.so
13# 0x00007FA4E2DD0028 in /lib/x86_64-linux-gnu/libtcl8.6.so
14# Tcl_EvalEx in /lib/x86_64-linux-gnu/libtcl8.6.so
15# Tcl_Eval in /lib/x86_64-linux-gnu/libtcl8.6.so
16# sta::sourceTclFile(char const*, bool, bool, Tcl_Interp*) in ../../build/src/openroad
17# ord::tclAppInit(Tcl_Interp*) in ../../build/src/openroad
18# Tcl_MainEx in /lib/x86_64-linux-gnu/libtcl8.6.so
19# main in ../../build/src/openroad
20# 0x00007FA4DE629D90 in /lib/x86_64-linux-gnu/libc.so.6
21# __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
22# _start in ../../build/src/openroad
Aborted (core dumped)
I see that I need to define group numbers from 1 onwards:
2 1
21 1
4 2
22 2
6 3
23 3
Note that my vertices in .hgr
format are starting from 1 as well. (I followed the format of sample hgr given under tests directory).
In this manner, when I run TritonPart, I don't see any errors. However, when I check the group constraint flag in TritonPart logs, it finally says that it hasn't been met. I verified it manually, and it appears to be as intended, so this appears to be a false result.
Satisfy the balance constraint : true
Satisfy the group constraint : false
Satisfy the fixed vertices constraint : true
[INFO PAR-0109] The runtime of multi-level partitioner : 93.41308312800001 seconds
I'll attempt further debugging on my end by playing with the group_constraint checker in `Evaluator.cpp}. I will share my findings soon in this thread. Please let me know if this is a known error.
Thank you for your help.
For recreating this issue. Here are the steps I have followed:
0. Using sample.hgr as an input graph:
1. Then I have developed following group file for above input hgr:
sample.group:
[Note that starting with group with 0 breaks the TritonPart]
1 1
2 1
3 2
4 2
5 2
Vertices 1,2 in Group 1 and vertices 3,4 and 5 in Group 2. (first two vertices in same group and last three vertices in another group)
2. Now to run this let's first add group_file in the tcl input to openroad. Modification in run_openroad.tcl under tests:
triton_part_hypergraph -hypergraph_file sample.hgr -group_file sample.group -num_parts 2 -balance_constraint 10 -seed 2
exit
4. Running this on TritonPart:
bhilareo@TOFC:~/winter/ece1755/project$ cd TritonPart/test/
bhilareo@TOFC:~/winter/ece1755/project/TritonPart/test$ ../build/src/openroad run_openroad.tcl | tee run.log
5. Results:
Satisfy the balance constraint : true
Satisfy the group constraint : false
Satisfy the fixed vertices constraint : true
[INFO PAR-0109] The runtime of multi-level partitioner : 0.01059384 seconds
===============================================
Exiting TritonPart
bhilareo@TOFC:~/winter/ece1755/project/TritonPart/test$
0
0
1
1
1
Hi team,
Can you please point me to acceptable group file format? I could not find any mentioned reference on the openroad document website.
In the above documentation it forwards to hMETIS manual but as far I know last updated hMETIS did not supported the group constraint feature. It only accepts
input hypergraph file and fixed file
.It would really great if I could any information about group file.
As of now I was using following format, but it seems not working as TritonPart places them in different partitions and at the same time prints that it satisfied the group constraint. So, I believe I must have given non-acceptable group information.
Thanks a lot.