FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开发。可计算一维或多维实和复数据以及任意规模的DFT。
- 一个用C语言编写、支持一维和多维变换、支持任意大小输入、支持实数和复数的数字傅里叶变换软件库
安装
1. 从官 (http://fftw.org/index.html)【外 ,可能要架VPN】下载源码压缩包 fftw-3.3.8.tar.gz
2. 将 fftw-3.3.8.tar.gz上传到鲲鹏云服务器
3. 在linux环境下解压 fftw-3.3.8.tar.gz
解压命令:tar -zxvf 名字.tar.gz【这里就是tar -zxvf fftw-3.3.8.tar.gz】
可加-C 命令指定解压目录
具体参数为:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性即是否需要用 gzip 压缩br> -j :是否同时具有 bzip2 的属性即是否需要用 bzip2 压缩br> -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!解压结果部分示意图:
4. 进入软件包的解压目录
5. 使用下面命令进行安装,并配上运行的部分示意图:
-
./configure CC=gcc【这里./configure的格式为 ./configure CC=“
“ ,这里的CC是指定一个编译器】
关于这个命令:./configure
——“.”表示为bash这个命令的缩写,是可执行程序
——“/”是指当前路径
——configure二进制的命令,用于检查安装环境
详细可以见下面这个 站关于:configure配置脚本
-
make——编译
-
sudo make install
make install,编译并安装(比如安装到/usr/bin目录下,然后可以直接使用。因为/usr/bin只有管理员才能向里面添加文件,所以通常要加sudo)
Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
注:make install安装到指定路径
均试验过方法1和2都可行,且方法2没有 错
测试程序与编译
- 测试程序
注:C源文件到可执行文件一共经历了4个过程:预处理->编译->汇编->链接
-c是汇编,编译器把test.c文件转化成了test.o文件
-o是链接,把test.o链接成最后可执行文件test.exe
具体可看下面的两篇博文,具体将了这四个过程:
- 编译
等价于下面这个
- 实验过程中一些 错及原因:
- -lfftw3的意思是:编译的时候指定链接库的参数
-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了。
这里的lib是 libfftw3.so ,所以是lfftw3??
- gcc包含的c/c++编译器:
其中:gcc和cc是一样的,c++和g++是一样的
一般c程序就用gcc编译,c++程序就用g++编译
最终运行结果
拓展内容
fftw可以提供多种调用方式,如果./configure什么都不加的话,只会安装一个基础的libfftw.so。
实际上,它还可以被mpi并行调用,openmp串行调用,threads多线程调用,提供fortran的访问接口,支持sse4 avx 等(x86)向量集,支持neon 等(ARM)向量集,支持单精度float,支持双精度double(默认)等等
fftw这个数学库是linux的科学计算软件中使用频率最高的一个,包含的知识点也是最多的。
名词解释:
1.openmp和MPI:
- OpenMP:线程级(并行粒度);共享存储;隐式(数据分配方式);可扩展性差;
- MPI:进程级;分布式存储;显式;可扩展性好。
OpenMP采用共享存储,意味着它只适应于SMP,DSM机器,不适合于集群。MPI虽适合于各种机器,但它的编程模型复杂:
- 调试MPI程序麻烦;
- MPI程序可靠性差,一个进程出问题,整个程序将错误;
2.sse与avx:
- SIMD:IntelCPU基本指令集的拓展
其中sse与avx都是向量集,但版本不同
发展历程如下:
3.在ARM平台上可增加“–enable-neon”,使能ARM NEON流媒体(NEON 技术同样是依靠向量指令来加速计算)加速核心
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24962 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!