@@ -12,10 +12,9 @@ namespace hipo {
1212
1313// info about subtrees in the parallel layer
1414struct SubtreeInfo {
15- Int start; // first node in subtree
16- Int end; // first node not in subtree
17- int64_t stack; // minimum stack size
18- double ops_fraction; // fraction of operations in subtree
15+ Int start; // first node in subtree
16+ Int end; // first node not in subtree
17+ int64_t stack; // minimum stack size
1918};
2019
2120// Symbolic factorisation object
@@ -123,6 +122,12 @@ class Symbolic {
123122 // layer
124123 std::set<Int> smallSubtrees_;
125124
125+ // Information about how to divide small subtrees among threads.
126+ // A task is created that processes the subtrees numbered
127+ // smallSubtreesStart[i] to smallSubtreesStart[i+1]. These subtrees have a
128+ // total number of operations between 5% and 6% of the total operations.
129+ std::vector<Int> smallSubtreesStart_;
130+
126131 // Information about number of entries
127132 int64_t serial_stack_size_, parallel_stack_size_, factors_total_entries_;
128133 int64_t root_stack_entries_;
@@ -162,6 +167,7 @@ class Symbolic {
162167 const std::set<Int>& aboveLayer () const ;
163168 const std::set<Int>& smallSubtrees () const ;
164169 const std::map<Int, Int>& layerIndex () const ;
170+ const std::vector<Int>& smallSubtreesStart () const ;
165171
166172 void print (const Log& log, bool verbose = false ) const ;
167173};
0 commit comments