我已经安装了 oneAPI 并设置了环境。 可以mpiifort
正常工作, 也可以ifor -V
,它返回正确的编译器版本。
我正在尝试使用 Intel 编译器设置 openmpi,因为 CosmoMC 需要它。我是这样配置的:
./configure --prefix=/usr/local/ F77=/opt/intel/oneapi/compiler/2021.2.0/linux/bin/intel64/ifort FC=/opt/intel/oneapi/compiler/2021.2.0/linux/bin/intel64/ifort F90=/opt/intel/oneapi/compiler/2021.2.0/linux/bin/intel64/ifort ICC=/opt/intel/oneapi/compiler/2021.2.0/linux/bin/intel64/icc ICPC=/opt/intel/oneapi/compiler/2021.2.0/linux/bin/intel64/icpc
但之后当我sudo make
出现一些错误时。最新的是:
ifort: command line warning #10434: option '-nofor_main' use with underscore is deprecated; use '-nofor-main' instead
ld: /opt/intel/oneapi/compiler/2021.2.0/linux/bin/intel64/../../bin/intel64/../../lib/icx-lto.so: error loading plugin: libimf.so: cannot open shared object file: No such file or directory
make[2]: *** [Makefile:1903: libmpi_usempi_ignore_tkr.la] Error 1
make[2]: Leaving directory '/home/souvik/cosmology/openmpi-4.1.0/ompi/mpi/fortran/use-mpi-ignore-tkr'
make[1]: *** [Makefile:3555: all-recursive] Error 1
make[1]: Leaving directory '/home/souvik/cosmology/openmpi-4.1.0/ompi'
make: *** [Makefile:1901: all-recursive] Error 1
我尝试了很多选项,比如声明路径等,但都无法解决问题。问题是,即使使用其他配置,我也避免了错误,但却mpif90 -V
没有返回正确的英特尔编译器版本。
答案1
我最近遇到了这个错误。我通过 安装 openmpi 到 root 拥有的目录sudo -E make install
,但安装失败,并显示您发布的错误消息。我只能通过安装到我拥有的目录make install
(没有sudo
)来解决这个问题。我希望知道为什么sudo -E
在这种情况下不起作用。我仍然安装到我最初想要的目录中,我只需要给它正确的权限。
答案2
我最近遇到了同样的错误,希望我的解决方案能够有所帮助。
我创建了一个符号链接libimf.so
(/usr/lib
我的情况是 Ubuntu 19),如下所示这个答案到Ubuntu 启动时 X windows 挂起。
我对后面与 相关的错误做了同样的事情.so libraries
。最后它编译成功了。包括类似的帖子:回复:[OMPI 用户] OpenMPI 1.6.4 和 Intel Composer_xe_2013.4.183:远程运行问题,orted:加载共享库时出错:libimf.so
我是 OpenMPI 和 Linux 的新手,所以仍然不知道原因和 Linux 中的库优先级设置......