Eigen 3.2.1 + MKL = C4244编译器警告

时间:2014-05-02 18:47:12

标签: c++ eigen intel-mkl

在编译带有Eigen和EIGEN_USE_MKL_ALL标志的项目时遇到这些警告的任何人?我按照此处的说明操作:http://eigen.tuxfamily.org/dox/TopicUsingIntelMKL.html。这只发生在我#include <Eigen/Eigenvalues>

编译日志示例:

eigen3.2.1 \ eigen \ src / Eigenvalues / RealSchur_MKL.h(76):警告C4244:&#39;初始化&#39; :转换自&#39; __ int64&#39;到&#39; int&#39;,可能会丢失数据 eigen3.2.1 \ eigen \ src / Eigenvalues / ComplexSchur_MKL.h(87):警告C4244:&#39;初始化&#39; :转换自&#39; __ int64&#39;到&#39; int&#39;,可能会丢失数据 eigen3.2.1 \ eigen \ src / Eigenvalues / SelfAdjointEigenSolver_MKL.h(80):警告C4244:&#39;初始化&#39; :转换自&#39; __ int64&#39;到&#39; int&#39;,可能丢失数据

我知道这些警告意味着什么,但要解决它们,我需要更改库代码。如果没有压制这些警告,你有什么建议(以防我不知何故错过了什么)?

1 个答案:

答案 0 :(得分:5)

在64位平台上,Eigen使用64位整数来编码其矩阵的维数。 MKL包装器使用32个整数,如果矩阵大小超过20亿行或列,则可能会溢出。