13 namespace orchestration {
14 class GeneticOptimisation;
34 int numberOfTasksToHoldBack_,
36 bool fuseTasksImmediatelyWhenSpawned_,
37 bool processPendingTasksWhileWaiting_
52 Value(
double probability_);
A hard coded strategy that can realise a few standard tasking patterns.
virtual FuseInstruction getNumberOfTasksToFuseAndTargetDevice() override
void increaseProbabilityOfActiveConfiguration()
static tarch::logging::Log _log
virtual void startBSPSection() override
virtual bool fuseTasksImmediatelyWhenSpawned() override
void createInitialConfigurations()
tarch::timing::Watch _currentWatch
std::map< Key, Value > _configurationVariants
virtual void endBSPSection() override
int _bspRunThroughsWithActiveKey
void removeUnreasonableProbabilities()
virtual ~GeneticOptimisation()=default
virtual int getNumberOfTasksToHoldBack() override
virtual ExecutionPolicy paralleliseForkJoinSection(int nestedParallelismLevel, int numberOfTasks, int taskType) override
Determine how to handle/realise parallelisation within fork/join region.
void pickNewActiveConfigurationRandomly()
Interface for any task orchestration.
ExecutionPolicy
Provide hint of execution policy.
A simple class that has to be included to measure the clock ticks required for an operation.
Have to include this header, as I need access to the SYCL_EXTERNAL keyword.
bool fuseTasksImmediatelyWhenSpawned
bool operator<(const Key &other) const
bool processPendingTasksWhileWaiting
std::string toString() const
int numberOfTasksToHoldBack
Key(int numberOfTasksToHoldBack_, FuseInstruction fusionInstruction_, bool fuseTasksImmediatelyWhenSpawned_, bool processPendingTasksWhileWaiting_)
FuseInstruction fusionInstruction
tarch::timing::Measurement measurement
Value(double probability_)