快速傅里叶(Fast Fourier Transform)运算库,是快速计算序列的离散傅里叶变换(DFT)或其逆变换的方法,广泛的应用于工程、科学和数学领域,将傅里叶变换计算需要的复杂度从O(n2)降到了O(n log n),被IEEE科学与工程计算期刊列入20世纪十大算法。
FFT(Fast Fourier Transform)库包含一系列快速傅里叶变换函数的接口标准,KML_FFT库包含以下六大类函数:
- plan函数:用于建立FFT变换的plan,plan使用完毕后需要通过调用kml_fft(f/h)_destroy_plan函数来释放。
- 变换执行函数:用于根据plan执行对应的FFT变换。
- 内存函数:内存分配、释放函数。
- 线程函数:线程初始化、资源释放相关函数。
- MPI Local Size函数:在进程间划分数据。
- MPI transposition函数:转置变换。
对于上述变换,KML_FFT库均支持:
- in-place变换(输入in与输出out是同一个指针),以及out-place变换。
- 单精度以及双精度:单精度函数以kml_fftf_为函数前缀,双精度函数以kml_fft_为函数前缀。其中,单进程函数定义和多进程函数定义的函数说明以双精度为例进行说明。
- planning选项:对于plan函数,参数flags支持选择ESTIMATE模式或PATIENT模式
- ESTIMATE模式:不对不同算法进行实际计算评估,快速选择一个变换方案,可能不是最优的。
- PATIENT模式:实际评估计算多个变换方案,并测量其执行时间,期望得到一个更优的变换方案,代价是plan函数耗时会增加。
以下函数接口定义中,以下接口仅适用于Taishan 200 1280 V2和Taishan 200 2280 V2服务器。
- C Interface以“kml_ffth”开头的接口
- Fortran Interface以“RES = KML_FFTH”的接口