OpenNMT / CTranslate2

Fast inference engine for Transformer models

Home Page:https://opennmt.net/CTranslate2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

I got invalid conversion error when compile on linux

EyonJoshua91 opened this issue · comments

Below is the output for from cmake:

-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Build spdlog: 1.10.0
-- Build type: Release
-- Looking for dlfcn.h
-- Looking for dlfcn.h - found
-- Looking for getauxval
-- Looking for getauxval - found
-- Compiling for multiple CPU ISA and enabling runtime dispatch
-- Found OpenMP_C: -fopenmp (found version "4.5") 
-- Found OpenMP_CXX: -fopenmp (found version "4.5") 
-- Found OpenMP: TRUE (found version "4.5")  
-- Using OpenMP: /usr/lib/x86_64-linux-gnu/libiomp5.so
-- Found MKL include directory: /opt/intel/mkl/include
-- Found MKL library directory: /opt/intel/mkl/lib/intel64
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Configuring done
-- Generating done

When I run make -j4, I got following error

/home/yyu/Dev/CTranslate2/src/cpu/primitives.cc: In static member function 'static void ctranslate2::primitives<D>::max(const T*, const T*, T*, ctranslate2::dim_t) [with T = float; ctranslate2::Device D = (ctranslate2::Device)0; ctranslate2::dim_t = long int]':
/home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:208:34: error: invalid conversion from 'const float*' to 'float*' [-fpermissive]
       return vsFmax(size, a, b, c);
                                  ^
In file included from /home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:9:0:
/opt/intel/mkl/include/mkl_vml_functions.h:1441:16: note:   initializing argument 3 of 'void vsFmax(long long int, const float*, float*, float*)'
 _Mkl_Api(void, vsFmax, (const MKL_INT n, const float  a[], float  r1[], float  r2[]))
                ^
/opt/intel/mkl/include/mkl.h:23:47: note: in definition of macro '_Mkl_Api'
 #define _Mkl_Api(rtype,name,arg) extern rtype name    arg;
                                               ^~~~
/home/yyu/Dev/CTranslate2/src/cpu/primitives.cc: In static member function 'static void ctranslate2::primitives<D>::min(const T*, const T*, T*, ctranslate2::dim_t) [with T = float; ctranslate2::Device D = (ctranslate2::Device)0; ctranslate2::dim_t = long int]':
/home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:230:34: error: invalid conversion from 'const float*' to 'float*' [-fpermissive]
       return vsFmin(size, a, b, c);
                                  ^
In file included from /home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:9:0:
/opt/intel/mkl/include/mkl_vml_functions.h:1456:16: note:   initializing argument 3 of 'void vsFmin(long long int, const float*, float*, float*)'
 _Mkl_Api(void, vsFmin, (const MKL_INT n, const float  a[], float  r1[], float  r2[]))
                ^
/opt/intel/mkl/include/mkl.h:23:47: note: in definition of macro '_Mkl_Api'
 #define _Mkl_Api(rtype,name,arg) extern rtype name    arg;
                                               ^~~~
/home/yyu/Dev/CTranslate2/src/cpu/primitives.cc: In static member function 'static void ctranslate2::primitives<D>::gemm(bool, bool, bool, bool, ctranslate2::dim_t, ctranslate2::dim_t, ctranslate2::dim_t, float, const In*, ctranslate2::dim_t, const In*, ctranslate2::dim_t, float, Out*, ctranslate2::dim_t, const Out*) [with In = short int; Out = int; ctranslate2::Device D = (ctranslate2::Device)0; ctranslate2::dim_t = long int]':
/home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:758:50: error: invalid conversion from 'long long int' to 'CBLAS_TRANSPOSE' [-fpermissive]
                                      a_is_packed ? (MKL_INT)CblasPacked : (MKL_INT)trans_a,
                                      ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/intel/mkl/include/mkl.h:31:0,
                 from /home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:9:
/opt/intel/mkl/include/mkl_cblas.h:842:6: note:   initializing argument 2 of 'void cblas_gemm_s16s16s32_compute(CBLAS_LAYOUT, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, CBLAS_OFFSET, long long int, long long int, long long int, float, const short int*, long long int, short int, const short int*, long long int, short int, float, int*, long long int, const int*)'
 void cblas_gemm_s16s16s32_compute(const  CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:759:50: error: invalid conversion from 'long long int' to 'CBLAS_TRANSPOSE' [-fpermissive]
                                      b_is_packed ? (MKL_INT)CblasPacked : (MKL_INT)trans_b,
                                      ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/intel/mkl/include/mkl.h:31:0,
                 from /home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:9:
/opt/intel/mkl/include/mkl_cblas.h:842:6: note:   initializing argument 3 of 'void cblas_gemm_s16s16s32_compute(CBLAS_LAYOUT, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, CBLAS_OFFSET, long long int, long long int, long long int, float, const short int*, long long int, short int, const short int*, long long int, short int, float, int*, long long int, const int*)'
 void cblas_gemm_s16s16s32_compute(const  CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yyu/Dev/CTranslate2/src/cpu/primitives.cc: In static member function 'static void ctranslate2::primitives<D>::gemm(bool, bool, bool, bool, ctranslate2::dim_t, ctranslate2::dim_t, ctranslate2::dim_t, float, const In*, ctranslate2::dim_t, const In*, ctranslate2::dim_t, float, Out*, ctranslate2::dim_t, const Out*) [with In = signed char; Out = int; ctranslate2::Device D = (ctranslate2::Device)0; ctranslate2::dim_t = long int]':
/home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:876:48: error: invalid conversion from 'long long int' to 'CBLAS_TRANSPOSE' [-fpermissive]
                                    a_is_packed ? (MKL_INT)CblasPacked : (MKL_INT)trans_a,
                                    ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/intel/mkl/include/mkl.h:31:0,
                 from /home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:9:
/opt/intel/mkl/include/mkl_cblas.h:834:6: note:   initializing argument 2 of 'void cblas_gemm_s8u8s32_compute(CBLAS_LAYOUT, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, CBLAS_OFFSET, long long int, long long int, long long int, float, const void*, long long int, char, const void*, long long int, char, float, int*, long long int, const int*)'
 void cblas_gemm_s8u8s32_compute  (const  CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE TransA,
      ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yyu/Dev/CTranslate2/src/cpu/primitives.cc:877:48: error: invalid conversion from 'long long int' to 'CBLAS_TRANSPOSE' [-fpermissive]
                                    b_is_packed ? (MKL_INT)CblasPacked : (MKL_INT)trans_b,

Does anyone has the same issue? How to resolve it?

I think you have the issue with MKL version marked in this issue . Could you verify it and reinstall correctly MKL.

@minhthuc2502 Thanks so much! I have reinstalled MKL, the issue is resolved now.