author: Tao Sun
date: 7 May 2022.
本次编译是基于 GNU C++ 环境的,因此务必确定g++编译器可用,使用如下命令验证:
命令:g++ --version
出现类似如下输出则表明编译器可用:
到FFTW官网(http://www.fftw.org/download.html)下载压缩文件,FFTW最新最稳定版本是FFTW 3.3.10,可以之间下载下图中的fftw-3.3.10.tar.gz压缩文件。若要下载之前版本,点击下图browse可以下载之前版本。
这里以FFTW 3.3.9为例,下载下图中fftw-3.3.9.tar.gz压缩文件。
下载之后上传到集群对应用户对应目录下。
终端进入到fftw-3.3.9.tar.gz压缩文件存放目录,直接使用Centos 下的解压缩命令即可:
命令:tar -xvf fftw-3.3.9.tar.gz
解压后终端进入fftw-3.3.9文件夹,
命令: cd fftw-3.3.9
安装可以简单的通过以下命令安装:
命令:
./configure
make
make install
这样安装在执行make install时通常需要root权限,要想不适应root权限可以通过使用configure中–prefix参数指定一个不同的安装目录,具体命令如下:
命令:
./configure --prefix=path --enable-threads
其中
- path为 ’/home/uesr/’ ,是指定软件的安装路径(绝对路径),下面用到的path都为此路径;
- ’–enable-threads’是’–enable-threads=yes’的缩写,选择一个线程库,在Installing GCC: Configuration - GNU Project中有详细介绍,此选项可以更改库 ABI。)
make
make install
注:如果在配置或编译过程中遇到问题,您可能需要在重试之前运行“make distclean”;确保没有以前编译尝试留下的任何陈旧文件。
3.运行测试 3.1 使用make check 3.2 使用自己准备的例子将自己准备的cpp文件命名为fft_demo.cpp,通过以下命令编译成可执行文件。
命令:
g++ fft_demo.cpp -o fftw_test.exe -lfftw3 -Lpath+/lib -Ipath+/include
-L和-I后为我们指定软件的安装路径的lib文件夹和include文件夹
会生成fftw_test.exe可执行程序
通过命令(./fftw_test.exe)执行测试例子
附录:
#include#include int main() { int N = 8; fftw_complex *out = NULL, *in = NULL ,*in2; fftw_plan p,p1; in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N); out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N); in2 = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N); printf("original signal: "); for(int i = 0;i in[i][0] = 2*i - 1; in[i][1] = 0; printf("%f ",in[i][0]); } p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD,FFTW_ESTIMATE); fftw_execute(p); printf("nbefore fourier: "); for(int i =0;i printf("%.2f +j %.3f ",out[i][0],out[i][1]); } p1 = fftw_plan_dft_1d(N,out,in2,FFTW_BACKWARD,FFTW_ESTIMATE); fftw_execute(p1); printf("nbefore ifourier: "); for(int i = 0;i in2[i][0] = in2[i][0] / N ; printf("%.2f ",in2[i][0]); } printf("n"); fftw_destroy_plan(p); fftw_free(in); fftw_free(out); fftw_free(in2); return 0; }



