使用Intel MKL FFTW接口函数
Intel MKL提供与FFTW 2.x and 3.x 相兼容的wrapper函数。FFTW的用户可以用MKL FFT 函数替代原有程序的FFT变换, 获得更高的性能。
下面是使用MKL FFTW的步骤:
1) 确定FFTW接口版本。
Intel MKL 支持 FFTW 2.x 与 3.x 的 Fortran 与 C 的接口。
相应的接口分别在下面的目录下:
/opt/intel/mkl/ /10.x.xxx/interfaces/fftw2xc
/opt/intel/mkl/10.x.xxx /interfaces/fftw2xf
/opt/intel/mkl/10.x.xxx /interfaces/fftw3xc
/opt/intel/mkl/10.x.xxx /interfaces/fftw3xf
2)Build 接口函数。
创建接口函数的步骤可以查看MKL FFTW Wrapper的文档(/opt/intel/mkl/10.x.xxx/doc/fftw2xmkl_notes.htm(fftw3xmkl_notes.htm).
下面是一个用Intel Compiler, 在EM64的Linux 平台上创建一个 FFT2.x Fortran 接口的例子:
>cd /opt/intel/mkl/10.x.xxx /interfaces/fftw2xf
>make libem64t F=intel precision=MKL_DOUBLE
# Itaniums使用 make lib64 F=intel precision=MKL_DOUBLE
3)链接MKL函数与FFTW 接口函数。
成功编译FFTW接口后, FFTW接口函数在 /opt/intel/mkl/10.x.xxx/lib/em64t (Itaniums平台为:/opt/intel/mkl/10.x.xxx/lib/64/) 目录下。
libfftw2xf_intel.a 是Intel 编译器 FFTW2.x Fortran接口,GCC 编译器的类库名称与此类似。
链接程序时,只需要链接FFTW接口函数与Intel DFT MKL函数。下面是在EM64T的平台上,使用Intel Compiler 的一个例子:
>ifort -I/opt/intel/mkl/10.x.xxx/include/ -I/opt/intel/mkl/10.x.xxx/include/fftw/ mycode.f -L/opt/intel/mkl/10.x.xxx/lib/em64t/ -lfftw2xf_intel -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -pthread