繁体   English   中英

特征::BDCSVD<eigen::matrixxcd> 求解器使用 MKL LAPACKE 引发 DGESVD 错误</eigen::matrixxcd>

[英]Eigen::BDCSVD<Eigen::MatrixXcd> solver raises DGESVD error with MKL LAPACKE

以下代码工作正常:

auto bcd_svd_solver = Eigen::BDCSVD<Eigen::MatrixXcd>(X, Eigen::ComputeFullU | Eigen::ComputeFullV);

MatrixXcd U = bcd_svd_solver.matrixU();
VectorXd s = bcd_svd_solver.singularValues();
MatrixXcd V = bcd_svd_solver.matrixV();

X类型为Eigen::MatrixXcd (复矩阵)。

但是,如果我使用-DEIGEN_USE_LAPACKE选项(激活 MKL LAPACKE),则会出现以下错误:

** On entry to DGESVD, parameter number  6 had an illegal value

根据https://software.intel.com/en-us/mkl-developer-reference-c-gesvd ,参数 6 是要分解的矩阵(来自X内部的数据)。

我在这里做错了什么还是本征错误?

我建议在详细模式下切换MKL。 设置/导出MKL_VERBOSE = 1并显示输出

LAPACKE_xxx 函数在没有第一个参数的情况下为您调用 fortran xxx 函数。 返回号(在您的情况下为 -6)表示 fortran 调用中的参数 #6。 这意味着 LAPACKE_xxx 调用中的参数 #7。 所以,LDA 是不正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM