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. |