Google Summer of Code/2018/Ideas/Support for multiple MPI implementations
Support for multiple MPI implementations
There are numerous MPI (Message Passing Interface) implementations available, but most of them can't be installed together as is. In HPC world it is often mandatory to provide for users different MPI implementations and/or versions of the same implementation, e.g. due to binary package dependencies, codebase or performance issues. The only way to do this now is by using empi from the science overlay. Empi has its shortcomings such as lack of multilib support and was not ported to the main tree.
Your goal will be to implement new eclass taking into account empi experience. The key idea is to make compatible MPI implementations selectable from the ebuild similar to they way how multiple python implementations are supported, and allow to build multiple versions of the same package for different MPI implementations.
Different MPI implementations should be selectable by users without any special privileges. A good start will be to use modules to control environment variables. You will also need to port existing MPI applications to the new framework.
There was a previous attempt to solve this task. While it was not completed and oversimplified, it may give some hints on what to do.