在MKL库中设置openmp 我试图编译一个最小的C++代码< /p> #include <iostream> #include <mkl.h> #include <omp.h> int main(int argc, char *argv[]) { omp_set_num_threads(4); return 0; }
但是,当我运行程序时,我收到以下错误在MKL库中设置openmp 我试图编译一个最小的C++代码< /p> #include <iostream> #include <mkl.h> #include <omp.h> int main(int argc, char *argv[]) { omp_set_num_threads(4); return 0; },c++,openmp,intel-mkl,C++,Openmp,Intel Mkl,但是,当我运行程序时,我收到以下错误 dyld: Library not loaded: @rpath/libiomp5.dylib Referenced from: /Users/user/C++/MKL1/./main.o Reason: image not found /bin/sh: line 1: 8898 Abort trap: 6 ./main.o make: *** [run] Error 134 如何使用MKL库正确设置openmpi?我试着按照指示
dyld: Library not loaded: @rpath/libiomp5.dylib
Referenced from: /Users/user/C++/MKL1/./main.o
Reason: image not found
/bin/sh: line 1: 8898 Abort trap: 6 ./main.o
make: *** [run] Error 134
如何使用MKL库正确设置openmpi?我试着按照指示去做
加入
source /opt/intel/compilers_and_libraries_2017.4.181/mac/mkl/bin/mklvars.sh intel64
但是,在运行时我仍然会遇到相同的错误 我在网上找到了答案
基本上,我们必须补充一点
-Wl,-rpath,/opt/intel/compilers_和_libraries_2017.4.181/mac/compiler/lib
在汇编期间。现在openmp与icc完美结合我尝试了几种方法来解决这个问题。真的花了整整一天的时间。但结果如下: 项目文件 我创建了一个非常简单的项目,只有一个文件,名为
test.c
1.最简单的解决方案
解决这个问题非常简单
icc -qopenmp -qopenmp-link=static test.c
此方法只是告诉编译器链接到静态OpenMP运行时库
有趣的是,网站上的文档说这是不推荐的,但甚至没有提到这个参数,但它是有效的。可能他们忘了把它拿出来
2.另一种方法(我不推荐,英特尔的人也不推荐)
要编译文件,可以使用正常的“-qopenmp”标志
这将创建“a.out”文件
这种修复错误的方法使用命令行实用程序
install_name_tool
使用此方法可以更改@rpath/libiomp5.dylib的路径
install_name_tool -change @rpath/libiomp5.dylib /opt/intel/compilers_and_libraries_2018.1.126/mac/compiler/lib/libiomp5.dylib a.out
注意:代替编译器和库\u 2018.1.126它应该是您的编译器版本
3.最好的(正确的)方法之一
你可以加上
export DYLD_LIBRARY_PATH="/opt/intel/compilers_and_libraries_2018.1.126/mac/compiler/lib"
到您的~/.bash\u档案
然后用正常的编译方式,
icc -qopenmp test.c
一切都很完美
快速提示:您可以使用otool命令行实用程序检查文件链接到的库
otool -L a.out
我似乎记得icc使用-OpenMP编译OpenMP代码,而没有链接到(外部)库(-liomp5)。不确定这是否仍然正确。在Xcode中,必须在运行路径搜索路径中添加/opt/intel/compilers_和_libraries_2017.4.181/mac/compiler/lib
icc -qopenmp test.c
otool -L a.out