2017-05-22 14 views
2

Während einer Integrationsarbeit von TensorFlow 1.1 mit meinem laufenden C++ Projekt unter Ubuntu 16 ... möchte ich eine Unterstützung für MKL und 64 Bit Ganzzahlen beinhalten. traf ich eine Zusammenstellung Problem in Eigen-Bibliothek, während eine Vorlage struct instanziiert, die einen direkten Aufruf an MKL hat:Kompilierung von Eigen3 mit MKL

In file included from /usr/local/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/Core:526:0, 
       from /usr/local/include/eigen3/unsupported/Eigen/CXX11/Tensor:14, 
       from /home/drormeirovich/projects/tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1, 
       from /home/drormeirovich/projects/tensorflow/tensorflow/core/framework/tensor.h:19, 
       from /home/drormeirovich/projects/tensorflow/tensorflow/cc/framework/ops.h:21, 
       from /home/drormeirovich/projects/tensorflow/tensorflow/cc/client/client_session.h:24, 
       from /home/drormeirovich/projects/my_project.cpp:10: 
/usr/local/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h: In static member function ‘static void Eigen::internal::general_matrix_matrix_product<Index, double, LhsStorageOrder, ConjugateLhs, double, RhsStorageOrder, ConjugateRhs, 0>::run(Index, Index, Index, const double*, Index, const double*, Index, double*, Index, double, Eigen::internal::level3_blocking<double, double>&, Eigen::internal::GemmParallelInfo<Index>*)’: 
/usr/local/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h:103:173: error: cannot convert ‘char*’ to ‘CBLAS_LAYOUT’ for argument ‘1’ to ‘void cblas_dgemm(CBLAS_LAYOUT, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, long long int, long long int, long long int, double, const double*, long long int, const double*, long long int, double, double*, long long int)’ 
    BLASPREFIX##gemm(&transa, &transb, &m, &n, &k, &numext::real_ref(alpha), (const BLASTYPE*)a, &lda, (const BLASTYPE*)b, &ldb, &numext::real_ref(beta), (BLASTYPE*)res, &ldc); \ 
                                              ^
/usr/local/include/eigen3/unsupported/Eigen/CXX11/../../../Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h:106:1: note: in expansion of macro ‘GEMM_SPECIALIZATION’ 
GEMM_SPECIALIZATION(double, d, double, cblas_d) 
^ 

Weitere Einzelheiten ... Mein ganzer Fortschritt auf diesem Integrationsproblem ist in diesem Link:

https://docs.google.com/document/d/1VFTdPJy59QTCTHO8NHMNmnO8AOoQhNXgWixas9KmLLM/edit?usp=drivesdk

Muss ich die Unterstützung von MKL aus Eigen3 entfernen?

Jede mögliche Hilfe würde geschätzt ...

+1

Vielleicht eine neuere Version versuchen von TF? Ich habe eine Version von Head letzte Woche erfolgreich mit MKL aktiviert - https://github.com/yaroslavvb/tensorflow-community-wheels/issues/21 –

+0

Ich habe heute die neueste Version von Tensorflow von Github geklont. Mein Kompilierungsproblem befindet sich in meinem eigenen Projekt (nicht während des Tensorflow-Builds) –

Antwort

1

Haftungsausschluss: Ich habe ein Entwickler Easybuild sein.

In EasyBuild können wir Eigen3 mit MKL-Unterstützung erstellen, also sollte dies funktionieren.

Einer unserer contributers scheint, dass Sie für eigen3 herausgefunden zu haben, müssen die ‚signature_of_eigen3_matrix_library‘ Datei in den Pfad, den Sie für Ihre enthält verwenden, um zu kopieren, siehe https://github.com/hpcugent/easybuild-easyblocks/blob/master/easybuild/easyblocks/e/eigen.py

https://github.com/RLovelett/eigen/blob/master/signature_of_eigen3_matrix_library