--- myst: substitutions: sentence: python: "`TPythonEval`" cpp: "`TCJitEval`" --- # `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 ({{sentence[language]}}) 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).