9 namespace orchestration {
67 int numberOfTasksToFuse,
bool fuseImmediately,
bool processTasksWhileWaitingInBSPArea,
int targetDevice
76 int numberOfTasksToHoldBack,
79 int deviceForFusedTasks,
80 bool fuseTasksImmediatelyWhenSpawned,
81 int maxNestedConcurrency
86 virtual void endBSPSection(
int nestedParallelismLevel)
override;
94 double averageNumberOfPendingReadyTasksPerProcessTaskExecution
A hard coded strategy that can realise a few standard tasking patterns.
bool _fuseTasksImmediatelyWhenSpawned
virtual void endBSPSection(int nestedParallelismLevel) override
Notifies the strategy that we leave a BSP (fork-join) section.
static Hardcoded * createFuseAll(int numberOfTasksToFuse, bool fuseImmediately, bool processTasksWhileWaitingInBSPArea, int targetDevice)
Create a strategy where tasks are always fused if possible given the configuration constraints.
int _numberOfTasksToHoldBack
virtual void updateFuseStatistics(int taskType, int queueSize, double averageNumberOfPendingReadyTasksPerProcessTaskExecution) override
virtual FuseInstruction fuse(int taskType) override
How many tasks shall system hold back from tasking runtime in user-defined queues.
virtual void startBSPSection(int nestedParallelismLevel) override
Notifies the strategy that we enter a BSP section.
virtual ExecutionPolicy paralleliseForkJoinSection(int nestedParallelismLevel, int numberOfTasks, int taskType) override
Determine how to handle/realise parallelisation within fork/join region.
static Hardcoded * createNative()
Fall back to native tasking.
virtual ~Hardcoded()=default
static Hardcoded * createBSP()
If you want to use sole BSP, you effectively switch off the tasking.
Hardcoded(int numberOfTasksToHoldBack, int minTasksToFuse, int maxTasksToFuse, int deviceForFusedTasks, bool fuseTasksImmediatelyWhenSpawned, int maxNestedConcurrency)
Construct hardcoded scheme.
static Hardcoded * createBackfill()
Backfill strategy from the IWOMP paper.
int _maxNestedConcurrency
Interface for any task orchestration.
ExecutionPolicy
Provide hint of execution policy.
Have to include this header, as I need access to the SYCL_EXTERNAL keyword.