簡體   English   中英

使用Eigen C ++庫和英特爾MKL

[英]Using Eigen C++ Library with Intel MKL

我試圖使用Eigen的英特爾MKL(3)。 我寫了一個基本的矩陣乘法程序,如下所示。


#include <iostream>
#define EIGEN_USE_MKL_ALL
#include "../Eigen/src/Core/util/MKL_support.h"
#include "Dense"
#include "EigenTools.h"
 #include <sys/time.h>

int main()
{
    int rows= 10000, cols =100;
    Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic> M(rows, cols);
    Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic> N(cols, rows);
    M.setRandom();
    N.setRandom();
    struct timeval tv_start;    
    struct timezone tz;
    gettimeofday(&tv_start, &tz);   
    Eigen::MatrixXf P = M*N;
    struct timeval tv_end;  
    gettimeofday(&tv_end, &tz); 
    float elapsedTime = (tv_end.tv_sec-tv_start.tv_sec)*1000000+tv_end.tv_usec-tv_start.tv_usec;
    elapsedTime /= 1000000;
    std::cout<<"rows, cols:"<<M.rows()<<","<<M.cols()<<std::endl;
    std::cout<<"elpsed Time in sec is :"<<elapsedTime<<"\n";

    return 0;
}

我使用了“g ++ EigenTest_IntelMKL.cpp -I ../ Eigen -DMKL_ILP64 -m64 -I / opt / intel / mkl / include”,我收到了以下編譯錯誤:

在EigenTest_IntelMKL.cpp中包含的文件中:3:0:../ Eigen/src/Core/util/MKL_support.h:64:9:錯誤:命名空間'std'中的'complex'沒有命名類型typedef std ::復雜的dcomplex; ^ ../Eigen/src/Core/util/MKL_support.h:65:9:錯誤:命名空間'std'中的'complex'沒有命名類型typedef std :: complex scomplex;


我沒有嘗試下載庫,但錯誤非常簡單:

您包含的頭文件: ../Eigen/src/Core/util/MKL_support.hstd::complex<double>定義了一個名為dcomplex的typedef。 但是在這一點上沒有人包含<complex> ,這就是編譯器失敗的原因。

1)為什么在代碼中包含這樣的內部文件? 在所有庫中,您應該包含的文件位於“include”目錄中。 'src'目錄中的文件是內部文件,不應使用。

你可能應該包括<Eigen/Core> & <Eigen/Dense>

請看這個快速參考: 這里是您應該包含的頭文件。

如果您尚未使用,則應使用本指南獲取有關使用英特爾MKL的幫助。 在這里 您有正確的定義(EIGEN_USE_MKL_ALL),並希望為您的平台鏈接正確的庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM