Intel MKL Lapack and BLAZE argument mismatch
Hi,
I am trying to use BLAZE (3.6) with Intel MKL 2019u4.
#define BLAZE_BLAS_INCLUDE_FILE <mkl_cblas.h>
#define BLAZE_BLAS_MODE 1
During compilation I get a lot of errors of type:
\BLAZE\blaze/math/lapack/clapack/geev.h(180,4): error C2660: "sgeev_": Funktion akzeptiert keine 16 Argumente
\MKL\include\mkl_lapack.h(20462,6): message : Siehe Deklaration von "sgeev_"
It seems than the mkl_lapack.h interface is mismatching lapack/geev.h.
It there an additional parameter inside Blaze which I need to set?
Thanks a lot in advance!
Stefan
VS2019 WIN10
Comments (13)
-
-
- changed status to open
-
-
assigned issue to
-
assigned issue to
-
- attached geev.h
-
Hi Stefan!
Thanks again for reporting this issue. I’ve just pushed commit
917ab7a
, which fixes the compilation issues with Intel MKL 2019u4. If you continue to experience compilation issues despite this commit, please reopen this issue.Best regards,
Klaus!
-
- changed status to resolved
Commit 917ab7a fixes the compilation issues of the Blaze LAPACK functions with the Intel MKL 2019u4. The fix is immediately available via cloning the Blaze repository and will be officially released in Blaze 3.7.
-
reporter - changed status to open
Hi Klaus,
thanks a lot for the quick fix. It eliminated a lot of errors. However, the following errors are still occurring:
1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/gges.h(428,4): error C2664: "void cgges_(const char *,const char *,const char *,MKL_C_SELECT_FUNCTION_2,const int *,MKL_Complex8 *,const int *,MKL_Complex8 *,const int *,int *,MKL_Complex8 *,MKL_Complex8 *,MKL_Complex8 *,const int *,MKL_Complex8 *,const int *,MKL_Complex8 *,const int *,float *,int *,int *)" : Konvertierung von Argument 4 von "Selctg" in "MKL_C_SELECT_FUNCTION_2" nicht möglich 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/gges.h(428,63): message : Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat 1>C:\software\libs\MKL\include\mkl_lapack.h(8557,6): message : Siehe Deklaration von "cgges_" 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/gges.h(539,4): error C2664: "void zgges_(const char *,const char *,const char *,MKL_Z_SELECT_FUNCTION_2,const int *,MKL_Complex16 *,const int *,MKL_Complex16 *,const int *,int *,MKL_Complex16 *,MKL_Complex16 *,MKL_Complex16 *,const int *,MKL_Complex16 *,const int *,MKL_Complex16 *,const int *,double *,int *,int *)" : Konvertierung von Argument 4 von "Selctg" in "MKL_Z_SELECT_FUNCTION_2" nicht möglich 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/gges.h(539,63): message : Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat 1>C:\software\libs\MKL\include\mkl_lapack.h(27386,6): message : Siehe Deklaration von "zgges_" 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/trsv.h(144,4): error C3861: "strsv_": Bezeichner wurde nicht gefunden. 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/trsv.h(191,4): error C3861: "dtrsv_": Bezeichner wurde nicht gefunden. 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/trsv.h(240,4): error C3861: "ctrsv_": Bezeichner wurde nicht gefunden.
-
Hi Stefan!
I apologize for the continued trouble, but unfortunately we cannot reproduce the compilation issue on our system. Still, this problem could affect many users of Blaze and thus we are of course interested in a solution. Thus your help is highly appreciated. We are dealing with the issue now and will provide a fix as soon as possible.
Best regards,
Klaus!
-
reporter I could fix:
1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/gges.h(428,4): error C2664: "void cgges_(const char *,const char *,const char *,MKL_C_SELECT_FUNCTION_2,const int *,MKL_Complex8 *,const int *,MKL_Complex8 *,const int *,int *,MKL_Complex8 *,MKL_Complex8 *,MKL_Complex8 *,const int *,MKL_Complex8 *,const int *,MKL_Complex8 *,const int *,float *,int *,int *)" : Konvertierung von Argument 4 von "Selctg" in "MKL_C_SELECT_FUNCTION_2" nicht möglich 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/gges.h(428,63): message : Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat 1>C:\software\libs\MKL\include\mkl_lapack.h(8557,6): message : Siehe Deklaration von "cgges_" 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/gges.h(539,4): error C2664: "void zgges_(const char *,const char *,const char *,MKL_Z_SELECT_FUNCTION_2,const int *,MKL_Complex16 *,const int *,MKL_Complex16 *,const int *,int *,MKL_Complex16 *,MKL_Complex16 *,MKL_Complex16 *,const int *,MKL_Complex16 *,const int *,MKL_Complex16 *,const int *,double *,int *,int *)" : Konvertierung von Argument 4 von "Selctg" in "MKL_Z_SELECT_FUNCTION_2" nicht möglich 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/gges.h(539,63): message : Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat 1>C:\software\libs\MKL\include\mkl_lapack.h(27386,6): message : Siehe Deklaration von "zgges_"
by changing line 426 in clapack/gges.h
using Selctg = int (*)( const float*, const float* ) to using Selctg = int (*)(const MKL_Complex8*, const MKL_Complex8* );
and line 537
using Selctg = int (*)( const double*, const double* ); to using Selctg = int (*)( const MKL_Complex16*, const MKL_Complex16* );
-
reporter For the errors:
1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/trsv.h(144,4): error C3861: "strsv_": Bezeichner wurde nicht gefunden. 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/trsv.h(191,4): error C3861: "dtrsv_": Bezeichner wurde nicht gefunden. 1>C:\software\libs\BLAZE\blaze/math/lapack/clapack/trsv.h(240,4): error C3861: "ctrsv_": Bezeichner wurde nicht gefunden.
It seems that these routines are now part of mkl_cblas.h there no adapters
strsv_
,dtrsv_
,ctrsv_
available anymore in the mkl header files. At least I could not find them anymore .https://software.intel.com/en-us/mkl-developer-reference-c-cblas-trsv
I removed the adapters (I dot need ?trsv_ support. ==> It works now.
Thanks again for your help and time!
Stefan
-
Hi Stefan!
Thanks a lot for your help. I’ve pushed two more commits that hopefully take care of all issues. Could you please confirm that there is no more issues with the MKL 2019u4? Thanks,
Best regards,
Klaus!
-
- changed status to resolved
-
reporter Can confirm! ThX
- Log in to comment
Hi Stefan!
Thanks a lot for pointing out this defect. Despite the fact that we are constantly testing with the MKL we have not encountered this problem before. However, it seems to be related to the changes we integrated for issue
#251.I’m at Meeting C++ right now, thus my access to the necessary systems is limited. If you are not afraid to touch code, however, you could help me to fix the issue as quickly as possible. Please replace the file
<blaze/math/lapack/clapack/geev.h>
with the attached file. If allgeev()
related errors are gone, I’d be able to fix the issue within the next two days. Your help is very much appreciated!Best regards,
Klaus!