我在使用英特尔MKL和Armadillo C ++时遇到了很多问题。
我试图在OSX上这样做。
我已经以root身份安装了Intel parallel_studio_xe_2016.3.068,以便在整个系统中可用。
以下是我尝试运行的示例代码:
example.cpp
#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;
int main(int argc, const char * argv[]) {
// mkl_set_num_threads(4);
mat A = randu<mat>(1,2);
mat B = randu<mat>(2,1);
mat D;
double C = 0;
while (C == 0){
cout << A*B;
}
return 0;
}
我从sourceforge下载了armadillo 7.300.1 tar,解压缩后在终端运行了以下命令:
cd armadillo-7.300.1
cmake .
make
然后编译我的cpp文件我使用了intel网站上的链接线顾问来获取我需要的所有细节。
icpc -DMKL_ILP64 -qopenmp -I/opt/intel/mkl/include -I~/GithubRepos/PMIWork/armadillo-7.300.1/include -DARMA_DONT_USE_WRAPPER -L/opt/intel/mkl/lib -Wl,-rpath,/opt/intel/mkl/lib -lmkl_intel_ilp64 -lmkl_core -lmkl_intel_thread -lpthread -lm -ldl example.cpp -o example
然而,当我运行生成的可执行文件时,我遇到了分段错误。如果我删除cout&lt;&lt;然后代码符合,运行但它只使用1个单核。我认为MKL可以自动扩展到整个CPU。
真的很感激任何帮助。