fftw_plan_dft_2d优化方法,

fftw_plan_dft_2d的输入和输出都是

fftwf_complex * *

经过测试发现,

fftw_plan_dft_2d创建以后,把输入数据换掉(不是重新实例化,把数据内容更新),重新执行后,结果也会更新,

这样,输入输出的数组大小类型不变,就可以反复使用,不用每次执行时创建与释放,效率能提高好几倍乃至好几十倍。

加上参数FFTW_WISDOM_ONLY,分配内存为空。

fftPlan  = fftwf_plan_dft_r2c_2d(row, col, (float *) xtv[0].data, 
                    (fftwf_complex *) xtfv[0].data, FFTW_WISDOM_ONLY|FFTW_PATIENT);

#include "fftw3.h"
#include <iostream>
#include <string>
#include <cassert>
using namespace std;
int main(int argc,char * argv[]) {int row=10; int col;float * realInput;fftwf_complex * complexOutput;fftwf_complex * complexInput;float * realOutput;for(int i= 1;i<argc;i++){row = col;realInput   = (float *)  fftwf_malloc(sizeof (float) * row * col );assert(realInput!=nullptr);complexOutput = (fftwf_complex *) fftwf_malloc(sizeof (fftwf_complex) * row * (col/2+1));assert(complexOutput!=nullptr);fftwf_plan r2c = fftwf_plan_dft_r2c_2d(row, col, realInput, complexOutput, FFTW_PATIENT);if(r2c == nullptr ){cout << "fftwf create r2c plan failed!" << endl;cout << "plan row: " << row << " col: " << col << endl;exit(1);} else {cout << "fftwf success to create fft r2c!" << endl;cout << "plan row: " << row << " col: " << col << endl;}complexInput = (fftwf_complex *) fftwf_malloc(sizeof (fftwf_complex) * row * (col/2+1) );assert(complexInput!=nullptr);realOutput = (float *) fftwf_malloc(sizeof (float) * row * col);assert(realOutput!=nullptr);fftwf_plan c2r = fftwf_plan_dft_c2r_2d(row, col, complexInput, realOutput, FFTW_PATIENT);if(c2r == nullptr){cout << "fftwf create c2r failed!" << endl;cout << "plan row: " << row << " col: " << col << endl;exit(1);} else {cout << "fftwf success to create c2r!" << endl;cout << "plan row: " << row << " col: " << col << endl;}}string wisdomFile = "wisdom";if(1==fftwf_export_wisdom_to_filename(wisdomFile.c_str()))cout << "fftwf_export_wisdom_to_filename wisdom success" << endl;elsecout << "fftwf_export_wisdom_to_filename wisdom fail" << endl;}

fftw_plan_dft_2d优化相关推荐

  1. fftw_plan_dft_2d重复优化

    原文:http://bbs.csdn.net/topics/330133751 #include <stdio.h> #include <stdlib.h> #include  ...

  2. 系统遇到并发瓶颈时的优化方向

    1. 设计高质量代码优化Map 使用读写锁,读写锁 读多写少(存储用户连接信息) map不要太大. 2. 突破系统瓶颈 优化连接数 linux下的系统最大连接数 3. 降低对Cpu资源的使用 降低io ...

  3. SVN优化(一) SVN忽略maven项目的target

    SVN优化(一) SVN忽略maven项目的target 一 eclipse刚开始导入的项目: 二  解决办法 方式一: 在项目代码路径,如: F:\xyx\sl  鼠标右键,"Tortoi ...

  4. 如何定位并优化慢查询Sql

    根据慢日志定位慢查询SQL. 查询慢日志相关变量,并进行设置: 主要关注下述三个变量: long_query_time.show_query_log_file.show_query_log 慢查询sq ...

  5. kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势

    陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...

  6. 各种优化算法公式快速回忆优化器-深度学习

    本文是Deep Learning 之 最优化方法系列文章的RMSProp方法.主要参考Deep Learning 一书. 整个优化系列文章列表: Deep Learning 之 最优化方法 Deep ...

  7. Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现

     学习工具最快的方法就是在使用的过程中学习,也就是在工作中(解决实际问题中)学习.文章结尾处附完整代码. 一.数据准备   在Pytorch中提供了MNIST的数据,因此我们只需要使用Pytorch提 ...

  8. 从 SGD 到 Adam —— 深度学习优化算法概览 各种优化器 重点

    20210701 https://blog.51cto.com/u_15064630/2571266 [机器学习基础]优化算法详解 详细 https://blog.csdn.net/u01338501 ...

  9. 梯度优化算法Adam

    最近读一个代码发现用了一个梯度更新方法, 刚开始还以为是什么奇奇怪怪的梯度下降法, 最后分析一下是用一阶梯度及其二次幂做的梯度更新.网上搜了一下, 果然就是称为Adam的梯度更新算法, 全称是:自适应 ...

最新文章

  1. nginx安全日志分析脚本的编写
  2. 代理中调用alert()
  3. linux上给其他在线用户发送信息(wall, write, talk, mesg)
  4. Lotusscript代理调用正则表达式过滤掉html代码,获取notesRichTextItem内容信息的方法...
  5. 【数据结构与算法】之深入解析“课程表III”的求解思路与算法示例
  6. leetcode(二)二分法查找算法
  7. java 视频 缩略图_如何使用java提取视频缩略图或某一帧的图片
  8. 实体框架(Entity Framework)简介
  9. 沉迷Link-Cut tree无法自拔之:[BZOJ2594][Wc2006]水管局长数据加强版
  10. python函数参数值_python 函数参数
  11. CS229学习笔记(2)多变量线性回归
  12. C++查漏补缺之流状态
  13. 关于Time.deltatTime的理解
  14. excel日期相关计算天数
  15. 6 - VC Bound (P[BAD]的真正上限)
  16. 如何下载网页中加了限制的Flash、RM、WMV等视频文件
  17. 那个超级浏览器好(跨境浏览器哪个好)
  18. Jquery实现确定取消对话框
  19. The requested URL was not found on this server.
  20. 关闭网站服务器端口,cmd关闭端口的命令是什么_网站服务器运行维护

热门文章

  1. 剑指offer64 不能使用乘除法、for、while、if、else、switch、case 求 1+2+...+n
  2. 你知道什么是AVL树吗?
  3. 报名照片审核处理工具_初级报名!你的照片怎么处理才能通过审核
  4. linux后门查杀工具付费,查杀linux后门跑虚拟货币程序.md
  5. 工程是.java文件_1.8 工程相关解析(各种文件,资源访问)
  6. mysql 外键引擎_对于mysql的外键和mysql的存储引擎
  7. 深圳市收运体系运营管理_房地产企业如何搭建运营管理体系
  8. 传感器实训心得体会_传感器实训心得
  9. oracle is删除表数据库,rman删除expired备份提示“This command is forbidden”
  10. oracle 并接去掉字符串,ORACLE删除字符-TRIM字符截取-substr查找字符-instr