将英特尔MKL与Armadillo C ++矩阵库链接

时间:2016-08-05 16:01:59

标签: c++ armadillo intel-mkl

我在使用英特尔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。

真的很感激任何帮助。

0 个答案:

没有答案