Adaptively subdivides a TRange based on demand from the scheduler.
More...
#include <AdaptivePartitioner.h>
|
using | splitter_type = EvenSplitter |
|
|
GTS_INLINE | AdaptivePartitioner (uint16_t initialMaxSplitDepth=4) |
| Constructs an AdaptivePartitioner object and defines how deep is can split a Range object. More...
|
|
template<typename TRange > |
GTS_INLINE | AdaptivePartitioner (AdaptivePartitioner &other, uint16_t depth, TRange const &) |
|
template<typename TPattern , typename TRange > |
GTS_INLINE Task * | execute (TaskContext const &ctx, TPattern *pPattern, TRange &range) |
|
template<typename TPattern , typename TRange > |
GTS_INLINE void | initialOffer (TaskContext const &ctx, TPattern *pPattern, TRange &range, splitter_type const &splitter) |
|
template<typename TPattern , typename TRange > |
GTS_INLINE Task * | doExecute (TaskContext const &ctx, TPattern *pPattern, TRange &range, splitter_type const &splitter) |
|
template<typename TPattern , typename TRange > |
GTS_INLINE void | balanceAndExecute (TaskContext const &ctx, TPattern *pPattern, TRange &range, splitter_type const &splitter) |
|
template<typename TRange > |
GTS_INLINE bool | hasDemand (TaskContext const &ctx) |
|
template<typename TRange > |
GTS_INLINE void | adjustIfStolen (Task *pThisTask) |
|
template<typename TRange > |
GTS_INLINE void | initialize (uint16_t workerCount) |
|
template<typename TRange > |
GTS_INLINE void | split () |
|
template<typename TRange > |
GTS_INLINE void | increaseDepth () |
|
GTS_INLINE bool | isDivisible () |
|
GTS_INLINE uint16_t | maxBalancedSplitDepth () const |
|
|
template<typename TRange > |
static GTS_INLINE uint16_t | getSplit (AdaptivePartitioner &partitioner) |
|
Adaptively subdivides a TRange based on demand from the scheduler.
◆ AdaptivePartitioner()
GTS_INLINE AdaptivePartitioner::AdaptivePartitioner |
( |
uint16_t |
initialMaxSplitDepth = 4 | ) |
|
|
inlineexplicit |
Constructs an AdaptivePartitioner object and defines how deep is can split a Range object.
- Parameters
-
initialMaxSplitDepth | Defines how deep the initial binary tree generated by subdividing the a Range can get. The default value is good for most situations. The caller can increase the value for more irregular workloads, or decrease the value for more regular workloads. |