Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
英特尔Fortran重新定位错误,libiomp5.so_Fortran_Intel Fortran - Fatal编程技术网

英特尔Fortran重新定位错误,libiomp5.so

英特尔Fortran重新定位错误,libiomp5.so,fortran,intel-fortran,Fortran,Intel Fortran,由于Fortran 2008的某些功能,我正在尝试编译一段Fortran代码,该代码仅适用于英特尔Fortran,并适用于最新版本 我使用SSH在集群上完成所有这些工作 我曾经加载模块 module load compilers/intel/15.1/ 使用ifort。但是,15.1版本不足以编译此程序。因此,我加载了集群上唯一一个最近可用的 module load compilers/intel/17.0.3/ 程序编译 但是,在运行时,我得到以下错误: ./myprogram: relo

由于Fortran 2008的某些功能,我正在尝试编译一段Fortran代码,该代码仅适用于英特尔Fortran,并适用于最新版本

我使用SSH在集群上完成所有这些工作

我曾经加载模块

module load compilers/intel/15.1/
使用
ifort
。但是,15.1版本不足以编译此程序。因此,我加载了集群上唯一一个最近可用的

module load compilers/intel/17.0.3/
程序编译

但是,在运行时,我得到以下错误:

./myprogram: relocation error: ./myprogram: symbol kmp_aligned_malloc, version VERSION not defined in file libiomp5.so with link time reference
./myprogram: relocation error: ./myprogram: symbol kmp_aligned_malloc, version VERSION not defined in file libiomp5.so with link time reference
./myprogram: relocation error: ./myprogram: symbol kmp_aligned_malloc, version VERSION not defined in file libiomp5.so with link time reference
./myprogram: relocation error: ./myprogram: symbol kmp_aligned_malloc, version VERSION not defined in file libiomp5.so with link time reference
--------------------------------------------------------------------------
mpirun has exited due to process rank 0 with PID 22573 on
node splinter-login.local exiting improperly. There are two reasons this could occur:

1. this process did not call "init" before exiting, but others in
the job did. This can cause a job to hang indefinitely while it waits
for all processes to call "init". By rule, if one process calls "init",
then ALL processes must call "init" prior to termination.

2. this process called "init", but exited without calling "finalize".
By rule, all processes that call "init" MUST call "finalize" prior to
exiting or it will be considered an "abnormal termination"

This may have caused other processes in the application to be
terminated by signals sent by mpirun (as reported here).
--------------------------------------------------------------------------
图书馆之间似乎存在冲突。我说得对吗?我打印

echo $LD_LIBRARY_PATH


:/share/apps/intel/l_ics_2015.1.133/composer_xe_2015.1.133/ipp/../compiler/lib/intel64/:/lib:/lib64:/share/apps/intel/l_ics_2015.1.133/composer_xe_2015.1.133/compiler/lib/intel64:/share/apps/intel/l_ics_2015.1.133/composer_xe_2015.1.133/compiler/lib/intel64/:/share/apps/intel/l_ics_2015.1.133/composer_xe_2015.1.133/ipp/../compiler/lib/intel64
因此,在我看来,在
LD_LIBRARY_PATH
中仍然存在英特尔15库。我应该用17个来代替它们吗?问题是在
/share/apps/intel/
中没有17个库

更新:是的

module purge
module load compilers/intel/17.0.3/
recompiled and rerun
并获取了评论中提到的
.sh
文件
我仍然得到相同的错误

是的,看起来您的环境中有2015个项目。您可以使用
module show compilers/intel/17.0.3
(取决于您的模块系统)查看您的模块正在做什么,但您也有机会使用特定于特定安装的英特尔自己的安装脚本(名称有所不同)。也就是说,这可能是本地系统支持团队的问题,而不是Internet的问题。a“模块清洗“2017年的重新加载可能会有所帮助,这取决于您需要加载的其他内容。编译失败后的模块列表输出可能也很有用。@程序执行后的模块清除告诉我v17已加载。编译进行得很顺利,问题在运行时就出现了。正如@francescalus提到的,这个问题应该提交给本地支持团队。同时,您可以尝试以下修复。通过加载找到ifort 2017并执行
哪个ifort
。命令
env|grep 2015\.1\.133
将为您提供由英特尔编译器环境设置的所有环境变量。使用“英特尔路径”抑制所有条目(不是完整变量,只是英特尔部分)。然后,在上面找到的带有
which ifort
的目录中,找到名为
ifortvars.sh
的文件,并将其作为
source/path/to/ifortvars.sh