lapack - 使用 Eigen 的 BLAS 和 LAPACK

标签 lapack blas eigen3

我用 Eigen 和 实现了一段代码。我希望 Eigen 使用 BLAS 和 LAPACK 。

我看过here ,这是可能的,但我不知道如何或将这些值/指令放在代码中的位置。

我必须在某处指定值 EIGEN_USE_BLAS但我不知道在哪里。

我已经看到 Eigen 的源代码包括 BLAS 和 LAPACK 的代码,但我完全忽略它是否默认使用它或什么。我正在使用 Eigen 3.3.3。

最佳答案

您不会将这些指令放入代码中,而是使用这些宏编译代码。例如:

LAPACK_FLAGS=('-D EIGEN_USE_LAPACKE=1 -lm -lblas -llapack -llapacke')
g++ --std=c++11 eigenSVD.cpp -o eigenSVD.cpp ${LAPACK_FLAGS[@]}

看看Eigen/SVD , 如果你的代码是用 EIGEN_USE_LAPACKE 编译的,您会看到 Eigen-lapacke 接口(interface)和 lapacke 头文件将被包含在内。
#if defined(EIGEN_USE_LAPACKE) && !defined(EIGEN_USE_LAPACKE_STRICT)
#ifdef EIGEN_USE_MKL
#include "mkl_lapacke.h"
#else
#include "src/misc/lapacke.h"
#endif
#include "src/SVD/JacobiSVD_LAPACKE.h"
#endif

关于lapack - 使用 Eigen 的 BLAS 和 LAPACK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43328092/

相关文章:

c++ - Eigen 稀疏矩阵中非零元素的数量 - 二元运算符不变

windows - 在 Windows 上使用 OpenBLAS 安装 numpy 的教程

c++ - LAPACKE_zheevx() 收敛失败——如何在 C++ 中使用 2*DLAMCH ('S' 增加 ABSTOL?

python - 将 ATLAS/MKL 链接到已安装的 Numpy

c - Intel MKL SpareBlas mm CSR 基于一的索引不工作

c++ - 为什么我不能在 Eigen3 中消除这个临时变量?

c++ - 使用 Lapack 的 dgesv 求解线性方程组

c - 稀疏矩阵线性和非线性方程求解器

python - Fedora 中用于 numpy/scipy/scikit-learn 的 python virtualenv 上的 ATLAS

c++ - 在boost/odeint中使用几个特征矩阵作为状态类型