openmpi忽略错误:无法识别mca接口

时间:2016-12-29 12:55:28

标签: macos fortran mpi gfortran openmpi

今天早上我升级了我的gfortran(从4.7到6.1.0)和OpenMPI(从1.10到2.0.1)编译器。我写了这个简单的程序:

./a.out

当我直接编译(没有mpirun,只是[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) )时,我收到以下消息(因为程序按预期运行,它们并不是真正的错误):

print'(3(A,I1))', "OpenMPI version = ", OMPI_MAJOR_VERSION, ".", OMPI_MINOR_VERSION, ".",& 
  8                       OMPI_RELEASE_VERSION

我记得在使用openmpi编写代码并使用mpich或intel版本的mpirun运行代码时会收到类似的警告。现在显然情况并非如此,但我想我已经提到过了。

知道导致这些警告的原因吗?

修改

为了确保我的运行时OpenMPI库确实是2.0.1,我将这行代码添加到上面显示的代码中:

OpenMPI version = 2.0.1

给出了以下输出:

mpirun -v

根据VladimirF的建议,我跑了 [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会返回:{{1}}

1 个答案:

答案 0 :(得分:1)

感谢Gilles Gouaillardet在OpenMPI论坛上的帮助,我已经找到了问题。

<强>问题:

我安装了较新版本的2.0.1而没有卸载1.10。由于我在同一位置安装了它,因此一些mca文件被覆盖而其他mca文件已被删除或在较新版本中重命名,因此仍然存在于目录中。最后,版本2.0.1无法识别这些模块文件,导致出现上述警告。

<强>解决方案:

  1. 删除所有插件文件:rm -rf /usr/local/lib/openmpi
  2. 重新安装Openmpi:make install