8.4.3.1. TBiMpiRun and TSubMpiRun

In some case, users want to use multi level of parallelism. Two examples are given in the use cases section : first one is an optimization where each evaluation realizes an experiment design and launchs many evaluations and returns a overview of values (max, min, mean) ; second one uses an MPI function (TCJitEval) for evaluation.

For a two level MPI, two classes are provided : TBiMpiRun and TSubMpiRun. TBiMpirun is the high level class and splits MPI resources in different parts : one ressource for the TMaster and n resources for each TEval. TSubMpiRun gives acces to the n ressources reserved for evaluation. For example with 16 resources, 1 resource is reserved for the master and the rest can be splited in 3 parts of 5 resources each for evaluation. TBiMpiRun got an extra parameter, an int defining the number of each evaluation resource. This number must be compatible with available resources (with 16 resources, it could be only 3 or 5).