FFTW使用指南

FFTW使用指南,第1张

参数说明:n为需要进行傅里叶变换的数据个数,in指向输入数据,out指向输出数据,sign(+1:逆傅里叶变换,-1:正傅里叶变换),flags只有两个值,FFTW_MEASURE:FFTW库花费一定的时间帮你设计最优计算时间的 fftw_plan ,如果程序对时间的消耗不是很敏感,可以设置次选项;FFTW_ESTIMATE:FFTW不进行任何的测试,直接创建 fftw_plan ,这个plan可能不是最优的,但是局部最优的。

NOTE: fftw_plan 一次创建可以重复使用。

不能使用

NOTE: FFTW的傅里叶变换未进行归一化,对一组数据进行傅里叶变换后,再对其进行逆变换前需要将数据除以n进行归一化。

需要在头文件中包含

如果没有包含上述头文件,则FFTW将采用默认支持的复数类型。

FFTW通过编译选项与前缀控制单双精度。

二维DFT变换:

表示对n0*n1的矩阵进行DFT,先对每一行进行DFT,然后对每一列进行DFT,这就是所谓的二维DFT。

三维维DFT变换:

一个可能的原因是 boost 的版本较低。

改进办法是执行如下命令:

# sudo apt-get install libboost-all-dev

然后按照文章步骤安装就可以了,为了便于阅览,我们把步骤也贴在这里:

机器 *** 作系统为 Ubuntu14.04,安装了 CUDA7.5。

在家目录下建立 gromacs 目录做为工作目录下,拷贝了 4 个安装包:

openmpi-1.6.5.tar.gz

fftw-3.3.3.tar.gz

cmake-2.8.9.tar

gromacs-5.0.4.tar.gz

1.安装 openmpi

$ cd ~/gromacs

$ tar –xvf openmpi-1.6.5.tar.gz

$ cd openmpi-1.6.5

$ ./configure --prefix=/opt/openmpi

$ sudo make

$ sudo make install

2.安装 fftw

$ cd ~/gromacs

$ tar –xvf fftw-3.3.3.tar.gz

$ cd fftw-3.3.3

$ ./configure --prefix=/opt/fftw –enable-float –enable-shared

$ sudo make

$ sudo make install

3.安装 cmake

$ cd ~/gromacs

$ tar xvf cmake-2.8.9.tar

$ cd cmake-2.8.9

$ ./bootstrap

$ sudo make

$ sudo make install

4.编译 gromacs GPU 版本

$ cd ~/gromacs

$ mkdir build-gpu

$ cd build-gpu

$ sudo cmake .. -DFFTWF_LIBRARY=/opt/fftw/lib/libfftw3f.so -DFFTWF_INCLUDE_DIR=/opt/fftw/include  -DGMX_MPI=ON –DGMX_GPU=ON -DCMAKE_INSTALL_PREFIX=/opt/gromacs-5.0.4-gpu

$ sudo make

$ sudo make install

步骤 4 编译 gromacs 时,cmake 步骤如果有如下提示信息的话,说明 boost 版本低:

配置环境变量:

$ vi ~/.bashrc

增加如下内容:

export PATH=$PATH:/usr/local/cuda/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

export PATH=$PATH:/opt/openmpi/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openmpi/lib

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/fftw/lib

export PATH=$PATH:/opt/gromacs-5.0.4-gpu/bin

保存退出。

关掉当前终端窗口,重新开启一个终端窗口。

下面我们测试一下样例程序在单 GPU 和多 GPU 的数据。

测试服务器配置如下:

CPU:2 颗 E5-2620(6 核心)

内存:64G

GPU:2 片 K80(每片 K80 有 2 核心,所以有 4 个 GPU 设备

在家目录下建立目录 test,将 ADH_bench_systems.tar.gz 拷贝到该目录下。

$ cd ~/test

$ tar xvf ADH_bench_systems.tar.gz

$ cd adh_cubic

$ grompp_mpi –f rf_verlet.mdp

单 GPU 的调用命令是:

$ mdrun_mpi

$ mpirun –np 1 mdrun_mpi

多 GPU 的调用命令是:

$ mpirun –np 2 mdrun_mpi

$ mpirun –np 3 mdrun_mpi

$ mpirun –np 4 mdrun_mpi

单 GPU 设备执行数据如下图

2 个 GPU 设备执行数据如下图:

3 个 GPU 设备执行数据如下图:

4 个 GPU 设备执行数据如下图:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7903779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存