FFTW

Setting number_of_user_threads for Intel® Math Kernal Library FFTW3 wrappers

Consider the case when you

  • Create a FFTW3 plan and use the plan for sequential DFT computation on each thread in your parallel region
  • Use Intel Math Kernal Library (Intel MKL) FFTW3 wrappers
  • Want the best performance

Intel MKL FFTW3 wrappers are thread safe by default. However, you should set one additional Intel MKL variable to get the best performance with Intel MKL. Set the number_of_users_threads variable as described below.

In C:

#include "fftw3.h"

  • 中级
  • 英特尔® C++ Composer XE
  • 英特尔® 数学核心函数库
  • OpenMP*
  • FFT
  • FFTW
  • FFTW3
  • fourier transform
  • MKL FFTW3 wrappers
  • number_of_users_threads
  • 优化
  • 并行计算
  • 线程
  • 通过FFTW Wrapper 使用 MKL DFT 函数

     提起FFT/DFT计算,我们会常常想起两个函数库:FFTW 与Intel MKL.  FFTW 提供一个广为流行关于FFT计算的函数接口。 现有的许多应用,就是基于了FFTW接口的调用。 而Intel MKL 是一个高度优化的数学计算函数。对于一些常用的计算函数,如矩阵运算,方程求解,随机数生成等, 它提供了高性能,对不同平台专门优化的代码。 Intel MKL 提供了一些FFT 计算的函数,但MKL函数接口与FFTW 有所区别。

    我原有的程序调用了FFTW函数,如果想使用高效的MKL 的优化代码,除了改写原程序,使用 Intel MKL 的函数,还有没有其它更为方便的的办法呢?
    所幸的是,在Intel MKL 中,提供一个针对FFTW接口的Wrapper.  通过这个Wrapper, 程序可以将FFTW函数调用,转化为Intel MKL 的函数调用。 这样,无需修改原程序,我们也能调用 MKL的DFT 计算函数。

    我们看看一些具体的步骤:

    首先,需要确定程序中FFTW接口的版本
    Intel MKL提供针对FFTW 2.x and FFTW 3.x以及MPI FFTW相兼容的wrapper。 其Fortran 与 C 的接口在下面的目录下:

    订阅 FFTW