我正在尝试在运行 Mac OSX 10.6.6 和 Xcode 3.2.6 的 64 位 Mac 上使用 Intel Math Kernel Library (MKL)。对于 Mac,英特尔 MKL 只能通过安装完整的英特尔 Composer XE 2011 C++ 编译器来使用。我已经这样做了,我运行了 bash 脚本
/Developer/opt/intel/composer_xe_2011_sp1.6.038/mkl/bin/intel64/mklvars_intel64.sh
/Developer/opt/intel/composer_xe_2011_sp1.6.038/link_install.sh
为 Composer XE 和 MKL 设置环境变量。我能够使用编译器在 Xcode 中构建简单的测试项目。
但是,我无法使用 MKL,因为我无法将其链接到 Xcode中,如此处所述。我没有该超链接中描述的 MKL 框架文件夹
/Library/Frameworks/Intel_MKL.framework/
(具体来说,我的系统上的任何地方都没有标题为 Intel_MKL.framework 的文件夹。)英特尔的几本 MKL 参考手册中提到了检查以确保该文件夹存在,但他们没有告诉你如果不存在该怎么做'不存在!如果您已正确安装 MKL,似乎假定它存在,但我有(“Composer XE 安装成功”)并且没有 Intel_MKL.framework。
如果重要的话,我得到的错误是
"_dsyevx", referenced from:
jEigenvalues(TNT::Array2D<double>&, TNT::Array1D<double>&)in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
我理解这与没有正确链接是一致的。
我花了很多时间和精力试图获得帮助,包括英特尔论坛,但无济于事。我怀疑这是一个简单的问题(我只是一个业余爱好者)。
非常感谢您的帮助。
编辑:
在 Paul 的建议下,我重新运行了安装程序,没有任何变化。唯一的 mkl.h 文件位于
/Developer/opt/intel/composer_xe_2011_sp1.6.038/mkl/include
以及非 Xcode 安装目录中预期的相同副本
/opt/intel/composer_xe_2011_sp1.6.038/mkl/include
我不知道这是否是我应该在 Xcode 的“标题搜索路径”下列出的内容,但我很久以前就列出了它。我也列出了
/Developer/opt/intel/composer_xe_2011_sp1.6.038/mkl/lib
作为“库搜索路径”,我根据阅读此2011 指南的最佳尝试添加了这些链接器标志:
-libmkl_intel_lp64.a
-libmkl_core.a
-libmkl_sequential.a
-libmkl_intel_thread.a
什么都没有改变,我得到同样的错误:
ld returned 1 exit status
他的问题可能出在动态与静态链接上吗?我选择了静态链接(.a 结尾而不是 .dylib),因为它看起来更简单,但我不知道。更改为动态并没有做任何事情。
反正有反馈,在这里?我不知道根据这个错误要改变什么。
编辑2:
我刚刚在 Xcode“项目信息”(可能是 100 个选项之一)中找到了一个我不知道存在的选项“使用英特尔数学内核库”。(我应该在哪里找到这个?)现在事情正在建设中,但是当我运行可执行文件时,我得到了
exit;
dyld: Library not loaded: libmkl_intel_lp64.dylib
Referenced from: /Users/.../nameofexecutable
Reason: image not found
Trace/BPT trap
logout
我已经仔细检查了库搜索目录是否正确。我还尝试切换以 .a 结尾的静态库,但错误完全相同。(仍然有 .dylib 结尾。)这是否意味着我被动态困住了?为什么?我还定义了变量
DYLD_LIBRARY_PATH
成为
/Developer/opt/intel/composer_xe_2011_sp1.6.038/compiler/lib: /Developer/opt/intel/composer_xe_2011_sp1.6.038/mkl/lib
正如此处旧说明中所建议的那样,但没有任何改变。
哇,这太难了。