The mkl_types.h file defines datatypes specific to Intel MKL.
C/C++ Type | Fortran Type | LP32 Equivalent (Size in Bytes) | LP64 Equivalent (Size in Bytes) | ILP64 Equivalent (Size in Bytes) |
---|---|---|---|---|
MKL_INT (MKL integer) |
INTEGER (default INTEGER) |
C/C++: int Fortran: INTEGER*4 (4 bytes) |
C/C++: int Fortran: INTEGER*4 (4 bytes) |
C/C++: long long (or define MKL_ILP64 macros Fortran: INTEGER*8 (8 bytes) |
MKL_UINT (MKL unsigned integer) |
N/A |
C/C++: unsigned int (4 bytes) |
C/C++: unsigned int (4 bytes) |
C/C++: unsigned long long (8 bytes) |
MKL_LONG (MKL long integer) |
N/A |
C/C++: long (4 bytes) |
C/C++: long (Windows: 4 bytes) (Linux, Mac: 8 bytes) |
C/C++: long (8 bytes) |
MKL_Complex8 (Like C99 complex float) |
COMPLEX*8 |
(8 bytes) |
(8 bytes) |
(8 bytes) |
MKL_Complex16 (Like C99 complex double) |
COMPLEX*16 |
(16 bytes) |
(16 bytes) |
(16 bytes) |
You can redefine datatypes specific to Intel MKL. One reason to do this is if you have your own types which are binary-compatible with Intel MKL datatypes, with the same representation or memory layout. To redefine a datatype, use one of these methods:
#define MKL_INT size_t #include "mkl.h"
...-DMKL_INT=size_t...
As the user, if you redefine Intel MKL datatypes you are responsible for making sure that your definition is compatible with that of Intel MKL. If not, it might cause unpredictable results or crash the application.