Armadillo带有MKL分段错误:安装或链接问题?

时间:2018-07-16 16:29:45

标签: c++ linear-algebra armadillo intel-mkl

我已经搜索了一段时间,没有任何东西可以解决我的问题。

我在Ubuntu 18.04计算机上安装了英特尔MKL库,它已正确链接到Numpy和Scipy。现在,我想用C ++语言使用Armadillo做同样的事情。我使用Armadillo项目提供的readme.txt说明(使用cmake)进行了安装。我检查了它是否正确检测到了MKL的存在,并做到了。 现在,我想检查一下它是否工作正常,所以我只需要构建一个矩阵并使用以下代码对角线化

#include <iostream>
#include <armadillo>

using namespace std;
using namespace arma;

int main()
  {
    wall_clock timer;
    int dim = 100;

    cx_mat C = randu<cx_mat>(dim,dim);
    cx_mat D = C.t()*C;

    vec eigval2;
    cx_mat eigvec2;

    timer.tic(); // Initialize clock

    eig_sym(eigval2, eigvec2, D);

    double n = timer.toc();

    cout << "Elapsed time: " << n << " seconds" << endl;
    cout << eigval2 << endl;

  return 0;
  }

这是非常基本的。问题是,当我尝试以500的矩阵维数运行它时,出现了分段错误(核心已转储),没有其他问题。我不知道这是否与链接到MKL或仅Armadillo安装有关。请注意,我不知道Armadillo如何知道要使用MKL进行编译和运行,因为我也只安装了g++ example.cpp -o example -O2 -larmadillo && ./example,因此也安装了openBLAS,Lapack和BLAS。

我还尝试在“ include / armadillo_bits / config.hpp”文件中注释#define ARMA_USE_LAPACK#define ARMA_USE_BLAS,并重建所有内容,但没有任何改变。我还尝试查看在同一文件中注释/取消注释BLAS CAPITAL / UNDERSCORE / LONG / LONG LONG的内容,但是由于我真的不知道该怎么办,所以我没有碰任何东西。

您对该特定主题有任何建议吗?我什至不知道该错误是否与安装有关...

预先感谢

0 个答案:

没有答案