irpas技术客

fftw3.3.8的安装与编译_ALE.code_fftw3安装

大大的周 4397

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 压缩? -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

解压结果部分示意图:

4.? 进入软件包的解压目录

?5. 使用下面命令进行安装,并配上运行的部分示意图:

./configure CC=gcc【这里./configure的格式为 ./configure CC="<the name of your C compiler>",这里的CC是指定一个编译器】

关于这个命令:./configure

——“.”表示为bash这个命令的缩写,是可执行程序

——“/”是指当前路径

——configure二进制的命令,用于检查安装环境

详细可以见下面这个网站关于:configure配置脚本

configure配置脚本的使用 - 诺谦 - 博客园Linux下软件的安装一般由3个步骤组成: 若取消编译: 若卸载软件: 本节主要讨论configure配置脚本。 如下图所示,有些软件就有configure配置脚本: 就可以使用命令./configuhttps://·/lifexy/p/7866453.html

make——编译

sudo make install

make install,编译并安装(比如安装到/usr/bin目录下,然后可以直接使用。因为/usr/bin只有管理员才能向里面添加文件,所以通常要加sudo)

Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

注:make install安装到指定路径

均试验过方法1和2都可行,且方法2没有报错

测试程序与编译

借鉴了下面这个的例1测试程序与编译方式C FFT 快速傅里叶库- fftw-3.3.8_姚家湾的博客-CSDN博客_c fft库在编写C++ 数据采集软件时,会使用到快速傅里叶变换算法,例如振动分析。网络上介绍的比较多的是fftw3。FFTW—Fastest Fourier Transform in the West,是由 MIT 的 Matteo Frigo 博士和 Steven G. Johnson 博士开发的一个完全免费的软件包。FFTW 最初的 release 版本于 1997 年发布,最新的 release ...https://blog.csdn.net/yaojiawan/article/details/90299719

测试程序 #include<fftw3.h> #include<stdio.h> int main() { fftw_complex *in, *out; fftw_plan p; int N= 8; int i; int j; in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); for( i=0; i < N; i++) { in[i][0] = 1.0; in[i][1] = 0.0; printf("%6.2f ",in[i][0]); } printf("\n"); p=fftw_plan_dft_1d(N,in,out, FFTW_FORWARD, FFTW_ESTIMATE); fftw_execute(p); /* repeat as needed*/ for(j = 0;j < N;j++) { printf("%6.2f ",out[j][0]); } printf("\n"); fftw_destroy_plan(p); fftw_free(in); fftw_free(out); return 0; }

注:C源文件到可执行文件一共经历了4个过程:预处理->编译->汇编->链接

-c是汇编,编译器把test.c文件转化成了test.o文件

-o是链接,把test.o链接成最后可执行文件test.exe

具体可看下面的两篇博文,具体将了这四个过程:

gcc -c与gcc -o以及不加参数的区别_忘尘~的博客-CSDN博客_gcc-o一、问题描述可能你在看makefile教程的时候会碰到一个问题,就像我就碰到了,我看的是陈皓 (CSDN)前辈的教程https://seisman.github.io/how-to-write-makefile/overview.html我把问题贴出来,里面有一段makefile是这么写的:edit : main.o kbd.o command.o display.o /...https://blog.csdn.net/BobYuan888/article/details/88709449linux下helloworld程序从开始编译到运行结束过程详解_Lzz张乐的博客-CSDN博客_linux写helloworld并编译本文旨在以hello world程序在ubuntu 16.04 x86_64机器上运行为例,详细讲述这个程序从编译、链接(包括动态链接和静态链接)到加载到运行这个过程中,工具链gcc,运行库glibc,内核,他们是怎么分工协作让这个程序顺利完成加载和运行的;程序编译运行的过程总体流程如下图:以hello world程序为例,使用gcc --verbose参数查看...https://blog.csdn.net/w346665682/article/details/103675228

编译 gcc -c test.cpp -lfftw3 gcc -o test test.o -fftw3

等价于下面这个

g++ test.cpp -o test -lfftw3 实验过程中一些报错及原因:? 关于undefined reference报错的原因是:没有链接正确的库进行编译,因为fftw的这些函数都是在libfftw3.so库中,需要用-lfttw3进行链接?-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基本指令集的拓展

SIMD指令集 - 知乎问身边的小伙伴,发现他们居然都已经开始穿秋裤了!回家赶紧翻出来,穿上。为老了能有一个好身体着想。哎哟,刚刚路过一个美女还漏半截大腿,这岁数大了怎么陪老伴爬山看夕阳啊。???。。 以上是与本文无关的叨…https://zhuanlan.zhihu.com/p/31271788

其中sse与avx都是向量集,但版本不同

发展历程如下:

?

3.在ARM平台上可增加“--enable-neon”,使能ARM NEON流媒体(NEON 技术同样是依靠向量指令来加速计算)加速核心


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #fftw3安装 #fftw #The #Faster #Fourier #transform #in