fftw_plan_dft_2d优化
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优化相关推荐
- fftw_plan_dft_2d重复优化
原文:http://bbs.csdn.net/topics/330133751 #include <stdio.h> #include <stdlib.h> #include ...
- 系统遇到并发瓶颈时的优化方向
1. 设计高质量代码优化Map 使用读写锁,读写锁 读多写少(存储用户连接信息) map不要太大. 2. 突破系统瓶颈 优化连接数 linux下的系统最大连接数 3. 降低对Cpu资源的使用 降低io ...
- SVN优化(一) SVN忽略maven项目的target
SVN优化(一) SVN忽略maven项目的target 一 eclipse刚开始导入的项目: 二 解决办法 方式一: 在项目代码路径,如: F:\xyx\sl 鼠标右键,"Tortoi ...
- 如何定位并优化慢查询Sql
根据慢日志定位慢查询SQL. 查询慢日志相关变量,并进行设置: 主要关注下述三个变量: long_query_time.show_query_log_file.show_query_log 慢查询sq ...
- kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势
陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...
- 各种优化算法公式快速回忆优化器-深度学习
本文是Deep Learning 之 最优化方法系列文章的RMSProp方法.主要参考Deep Learning 一书. 整个优化系列文章列表: Deep Learning 之 最优化方法 Deep ...
- Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现
学习工具最快的方法就是在使用的过程中学习,也就是在工作中(解决实际问题中)学习.文章结尾处附完整代码. 一.数据准备 在Pytorch中提供了MNIST的数据,因此我们只需要使用Pytorch提 ...
- 从 SGD 到 Adam —— 深度学习优化算法概览 各种优化器 重点
20210701 https://blog.51cto.com/u_15064630/2571266 [机器学习基础]优化算法详解 详细 https://blog.csdn.net/u01338501 ...
- 梯度优化算法Adam
最近读一个代码发现用了一个梯度更新方法, 刚开始还以为是什么奇奇怪怪的梯度下降法, 最后分析一下是用一阶梯度及其二次幂做的梯度更新.网上搜了一下, 果然就是称为Adam的梯度更新算法, 全称是:自适应 ...
最新文章
- nginx安全日志分析脚本的编写
- 代理中调用alert()
- linux上给其他在线用户发送信息(wall, write, talk, mesg)
- Lotusscript代理调用正则表达式过滤掉html代码,获取notesRichTextItem内容信息的方法...
- 【数据结构与算法】之深入解析“课程表III”的求解思路与算法示例
- leetcode(二)二分法查找算法
- java 视频 缩略图_如何使用java提取视频缩略图或某一帧的图片
- 实体框架(Entity Framework)简介
- 沉迷Link-Cut tree无法自拔之:[BZOJ2594][Wc2006]水管局长数据加强版
- python函数参数值_python 函数参数
- CS229学习笔记(2)多变量线性回归
- C++查漏补缺之流状态
- 关于Time.deltatTime的理解
- excel日期相关计算天数
- 6 - VC Bound (P[BAD]的真正上限)
- 如何下载网页中加了限制的Flash、RM、WMV等视频文件
- 那个超级浏览器好(跨境浏览器哪个好)
- Jquery实现确定取消对话框
- The requested URL was not found on this server.
- 关闭网站服务器端口,cmd关闭端口的命令是什么_网站服务器运行维护
热门文章
- 剑指offer64 不能使用乘除法、for、while、if、else、switch、case 求 1+2+...+n
- 你知道什么是AVL树吗?
- 报名照片审核处理工具_初级报名!你的照片怎么处理才能通过审核
- linux后门查杀工具付费,查杀linux后门跑虚拟货币程序.md
- 工程是.java文件_1.8 工程相关解析(各种文件,资源访问)
- mysql 外键引擎_对于mysql的外键和mysql的存储引擎
- 深圳市收运体系运营管理_房地产企业如何搭建运营管理体系
- 传感器实训心得体会_传感器实训心得
- oracle is删除表数据库,rman删除expired备份提示“This command is forbidden”
- oracle 并接去掉字符串,ORACLE删除字符-TRIM字符截取-substr查找字符-instr