|
Peano
|
ExaHyPE starts from plain domain decomposition. Its domain decomposition splits up the domain over multiple MPI ranks, but it also can make one rank hold multiple subpartitions, and these subpartitions are then processed by different threads. On top of this domain decomposition, you can add tasking which only works per rank. That is, if you give each rank only one subdomain and if you add tasking on top, then you can genuine task parallelsim. Typically, this is a poor idea, i.e. you are better off with a mixture of domain decomposition and tasking to exploit many threads. Further to that, only some ExaHyPE solvers (typically those with an Enclave in their name) support tasking and therefore benefit from the discussion below.
If you have a solver with tasking and want to activate this tasking, you have to do the following steps:
All instructions how to enable tasking support is collected in a multicore/tasking tutorial. Of particular relevance for tasking which yields high throughput is the discussion of the concept of task fusion.
The solvers in ExaHyPE that support tasking work directly with the abstractions of the multithreading as it is provided by the technical architecture. All the documentation how tasking works in Peano can be found there.