MKL matrix-matrix multiplication issue
Submitted by dvi..@..il.com
Assigned to Nobody
Link to original bugzilla bug (#573)
Version: 3.2
Operating system: Windows
Description
This issue arises when using eigen with MKL on a 64-bit windows system (with both the intel and the microsoft compiler).
When I create mapped matrix objects and multiple them, MKL reports an error: Parameter 8 invalid on entry to DGEMM.
I realized that this was happening because the parameters lda,ldb,ldc are set to lhsStride,rhsStride and resStride, which have garbage values when mapped matrices are used. I was able to fix it by changing lines 87-89 in GeneralMatrixMatrix_MKL.h to the following:
lda = (transa=='N')? ((m>1)?m:1) : ((k>1)?k:1) /(MKL_INT)lhsStride/; \
ldb = (transb=='N')? ((k>1)?k:1) : ((n>1)?n:1)/(MKL_INT)rhsStride/; \
ldc = (m>1)?m:1/(MKL_INT)resStride/; \
The comments have the original statements. Of course, this assumes a default unit stride, so it is not an appropriate fix.
Also, in the file Assign_MKL.h, line 213 should be #ifndef, not #ifdef, otherwise, eigen fails to compile.