调用基于lapack的Armadillo函数svd时出错 - 收到“英特尔MKL错误”

时间:2017-11-02 19:53:29

标签: c++ intel mex lapack armadillo

我最近一直在使用Armadillo编写c ++ mex文件来加速一些Matlab代码。到目前为止,我实际上只使用了'立方体'和'矩阵'数据存储类型和简单的操作。

我对计算SVD犰狳功能很感兴趣。但是,当我调用svd函数时,Matlab报告'警告:svd():分解失败'。

此外,命令窗口将报告“英特尔MKL错误:输入DGESDD时参数12不正确”。 DGESDD来自Lapack库并执行SVD,这使我相信我在连接Armadillo和Lapack库时出错了。

有谁知道如何纠正这个问题?

在Matlab中,我将函数初始化为: mex -v testFunction.cpp -larmadillo -lblas -llapack

在mex文件中,我目前正在使用Armadillo网站上的确切示例:

#include <armadillo>
#include "armaMex.hpp"
#include <omp.h>
#include <lapacke.h>

... general mex function calls ...

mat X = randu<mat>(5,5);

mat U;
vec s;
mat V;

svd(U,s,V,X);

0 个答案:

没有答案