Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

C Datatypes Specific to Intel MKL

The mkl_types.hfile defines datatypes specific to Intel® oneAPI Math Kernel Library (oneMKL).

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® oneAPI Math Kernel Library (oneMKL). One reason to do this is if you have your own types which are binary-compatible with Intel® oneAPI Math Kernel Library (oneMKL) datatypes, with the same representation or memory layout. To redefine a datatype, use one of these methods:

  • Insert the #define statement redefining the datatype before the mkl.h header file #include statement. For example,
    #define MKL_INT size_t
    #include "mkl.h"
  • Use the compiler -D option to redefine the datatype. For example,
    ...-DMKL_INT=size_t...
NOTE:

As the user, if you redefine Intel® oneAPI Math Kernel Library (oneMKL) datatypes you are responsible for making sure that your definition is compatible with that of Intel® oneAPI Math Kernel Library (oneMKL). If not, it might cause unpredictable results or crash the application.