I have an executable on my Linux box which I know has been compiled either with OpenMPI
or MPICH
libraries.
Question: how to determine which one?
I have an executable on my Linux box which I know has been compiled either with OpenMPI
or MPICH
libraries.
Question: how to determine which one?
The following diagnostic procedure assumes that MPICH/MPICH2 and Open MPI are the only possible MPI implementations that you may have linked with. Other (especially commercial) MPI implementations do exist and may have different library names and/or library symbols.
First determine if you linked dynamically:
If you see
libmpich.so
in that list, then you have dynamically linked to MPICH (or MPICH2). If you seelibmpi.so
then you have linked with Open MPI.If neither is present, then you probably just linked statically. In that case we need to examine the binary to look for distinguishing symbols:
Open MPI applications react to MCA parameters, that can be passed in environment variables. Just run the executable in singleton mode (i.e. without
mpirun
/mpiexec
) with something likesysinfo_base_verbose
set to 30:If you get an output like:
then this is more than robust indication that the executable uses Open MPI.