首页 > 系统相关 >FFTW库安装(Linux系统)

FFTW库安装(Linux系统)

时间:2023-11-24 15:35:23浏览次数:45  
标签:FFTW -- fftw 编译 enable Linux 安装

https://zhuanlan.zhihu.com/p/600161033

 

 

本文主要介绍在Linux系统下使用GCC和OpenMPI安装FFTW库。

一、什么是FFTW

FFTW意为Faster Fourier Transform in the West,是一个C语言的快速计算离散傅里叶变换库,它是由MIT的M.Frigo和S. Johnson开发的,可计算一维或多维实和复数据以及任意规模的DFT。目前最新版本为3.3.10,其官网地址为:https://www.fftw.org/

大量测试结果表明,FFTW库要比其它开源傅里叶变换库或软件要快,因此如果你的程序中包含傅里叶变换的相关计算,FFTW库是一个很好的选择。

二、环境要求

本安装教程的系统要求为Linux,需要读者已经安装好了GCC和OpenMPI。

三、安装流程

1、下载安装包

本文以3.3.8版本为例,读者可以去官网寻找相应的压缩包,也可以直接点击下面的链接进行下载。

fftw-3.3.8官网下载链接​fftw.org/pub/fftw/fftw-3.3.8.tar.gz

下载完成文件是.tar.gz格式的压缩包。

2、安装前准备

先创建一个新的文件夹用来放置安装完成后的库文件:

mkdir /home/xxx/usr/fftw

上面语句中的/home/xxx代表个人用户的主目录或者root账户的根目录。

然后解压之前下载的安装包:

tar -xzvf fftw-3.3.8.tar.gz

关于tar解压命令可以看我的另一篇文章:

Linux下的压缩、解压命令4 赞同 · 0 评论文章

进入解压后的文件夹:

cd fftw-3.3.8/

3、安装

FFTW的编译分为三步:

./configure #进行安装配置
make #编译
make install #安装

下面逐步进行讲解。

(1)进行安装配置

./configure --prefix=/home/xxx/usr/fftw --enable-mpi --enable-openmp --enable-threads --enable-shared MPICC=mpicc CC=gcc F77=gfortran

输入完成后按回车键进行配置。

下面对这里用到的参数做简单介绍:

  • --prefix:设定安装目录
  • --enable-mpi:是否编译mpi版的fftw库
  • --enable-openmp:是否使用OpenMP指令进行并行
  • --enable-threads:是否编译FFTW SMP线程库
  • --enable-shared:是否编译动态库
  • MPICC:指定C语言的MPI编译器
  • CC:指定C语言的编译器
  • F77:指定Fortran 77的编译器

除了以上参数外,还有许多其他参数读者可通过./configure --help命令来查看具体含义,然后根据自己的需求来进行配置。

(2)编译

make

输入之后按回车键进行编译。

(3)安装

make install

输入完成后按回车键进行安装。

执行完以上3个步骤后即完成安装。

4、设置环境变量

安装完成后还需要在.bashrc中设置FFTW库相关的环境变量,打开~/.bashrc,在其中添加如下代码:

export LD_LIBRARY_PATH=/home/xxx/usr/fftw/lib:$LD_LIBRARY_PATH

保存并退出后用source ~/.bashrc命令更新环境变量。

四、测试

以下附上一段测试代码:

#include<iostream>
#include<iomanip>

#include<fftw3.h>

using namespace std;
int main(){
    int N=10;

    fftw_complex *in,*out;
    in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
    out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);

    if((in==NULL)||(out==NULL)){
        printf("Error:insufficient available memory\n");
    }
    else{
        for(int i=0; i<N; i++){
            in[i][0] = i+1;
            in[i][1] = 0;
        }
    }

    fftw_plan  p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD,FFTW_ESTIMATE);

    fftw_execute(p); /* repeat as needed */
    fftw_destroy_plan(p);
    fftw_cleanup();

    for(int i=0;i<N;i++){/*OUTPUT*/
        cout<<setprecision(6)<<setiosflags(ios::fixed);
        cout<<in[i][0]<<", "<<in[i][1]<<"i"<<endl;
    }
    cout<<endl;
    for(int i=0;i<N;i++){/*OUTPUT*/
        cout<<setprecision(6)<<setiosflags(ios::fixed);
        cout<<out[i][0]<<", "<<out[i][1]<<"i"<<endl;
    }

    if(in!=NULL) fftw_free(in);
    if(out!=NULL) fftw_free(out);

    return 0;
}

保存代码后输入编译命令进行编译:

g++ ./fftw.cpp -o fftw.exe -lfftw3

运行结果如下:

 

标签:FFTW,--,fftw,编译,enable,Linux,安装
From: https://www.cnblogs.com/wcxia1985/p/17853846.html

相关文章

  • Linux如何查看系统版本
    https://baijiahao.baidu.com/s?id=1780057482158241756&wfr=spider&for=pc在Linux系统中,查看系统版本是非常重要的,因为它可以帮助我们了解系统的基本情况,包括内核版本、发行版类型等等。以下是几种常见的查看Linux系统版本的方法:一、使用命令行查看1、使用uname命令uname-a......
  • 安装算量软件哪个好_鹏业安装算量优势特点
    鹏业安装算量软件通过智能分析电子图纸信息,融合安装工程专业特点,快速、准确、自动建立消防喷淋、强(弱)电、通风空调、消火栓、给排水等各专业的数据模型,自动完成工程量计算、三维模型数据的建立,轻松实现在BIM中的应用。一、使用鹏业安装算量软件的优势特点1.无需加密锁在线免费使......
  • (Mac)Maven 的安装
    下载安装官网下载直接解压liuzd@liuzhendongdeMacBook-Pro~%cdDevelop/Toolsliuzd@liuzhendongdeMacBook-ProTools%tar-zxvfapache-maven-3.8.1-src.tar.gz打开配置#找到配置文件并使用指定app打开liuzd@liuzhendongdeMacBook-ProTools%mvapache-mave......
  • 使用CloudStats监控Linux服务器
    CloudStats是一个服务器监控平台,可让您轻松地监控整个服务器基础平台,同时也可以立即采取行动并解决问题。CloudStats监控工具不需要任何特殊技能或知识来执行设置并开始监控您的服务器。因为是国外的服务器,打开有点慢!在服务器( /Debian/Ubuntu/Fedora等)上安装CloudStats......
  • Linux有哪些好用的双向文件同步软件?
    文件同步在生活及工作中非常常见,尤其是在工作当中,文件同步需求量持续增加,因此也出现了许多文件同步软件,为大家工作带来了诸多便利。那么Linux有哪些好用的双向文件同步软件?本文为大家推荐几款,快来看看吧。Linux双向文件同步软件推荐:1、Unison免费和开源的工具,可用......
  • windows中vscode通过ssh连接linux 保存公钥 运行c程序
    1、首先,vscode下载以下几个扩展,c/c++、remotedevelopment 2、下载完成后编写自己的linux连接配置文件 配置文件包括host、hostname、user和port,以下是我的配置,编辑完成保存,然后直接新建连接即可 3、新建的连接每次重连都需要输入密码,通过ssh公钥来解决首先,打开windo......
  • window上docker安装dnmp环境
    搭建环境Nginx+PHP+MySQL+Redis1.下载MySQL镜像dockersearchmysql-8dockerpull mysql:8或者dockerpullmysql:8.0.27 2.启动一个mysql容器dockerrun-d-p3306:3306-eMYSQL_ROOT_PASSWORD=public123456--namemysql_8.0.27mysql:......
  • Linux环境下安装jdk1.8nacos-server 2.2.3
    JDK1.8安装1.下载地址jdk1.8https://www.oracle.com/java/technologies/downloads/2.ftp上传##/usr/local/software/jdk-8u391-linux-x64.tar.gzcd/usr/local/software/tar-zxvfjdk-8u391-linux-x64.tar.gz##重命名mv/usr/local/software/jdk1.8.0_391/usr/local......
  • mac端 安卓UI自动化安装环境配置
    安装JDK 官网下载安装包https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 选择对应mac版本的dmg文件下载安装 配置Java环境终端执行命令vi~/.bash_profile文件,/Library/Java/JavaVirtualMachines/jdk-17.jdk/Content......
  • Linux文件权限
    通过学习Linux文件权限章节,我深刻认识到了文件权限在Linux系统中的重要性。文件权限是Linux系统中的一个核心概念,它决定了用户对文件和目录的访问权限。因此,对于Linux系统管理员来说,文件权限是必须要掌握的技能之一。在这个章节中,我学习了Linux文件权限的基础知识,包括文......