13.07.2015 Views

Intel(R) - Computational and Systems Biology at MIT

Intel(R) - Computational and Systems Biology at MIT

Intel(R) - Computational and Systems Biology at MIT

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Intel</strong>® M<strong>at</strong>h Kernel Library Structure 3DftiCre<strong>at</strong>eDescriptor() is MKL_LONG <strong>and</strong> type of the implicit parameter length isMKL_LONG for a one-dimensional transform <strong>and</strong> MKL_LONG[] (th<strong>at</strong> is, an array of numbershaving type MKL_LONG) for a multi-dimensional transform.To bind your C or C++ code with the ILP64 interface, you must provide the -DMKL_ILP64comm<strong>and</strong>-line option to the compiler to enforce MKL_INT <strong>and</strong> MKL_LONG being 64-bit. Andvice-versa, if your code is compiled with -DMKL_ILP64 option, you can bind it only with theILP64 interface, as the LP64 binary interface requires MKL_INT to be 32-bit <strong>and</strong> MKL_LONGto be the st<strong>and</strong>ard long type.Note th<strong>at</strong> certain MKL functions have parameters explicitly declared as int or int[]. Suchintegers are always 32-bit regardless of whether the code is compiled with the-DMKL_ILP64 option.Table 3-2 summarizes how the <strong>Intel</strong> MKL ILP64 concept is implemented:Table 3-2<strong>Intel</strong>® MKL ILP64 conceptThe same include directory forILP64 <strong>and</strong> LP64 interfacesType used for parameters th<strong>at</strong>are always 32-bitType used for parameters th<strong>at</strong>are 64-bit integers for theILP64 interface <strong>and</strong> 32-bitintegers for LP64Type used for all integerparameters of the FFTfunctionsComm<strong>and</strong>-line option tocontrol compiling for ILP64FortranC or C++/includeINTEGER*4intINTEGERMKL_INTINTEGERMKL_LONG-i8 -DMKL_ILP64Compiling for ILP64The same copy of the <strong>Intel</strong> MKL include directory is used for both ILP64 <strong>and</strong> LP64interfaces. So, the compil<strong>at</strong>ion for the ILP64 interface looks like this:Fortran:ifort -i8 -I/include …C or C++:icc -DMKL_ILP64 -I/include …3-7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!