Сегодня утром я обновил свои gfortran (от 4.7 до 6.1.0) и компиляторы OpenMPI (от 1.10 до 2.0.1). Я написал эту простую программу:openmpi проигнорирована ошибка: интерфейс mca не распознается
program main
use mpi_f08
implicit none
integer :: ierror
call mpi_init(ierror)
call mpi_finalize(ierror)
end program main
Когда я компилирую непосредственно (без mpirun, просто ./a.out
), я получаю следующие сообщения (они не очень ошибок, так как программа работает, как ожидалось):
[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)
Я помню, как получал подобные предупреждения, когда компилировал свой код с помощью openmpi и запускал его с версией mpirun mpich или intel. Сейчас это явно не так, но я думал, что упомянул об этом.
Любая идея, что вызывает эти предупреждения?
Edit:
Чтобы убедиться, что мои библиотеки времени выполнения OpenMPI действительно был 2.0.1, я добавил эту строку кода, показанному выше:
print'(3(A,I1))', "OpenMPI version = ", OMPI_MAJOR_VERSION, ".", OMPI_MINOR_VERSION, ".",&
8 OMPI_RELEASE_VERSION
который дал следующий результат:
OpenMPI version = 2.0.1
следуя совету VladimirF, я побежал mpirun -v
который выводимый следующее:
[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.
Кроме того, mpirun --version
возвращается: mpirun (Open MPI) 2.0.1
@VladimirF Нет я не знал, я должен был. Я думал, что пошел по openMPI. Если библиотека MPI была несовместима с openMPI, не возникла бы она во время установки? Я сделал несколько быстрых поисков в Интернете, но приходят только ссылки на загрузку/установку openMPI. – solalito
MPI - это стандарт. OpenMPI - фактическая библиотека mado в соответствии с этим стандартом. Но если вы впервые обновили GCC, а затем установили OpenMPI, все должно быть хорошо. В следующий раз сообщите о типе и версии библиотеки MPI, а не о «версии mpif90» *. –
@ VladimirF Я повторно установил OpenMPI версии 2.0.1, чтобы убедиться, что он был основан на правильной версии GCC, но предупреждения сохраняются – solalito