2014-05-02 94 views
3

在編譯Eigen和EIGEN_USE_MKL_ALL標誌定義的項目時遇到這些警告的任何人?我按照這裏的說明:http://eigen.tuxfamily.org/dox/TopicUsingIntelMKL.html。這隻發生編譯日誌的時候我#include <Eigen/Eigenvalues>Eigen 3.2.1 + MKL = C4244編譯器警告

實施例:

eigen3.2.1 \固有\ SRC /特徵值/ RealSchur_MKL.h(76):警告C4244:初始化':從 '__int64' 轉化「 int',可能丟失數據 eigen3.2.1 \ eigen \ src/Eigenvalues/ComplexSchur_MKL.h(87):警告C4244:'初始化':從'__int64'轉換爲'int',可能丟失數據 eigen3.2.1 \ eigen \ src/Eigenvalues/SelfAdjointEigenSolver_MKL.h(80):warning C4244:'initializing':從'__int64'轉換爲'int',可能丟失數據

我知道這些警告的意思,解決它們我需要更改庫代碼。沒有壓制這些警告,你有什麼建議(以防萬一我錯過了某些東西)?

回答

5

在64位平臺上,Eigen使用64位整數對其矩陣的維度進行編碼。 MKL包裝器使用32個整數,如果矩陣大小超過20億行或列,可能會溢出。

+0

這是否意味着我需要編譯爲ILP64(64位整數)?但是在提供的鏈接中,Eigen安裝程序建議在64位系統上,只能使用LP64(32位整數)...? – rnoodle

+0

應按照Eigen文檔中的建議使用LP64接口(儘管存在編譯警告)。此時不支持ILP64庫。 –