This morning I upgraded my gfortran (from 4.7 to 6.1.0) and OpenMPI (from 1.10 to 2.0.1) compilers. I wrote this simple program:
program main
use mpi_f08
implicit none
integer :: ierror
call mpi_init(ierror)
call mpi_finalize(ierror)
end program main
When I compile directly (no mpirun, just ./a.out
), I get the following messages (they're not really errors since the program runs as expected):
[username:79762] mca_base_component_repository_open: unable to open mca_grpcomm_bad: dlopen(/usr/local/lib/openmpi/mca_grpcomm_bad.so, 9): Symbol not found: _orte_grpcomm_base_modex
Referenced from: /usr/local/lib/openmpi/mca_grpcomm_bad.so
Expected in: flat namespace
in /usr/local/lib/openmpi/mca_grpcomm_bad.so (ignored)
[username:79761] mca_base_component_repository_open: unable to open mca_grpcomm_bad: dlopen(/usr/local/lib/openmpi/mca_grpcomm_bad.so, 9): Symbol not found: _orte_grpcomm_base_modex
Referenced from: /usr/local/lib/openmpi/mca_grpcomm_bad.so
Expected in: flat namespace
in /usr/local/lib/openmpi/mca_grpcomm_bad.so (ignored)
[username:79761] mca_base_component_repository_open: unable to open mca_pml_bfo: dlopen(/usr/local/lib/openmpi/mca_pml_bfo.so, 9): Symbol not found: _ompi_free_list_item_t_class
Referenced from: /usr/local/lib/openmpi/mca_pml_bfo.so
Expected in: flat namespace
in /usr/local/lib/openmpi/mca_pml_bfo.so (ignored)
[username:79761] mca_base_component_repository_open: coll "/usr/local/lib/openmpi/mca_coll_hierarch" uses an MCA interface that is not recognized (component MCA v2.0.0 != supported MCA v2.1.0) -- ignored
[username:79761] mca_base_component_repository_open: unable to open mca_coll_ml: dlopen(/usr/local/lib/openmpi/mca_coll_ml.so, 9): Symbol not found: _mca_bcol_base_components_in_use
Referenced from: /usr/local/lib/openmpi/mca_coll_ml.so
Expected in: flat namespace
in /usr/local/lib/openmpi/mca_coll_ml.so (ignored)
I remember getting similar warnings when I was compiling my code with openmpi and running it with mpich's or intel's version of mpirun. This is clearly not the case now but I thought I'd mention it.
Any idea what causes these warnings?
Edit:
To make sure my runtime OpenMPI libraries was indeed 2.0.1, I added this line of code to the one shown above:
print'(3(A,I1))', "OpenMPI version = ", OMPI_MAJOR_VERSION, ".", OMPI_MINOR_VERSION, ".",&
8 OMPI_RELEASE_VERSION
which gave the following output:
OpenMPI version = 2.0.1
Following VladimirF's advice, I ran mpirun -v
which outputted the following:
[username:02210] mca_base_component_repository_open: unable to open mca_grpcomm_bad: dlopen(/usr/local/lib/openmpi/mca_grpcomm_bad.so, 9): Symbol not found: _orte_grpcomm_base_modex
Referenced from: /usr/local/lib/openmpi/mca_grpcomm_bad.so
Expected in: flat namespace
in /usr/local/lib/openmpi/mca_grpcomm_bad.so (ignored)
--------------------------------------------------------------------------
No executable was specified on the mpirun command line.
Aborting.
Also, mpirun --version
returns: mpirun (Open MPI) 2.0.1
I've figured out the problem thanks to Gilles Gouaillardet's help on the OpenMPI forums.
Problem:
I installed the newer version 2.0.1 without uninstalling 1.10. Since I installed it at the same location, some mca files were overwritten while others have been removed or renamed in the newer version and were therefore still present in the directory. In the end, these module files were not recognised by version 2.0.1, resulting in the above warnings.
Solution:
rm -rf /usr/local/lib/openmpi
make install