-
Notifications
You must be signed in to change notification settings - Fork 767
Open
Labels
mplMacro PlacementMacro Placement
Description
Description
There's zero progress output from macro placement today, but this is something that can run for a long time. 15 minutes easily, 2 hours and counting for a futile case I have locally with no insight into what I need to do differently.
I find it surprising that so much time is spent in [kernel], I would have expected all time to have been spent in user code... Weird...
Deeply recursive dataFlowDFSMacroPin function? Perhaps rewrite to iterative?
Samples: 253K of event 'cycles:P', 4000 Hz, Event count (approx.): 80937553531 lost: 0/0 drop: 0/0
Overhead Shared Object Symbol
35,80% openroad [.] mpl::ClusteringEngine::dataFlowDFSMacroPin(int, int, mpl::Vertices
29,01% [kernel] [k] 0xffffffffaf82420b
5,85% [kernel] [k] 0xffffffffaf824a93
4,11% openroad [.] odb::compare_by_id(odb::dbObject const*, odb::dbObject const*)
3,69% openroad [.] std::pair<std::_Rb_tree_iterator<odb::dbInst*>, bool> std::_Rb_tre
2,79% openroad [.] odb::dbObject::getId() const
1,15% libc.so.6 [.] malloc
0,87% libstdc++.so.6.0.30 [.] std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*,
0,84% libjvm.so [.] XBarrier::mark_barrier_on_oop_slow_path(unsigned long)
0,41% libjvm.so [.] XMark::mark_and_follow(XMarkContext*, XMarkStackEntry)
0,37% openroad [.] std::_Rb_tree_node<odb::dbInst*>* std::_Rb_tree<odb::dbInst*, odb:
0,34% [kernel] [k] 0xffffffffaf8150e7
0,24% libjvm.so [.] void OopOopIterateDispatch<XMarkBarrierOopClosure<false> >::Table:
0,21% [kernel] [k] 0xffffffffaf8360a0
0,17% openroad [.] std::_Rb_tree<odb::dbInst*, odb::dbInst*, std::_Identity<odb::dbIn
0,16% libstdc++.so.6.0.30 [.] operator new(unsigned long)
0,13% libjvm.so [.] XMark::follow_object(oopDesc*, bool)
0,12% libc.so.6 [.] 0x00000000000a29a8
mpl::ClusteringEngine::dataFlowDFSMacroPin(int, int, mpl::VerticesMaps const&, mpl::DataFlowHypergraph const&, std::vector<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>, std::allocator<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>>>&, std::vector<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>, std::allocator<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>>>&, std::vector<bool, std::allocator<bool>>&, bool) (@mpl::ClusteringEngine::dataFlowDFSMacroPin(int, int, mpl::VerticesMaps const&, mpl::DataFlowHypergraph const&, std::vector<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>, std::allocator<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>>>&, std::vector<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>, std::allocator<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>>>&, std::vector<bool, std::allocator<bool>>&, bool):78)
[deleted 100s of levels]
mpl::ClusteringEngine::dataFlowDFSMacroPin(int, int, mpl::VerticesMaps const&, mpl::DataFlowHypergraph const&, std::vector<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>, std::allocator<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>>>&, std::vector<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>, std::allocator<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>>>&, std::vector<bool, std::allocator<bool>>&, bool) (@mpl::ClusteringEngine::dataFlowDFSMacroPin(int, int, mpl::VerticesMaps const&, mpl::DataFlowHypergraph const&, std::vector<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>, std::allocator<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>>>&, std::vector<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>, std::allocator<std::set<odb::dbInst*, std::less<odb::dbInst*>, std::allocator<odb::dbInst*>>>>&, std::vector<bool, std::allocator<bool>>&, bool):126)
mpl::ClusteringEngine::createDataFlow() (@mpl::ClusteringEngine::createDataFlow():364)
mpl::ClusteringEngine::run() (@mpl::ClusteringEngine::run():38)
mpl::HierRTLMP::runMultilevelAutoclustering() (@mpl::HierRTLMP::runMultilevelAutoclustering():190)
mpl::HierRTLMP::run() (@mpl::HierRTLMP::run():12)
mpl::MacroPlacer::place(int, int, int, int, int, float, int, float, int, int, int, odb::Rect, float, float, float, float, float, float, float, float, float, float, float, char const*, bool) (@mpl::MacroPlacer::place(int, int, int, int, int, float, int, float, int, int, int, odb::Rect, float, float, float, float, float, float, float, float, float, float, float, char const*, bool):110)
_wrap_rtl_macro_placer_cmd (@_wrap_rtl_macro_placer_cmd:453)
TclNRRunCallbacks (@TclNRRunCallbacks:37)
___lldb_unnamed_symbol1504 (@___lldb_unnamed_symbol1504:315)
Tcl_EvalEx (@Tcl_EvalEx:9)
Tcl_Eval (@Tcl_Eval:11)
Suggested Solution
Some very limited progress output.
Additional Context
No response
Metadata
Metadata
Assignees
Labels
mplMacro PlacementMacro Placement