[英]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.