Intel MKL 与一些其他的数学函数库
Intel MKL 提供了优化的数学计算函数,下面的是MKL的函数的接口与它函数库的比较:
BLAS 与 LAPACK 函数接口
BLAS 与LAPACK 函数是求解线性代数问题的标准函数库。NETLIB(http://www.netlib.org)提供了一个开源的实现。Intel MKL函数与NETLIB 的BLAS 与LAPACK函数的接口相兼容,同时,MKL对函数的实现进行了高度的优化。
用户的程序从NETLIB的函数转换到MKL函数的时候,只需在链接的时候,替换相应的Intel MKL 函数库,不需要修改源代码。MKL提供的线性代数库函数包括:
BLAS: BLAS Level 1, BLAS Level 2, BLAS Level 3, Sparse BLAS
LAPACK: 与Netlib 的新LAPACK 3.1 函数接口兼容
ScaLAPACK:与Netlib Scalapack 接口兼容。
MKL 函数与FFTW
FFTW 是由MIT开发的,广泛使用的傅立叶变换函数库。Intel MKL提供与FFTW 2.x and 3.x 相兼容的wrapper函数。 通过这个wrapper函数, FFTW的用户可以用MKL FFT 函数替代原有程序的FFT变换。
MKL提供的wrapper函数为C的源代码,代码位于MKL \examples\fftw2xc目录下。 这些wrapper 函数将FFTW的接口转换为Intel MKL的DFTI傅立叶函数调用。 这样,基于FFTW接口的程序,不再需要修改源代码,就能够使用MKL的DFT变换函数。
需要说明的是,由于FFTW的与MKL 的DFTI的函数功能不完全相同,用户在使用MKL的Wrapper函数去替代FFTW的时候,会有一些具体的限制, 大家可以参见下面的文章: http://www.intel.com/software/products/mkl/docs/fftw_mkl_user_notes_2.htm