Background: I have successfully created MPI-based applications within a Singularity container and executed them using the hybrid mode recommended by the Singularity documentation. This requires that I have a "compatible" version of MPI installed both in the container and on the host O/S. I understand why this is necessary if I will be runnings jobs across multiple nodes.
But in our use case we have slow interconnects and so it pretty much never makes sense for us to run jobs over more than one node. Hybrid mode forces me to keep track of every version of MPI that has been built into every container that might ever be used to make sure that the right MPI is available on the host O/S. The whole reason I've gone to containers in the first place is to avoid having to deal with this kind of version-dependency hassle.
My question: If I am OK with the limitation that MPI applications can only be executed within a single physical node, is there a way for me to build an MPI application in a Singularity container that is not dependent on having anything installed on the host O/S?