9 namespace orchestration {
65 int numberOfTasksToFuse,
int targetDevice
84 int deviceForFusedTasks,
85 int maxNestedConcurrency,
99 double averageNumberOfPendingReadyTasksPerProcessTaskExecution,
100 double probabilityThatTaskIsCompleted
A hard coded strategy how to handle tasks and task fusion.
FusionImplementation _fusionImplementation
virtual void startBSPSection(int nestedParallelismLevel) override
Notifies the strategy that we enter a BSP section.
static constexpr int NoNestedParallelism
Hardcoded(int minTasksToFuse, int maxTasksToFuse, int deviceForFusedTasks, int maxNestedConcurrency, FusionImplementation fusionImplementation)
Construct hardcoded scheme.
static Hardcoded * createNative()
Fall back to native tasking.
virtual void updateFuseStatistics(int taskType, int queueSize, double averageNumberOfPendingReadyTasksPerProcessTaskExecution, double probabilityThatTaskIsCompleted) override
Update task fusion status.
virtual FuseInstruction fuse(int taskType) override
How many tasks to fuse and to which device to deploy.
static Hardcoded * createBSP()
If you want to use sole BSP, you effectively switch off the tasking.
virtual void endBSPSection(int nestedParallelismLevel) override
Notifies the strategy that we leave a BSP (fork-join) section.
static Hardcoded * createFuseAll(int numberOfTasksToFuse, int targetDevice)
Always fuse all tasks possible.
virtual ~Hardcoded()=default
int _maxNestedConcurrency
virtual ExecutionPolicy paralleliseForkJoinSection(int nestedParallelismLevel, int numberOfTasks, int taskType) override
Determine how to handle/realise parallelisation within fork/join region.
virtual FusionImplementation getFusionImplementation() const override
Determine how the implementation handles fusable tasks.
Interface for any task orchestration.
ExecutionPolicy
Provide hint of execution policy.
FusionImplementation
Control how the fusion is implemented.
Have to include this header, as I need access to the SYCL_EXTERNAL keyword.