fftw 编译安装说明

FFTW 数学库 



 

官网地址:

http://www.fftw.org/

 

下载地址:

http://www.fftw.org/download.html

 

目前最新版本为

Version 3.3.6 is the latest stable release of FFTW ( 截止2017-04-30)

 

1.什么是DFT?

DFT(Discrete Fourier Transform),即离散傅里叶变换,是傅里叶变换在时域和频域上都呈离散的形式,将信号的时域采样变换为其DTFT的频域采样。


2.什么是FFT?

FFTFast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换(DFT)的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

 

3.什么是FFTW?

FFTW ( the Faster Fourier Transform in the West)是一个快速计算离散傅里叶变换的标准C语言程序集,其由MITM.FrigoS. Johnson开发。可计算一维或多维实和复数据以及任意规模的DFT


4.FFTW库所需的编译环境

Intel Compiler /GNU Compiler + MPI Compiler (如果编译mpi版的fftw)

 

5.安装 Intel Compiler编译器,设置编译环境(如果使用intel的编译器)

如果使用的是IntelCPU,建议使用Intel的编译器。

详细安装方法参见博客相关文章。

 

例如使用TH-1AIntel 2013编译器编译lammps,可以加载如下环境变量:

source /opt/intel/composer_xe_2013.0.079/bin/iccvars.sh intel64    
source /opt/intel/composer_xe_2013.0.079/bin/ifortvars.sh intel64  

6. 安装 MPI Compiler ,设置编译环境

编译并行版的程序需要并行编译器,例如MPI并行的程序需要MPI编译器,常用的MPI例如Intel MPI MPICHOPENMPI等。

不同的机器可能针对自身硬件进行MPI优化,天河系统的MPI是基于开源MPICH进行的二次开发优化,进而支持性能卓越的天河自主高速互联网络。

详细安装方法参见博客相关文章。


例如使用TH-1AIntel 2013编译器编译的mpich,可以加载如下环境变量:

export MPI_HOME=/usr/local/mpi-intel2013
export PATH=$MPI_HOME/bin:$PATH      
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH  


7.默认编译fftw-3.3.6

安装fftw仅需要遵循常见的三步骤即可(configure+make+make install),在这里先介绍一下默认安装,再然着重介绍一些configure的配置选项。

 

fftw-3.3.6-pl2.tar.gz为例,先从官网下载该压缩包。解压缩,并进入源码目录进行编译即可。

tar zxvf fftw-3.3.6-pl2.tar.gz
cd fftw-3.3.6-pl2
./configure
make
make install

这样就可以把fftw库按照默认配置,安装到默认的路径下。

使用的是GNU的编译器,安装到的是/usr/local下面。


8.优化编译参数介绍

但是,我们通常会依据./configure -help得到的信息来添加一些参数来达到优化编译的目录。

接下来我们使用命令查看一些常用配置参数:

 

Installation directories:

--prefix=PREFIX    install architecture-independent files in PREFIX[/usr/local]

设定安装目录

 

Optional Features:

--enable-shared[=PKGS]    build shared libraries [default=no]

是否编译动态库


--enable-static[=PKGS]    build static libraries [default=yes]

是否编译静态库


--enable-single         compile fftw in single precision

--enable-float          synonym for --enable-single

是否编译单精度版本


--enable-sse            enable SSE optimizations

--enable-sse2           enable SSE/SSE2 optimizations

--enable-avx            enable AVX optimizations

--enable-avx2           enable AVX2 optimizations

--enable-neon           enable ARM NEON optimizations

开启针对特定机器架构的优化,这个取决于机器CPU(下面有介绍)。

 

--enable-fma            enable optimizations for machineswith fused multiply-add

开启积和熔加运算(Fused Multiply-Add/FMA)的优化


--enable-mpi            compile FFTW MPI library

是否编译mpi版的fftw


--enable-openmp         use OpenMP directives for parallelism

是否使用OpenMP指令进行并行


--enable-threads        compile FFTW SMP threads library

是否编译FFTW SMP线程库


Some influential environment variables:

  CC          C compiler command

  CFLAGS      C compiler flags

  CPP         C preprocessor

  MPICC       MPI C compiler command

  F77         Fortran 77 compiler command

  FFLAGS      Fortran 77 compiler flags

这部分是指定编译器及编译参数,默认是用GNU的编译器。

为了用intel的编译器,我们需要特别指定一下:CC=icc F77=ifort,相关的参数通常保持默认即可。

 

备注:

1)如何查看CPU是否支持某个指令集呢?使用如下命令可以列出支持的指令集名称

cat /proc/cpuinfo | grep flags | uniq


2)SIMD

SIMD单指令流多数据流(SingleInstructionMultiple Data,SIMD)是一种采用一个控制器来控制多个处理器,同时对一组数据(又称“数据向量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术。


MMX是由英特尔开发的一种SIMD多媒体指令集,SSEStreaming SIMDExtensions)是MMX的扩充指令集,AVXAdvanced VectorExtensions)是IntelSSE延伸架构,FMAFused MultiplyAccumulate)是IntelAVX扩充指令集。


NEON实际上是ARMSIMDSingle InstructionMultiple Data)技术的延续,它是一个结合64128 bitSIMDSingle InstructionMultiple Data 单指令多重数据)指令集。


9.优化编译单双精度版本的FFTW

tar zxvf fftw-3.3.3.tar.gz
cd fftw-3.3.3

# 单精度
./configure --prefix=$HOME/software/fftw/3.3.6-pl2-icc13 \
  CC=icc F77=ifort \
  --enable-shared --enable-static \
  --enable-float \
  --enable-sse --enable-sse2 \
  --enable-avx --enable-avx2 --enable-fma \
  --enable-mpi \
  --enable-threads--enable-openmp
make
make install

# clean一下
make clean

# 双精度
./configure --prefix=$HOME/software/fftw/3.3.6-pl2-icc13 \
  CC=icc F77=ifort \
  --enable-shared --enable-static \
  --enable-sse2 --enable-avx --enable-avx2 --enable-fma \
  --enable-mpi \
  --enable-threads--enable-openmp
make
make install

欢迎交流!




  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: fftw3是一个用于计算快速傅里叶变换的,提供了高效的算法和性能优化。在编译fftw3之后,可以选择编译为64位版本。 64位版本的编译可以最大限度地利用64位处理器的优势,包括更大的内存寻址范围,更高的内存容量和更快的运算速度。此外,64位版本还可以充分利用操作系统提供的64位寄存器和指令集,进一步提高计算性能。 要编译fftw3为64位版本,首先需要确保所使用的编译器支持64位。通常,现代操作系统和编译器都支持64位编译。然后,可以按照fftw3的编译指南进行操作,针对64位编译进行配置和编译。 在配置时,可以通过设置适当的参数来指示fftw3进行64位编译。这样,编译器将会生成针对64位处理器的代码。在编译过程中,我们需要确保编译器选项正确设置,以充分利用64位架构的优势。 编译完成之后,可以在应用程序中使用64位的fftw3进行计算。使用64位版本的fftw3,可以处理更大的数据集合,提高计算的精度和效率,对于一些需要大规模计算的科学计算或信号处理应用,特别有意义。 64位编译fftw3可以更好地适应现代计算环境的需求,提供更高效和更强大的计算能力。对于需要处理大规模数据集或进行复杂计算的应用,使用64位版本的fftw3将会带来更好的性能和体验。 ### 回答2: FFTW3是一个用于快速傅里叶变换(Fast Fourier Transform)的开源软件。在编译FFTW3时选择64位系统可以获得更好的性能和更大的内存访问范围。 在64位系统上编译FFTW3主要有以下几个步骤: 1. 下载FFTW3源代码:可以从官方网站或软件源获取FFTW3的源代码。 2. 解压源代码:使用合适的解压工具将下载的源代码解压到指定的目录。 3. 进入解压后的目录:使用终端或命令行工具,进入解压后的FFTW3源代码所在的目录。 4. 配置编译选项:执行`./configure`命令,可以选择配置各种编译选项,如安装目录、优化选项等。可以使用`--enable-avx`或`--enable-sse2`等选项启用特定的硬件加速。 5. 执行编译命令:执行`make`命令开始编译FFTW3。这一步需要等待一段时间,因为编译过程可能相对较长。 6. 安装编译结果:编译完成后,执行`make install`命令将编译好的文件安装到指定的目录中,默认是系统的目录。 7. 验证安装结果:可以通过运行一个简单的示例程序来验证FFTW3是否成功编译安装。可以在FFTW3的官方文档或示例程序中找到相关的示例代码。 在64位系统上编译FFTW3可以充分利用64位系统的寻址能力和更大的内存访问范围,从而使得FFTW3能够处理更大规模的数据和更复杂的计算。另外,64位系统的处理器指令集通常包括更多的特殊指令,可以进一步提高FFTW3的计算性能。因此,选择在64位系统上编译FFTW3是一个明智的选择。 ### 回答3: fftw(即Fastest Fourier Transform in the West,西方最快的傅立叶变换)是一个用于计算离散傅立叶变换(DFT)的开源软件fftw3是该的第三个主要版本,支持许多高效的算法和优化,以提供更快的傅立叶变换计算。 当编译fftw3时,我们可以选择编译为64位,这意味着编译生成的二进制文件将适用于64位操作系统。64位操作系统可以在具备更大物理内存的系统上运行,从而提供更好的性能和更大的内存支持。 需要注意的是,编译fftw3为64位需要确保所用的编译器、操作系统和都支持64位。通常,在64位操作系统上使用64位编译器是一个常见的做法。 编译fftw3为64位的具体步骤可能因不同的操作系统和编译环境而异。一般来说,我们需要在编译之前检查系统和环境是否支持64位,并确保安装了对应的开发工具和。然后,我们可以根据具体的编译环境设置相应的编译选项,将fftw3编译为64位。最后,运行编译命令进行编译编译完成后,我们将获得一个适用于64位操作系统的fftw3和相关的可执行文件。这些文件可以用于在64位系统上进行傅立叶变换的计算。 总而言之,将fftw3编译为64位可以提供更好的性能和更大的内存支持,适用于64位操作系统。具体的编译步骤可能因操作系统和编译环境而异,可以根据具体情况进行设置和编译

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值