A hard coded strategy that can realise a few standard tasking patterns.
More...
#include <SamplingMulticoreOrchestration.h>
A hard coded strategy that can realise a few standard tasking patterns.
Definition at line 25 of file SamplingMulticoreOrchestration.h.
◆ GeneticOptimisation()
tarch::multicore::orchestration::GeneticOptimisation::GeneticOptimisation |
( |
| ) |
|
◆ ~GeneticOptimisation()
virtual tarch::multicore::orchestration::GeneticOptimisation::~GeneticOptimisation |
( |
| ) |
|
|
virtualdefault |
◆ createInitialConfigurations()
void tarch::multicore::orchestration::GeneticOptimisation::createInitialConfigurations |
( |
| ) |
|
|
private |
◆ endBSPSection()
void tarch::multicore::orchestration::GeneticOptimisation::endBSPSection |
( |
| ) |
|
|
overridevirtual |
◆ fuseTasksImmediatelyWhenSpawned()
bool tarch::multicore::orchestration::GeneticOptimisation::fuseTasksImmediatelyWhenSpawned |
( |
| ) |
|
|
overridevirtual |
◆ getNumberOfTasksToFuseAndTargetDevice()
◆ getNumberOfTasksToHoldBack()
int tarch::multicore::orchestration::GeneticOptimisation::getNumberOfTasksToHoldBack |
( |
| ) |
|
|
overridevirtual |
◆ increaseProbabilityOfActiveConfiguration()
void tarch::multicore::orchestration::GeneticOptimisation::increaseProbabilityOfActiveConfiguration |
( |
| ) |
|
|
private |
◆ normalise()
void tarch::multicore::orchestration::GeneticOptimisation::normalise |
( |
| ) |
|
|
private |
◆ paralleliseForkJoinSection()
Determine how to handle/realise parallelisation within fork/join region.
Peano models its execution with multiple parallel, nested fork/join sections. You could also think of these as mini-BSP sections. This routine guides the orchestration how to map those BSP sections onto tasks.
The decision can be guided by basically arbitrary contextual factors. The most important one for me is the nesting factor. As we work mainly with OpenMP, where tasks are tied to one core, it makes limited sense to have nested parallel fors. Notably, it makes stuff slower. So usually, I return ExecutionPolicy::RunSerially with anything with a nesting level greater than 1.
- Parameters
-
nestedParallelismLevel | Please compare with tarch::multicore::spawnAndWait() which ensures that this flag equals 1 on the top level. A parameter of 0 would mean that no fork/join region has been opened. For such a parameter, the code would not query this function. |
taskType | If we enter a fork-join section, this section logically spawns a set of tasks, which are all of the same type. So the task type here is given implicitly by the code location. But each BSP section has a unique identifier. |
Implements tarch::multicore::orchestration::Strategy.
Definition at line 242 of file SamplingMulticoreOrchestration.cpp.
References tarch::multicore::orchestration::Strategy::RunParallel, and tarch::multicore::orchestration::Strategy::RunSerially.
◆ pickNewActiveConfigurationRandomly()
void tarch::multicore::orchestration::GeneticOptimisation::pickNewActiveConfigurationRandomly |
( |
| ) |
|
|
private |
◆ removeUnreasonableProbabilities()
void tarch::multicore::orchestration::GeneticOptimisation::removeUnreasonableProbabilities |
( |
| ) |
|
|
private |
◆ startBSPSection()
void tarch::multicore::orchestration::GeneticOptimisation::startBSPSection |
( |
| ) |
|
|
overridevirtual |
◆ _activeKey
Key tarch::multicore::orchestration::GeneticOptimisation::_activeKey |
|
private |
◆ _bspRunThroughsWithActiveKey
int tarch::multicore::orchestration::GeneticOptimisation::_bspRunThroughsWithActiveKey |
|
private |
◆ _configurationVariants
std::map<Key, Value> tarch::multicore::orchestration::GeneticOptimisation::_configurationVariants |
|
private |
◆ _currentDevice
int tarch::multicore::orchestration::GeneticOptimisation::_currentDevice |
|
private |
◆ _currentWatch
◆ _lastDuration
double tarch::multicore::orchestration::GeneticOptimisation::_lastDuration |
|
private |
◆ _log
The documentation for this class was generated from the following files: