7 namespace orchestration {
335 return "(#device=" + std::to_string(
device) +
",min=" + std::to_string(
minTasks)
336 +
",max=" + std::to_string(
maxTasks) +
")";
375 double averageNumberOfReadyTasksPerProcessTaskExecution,
376 double probabilityThatTaskIsCompleted
Interface for any task orchestration.
static constexpr int EndOfBSPSection
virtual FuseInstruction fuse(int taskType)=0
How many tasks to fuse and to which device to deploy.
virtual FusionImplementation getFusionImplementation() const =0
Determine how the implementation handles fusable tasks.
virtual ~Strategy()=default
virtual void updateFuseStatistics(int taskType, int queueSize, double averageNumberOfReadyTasksPerProcessTaskExecution, double probabilityThatTaskIsCompleted)=0
Update task fusion status.
virtual ExecutionPolicy paralleliseForkJoinSection(int nestedParallelismLevel, int numberOfTasks, int taskType)=0
Determine how to handle/realise parallelisation within fork/join region.
virtual void startBSPSection(int nestedParallelismLevel)=0
Notifies the strategy that we enter a BSP section.
virtual void endBSPSection(int nestedParallelismLevel)=0
Notifies the strategy that we leave a BSP (fork-join) section.
ExecutionPolicy
Provide hint of execution policy.
Strategy * createDefaultStrategy()
Default strategy.
FusionImplementation
Control how the fusion is implemented.
@ ProducerConsumerTaskSequence
Map each fusable task onto a producer-consumer task pair.
@ TimedExecution
Timed execution.
@ DisableFusionAndMapOntoNativeTask
This option effectively disables fusion as well and all fusable tasks are eagerly executed.
@ DisableFusionAndProcessImmediately
Disable the fusion and process each fusable task immediately.
@ EagerConsumerTasks
Issue consumer task that fuses upon spawning a task if the queue is big enough.
@ LazyEvaluation
All fusable tasks are parked in a big queue and we fuse lazily as we need the outcome.
Have to include this header, as I need access to the SYCL_EXTERNAL keyword.
std::string toString() const
FuseInstruction(int device_, int minTasks_, int maxTasks_)