Parallel and scheduling
OpFlow currently uses two types of parallelization: the OpenMP based multithread parallelization and the MPI based
multiprocess parallelization. Upon a rangeFor
, each thread takes a block of range based on an even split of the
global range. The execution of each thread follows the Fortran style indexing starting from the inner-most index.
The MPI parallelization tries to split the entire range into subranges as even as possible, minimizing the overall
communication cost. The algorithm for such a division can be found in the code of EvenSplitStrategy
at
Core/Parallel/EvenSplitStrategy.hpp
.
Caution
Both the current scheduling strategies are pretty naive. There remains a lot of room for optimizations.