环境:RTX2060 ,1920X1080p ,循环10次, kernal_size=8

一 、测试前128个线程拷贝到dst数据的性能  ,只测试行卷积, block=(128+2r)X1
  1. 使用中间128个线程拷贝       : (36.37+37.11+36.32)/3 = 36.6 GB
  2. 改为前128个线程拷贝出数据: (38.89+39.53+39.74)/3 = 39.39GB

  实验结果:使用前128个线程拷贝会快10.7%

二 、 测试const 变量对性能的影响 ,只测试行卷积 block =(128+2r)X1

  1. radius 为局部变量(函数传入) 40.1 GB

  2. radius 为__constant__ 变量  , 40.2GB

  实验结果 __constant__  和 局部变量 的性能实际上差不多

三、 测试block 线程数对性能的影响, 只测试行卷积

  1. block = (64+2r)X1             37.10GB

  2. block = (128+2r)X1            40.33GB

  3. block = (256+2r)X1     37.75GB

  4. block = (512+2r)X1     28.31GB

  5. block = (128)X1    37.3GB

  6. block=(320+2r)X1   34.26GB

  7. block=320X1      39GB

  8.block=160X1      38.57GB

  9.block=(160+2r)X1          39.04GB

  10 block=(640+2r)X1                  30.34GB

  11 block=640X1     27.96GB

  实验结果 : block并不是越大越好, 选择 block = (128+2r)X1  可能好一点吧~

四、列卷积时候, 测试连续copy 和 跳步copy性能,只测试列卷积,行卷积注释掉

  1. 跳步copy    :45.11GB

  2. 行连续copy:36.98GB

  3 列连续copy:47.31GB

  下图分别是1,2,3的拷贝过程示意图

  实验结果: 使用第三种拷贝方式会加速4.9%

  

五、 使用单列拷贝 ,只测试列卷积

  1. block=(128+2r)X1  18.89GB

  实验结果: 使用单列进行计算会很慢

六 、 测试IMUL对性能的影响

  1. 无IMUL  28.30GB

  2. IMUL       28.38GB

  实验结果 IMUL对实验结果无影响

七 、测试float4 对性能的影响,只测试行卷积

  1. 无float4

  2. float4

八 、列卷积时候, 测试连续计算 和 跳步计算性能,行卷积没有注释

  连续计算 23.7GB

  跳步计算 28.7 GB

  实验结果: 跳步计算要快一些

  

可分离滤波器设计高斯滤波 CUDA程序优化, 实验记录的更多相关文章

  1. opencv 源码分析 CUDA可分离滤波器设计 ( 发现OpenCV的cuda真TM慢 )

    1. 主函数 void SeparableLinearFilter::apply(InputArray _src, OutputArray _dst, Stream& _stream) { G ...

  2. 学习 opencv---(7) 线性邻域滤波专场:方框滤波,均值滤波,高斯滤波

    本篇文章中,我们一起仔细探讨了OpenCV图像处理技术中比较热门的图像滤波操作.图像滤波系列文章浅墨准备花两次更新的时间来讲,此为上篇,为大家剖析了"方框滤波","均值滤 ...

  3. 滤波器——BoxBlur均值滤波及其快速实现

    个人博客地址:滤波器--BoxBlur均值滤波及其快速实现 动机:卷积核.滤波器.卷积.相关 在数字图像处理的语境里,图像一般是二维或三维的矩阵,卷积核(kernel)和滤波器(filter)通常指代 ...

  4. matlab做gaussian高斯滤波

    原文链接:https://blog.csdn.net/humanking7/article/details/46826105 核心提示 在Matlab中高斯滤波非常方便,主要涉及到下面两个函数: 函数 ...

  5. CUDA性能优化----warp深度解析

    本文转自:http://blog.163.com/wujiaxing009@126/blog/static/71988399201701224540201/ 1.引言 CUDA性能优化----sp, ...

  6. SIFT四部曲之——高斯滤波

    本文为原创作品,未经本人同意,禁止转载 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 或 ...

  7. 一步步做程序优化-讲一个用于OpenACC优化的程序(转载)

    一步步做程序优化[1]讲一个用于OpenACC优化的程序 分析下A,B,C为三个矩阵,A为m*n维,B为n*k维,C为m*k维,用A和B来计算C,计算方法是:C = alpha*A*B + beta* ...

  8. Java 程序优化 (读书笔记)

    --From : JAVA程序性能优化 (葛一鸣,清华大学出版社,2012/10第一版) 1. java性能调优概述 1.1 性能概述 程序性能: 执行速度,内存分配,启动时间, 负载承受能力. 性能 ...

  9. Atitit   图像处理 平滑 也称 模糊, 归一化块滤波、高斯滤波、中值滤波、双边滤波)

    Atitit   图像处理 平滑 也称 模糊, 归一化块滤波.高斯滤波.中值滤波.双边滤波) 是一项简单且使用频率很高的图像处理方法 用途 去噪 去雾 各种线性滤波器对图像进行平滑处理,相关OpenC ...

随机推荐

  1. js中判断变量不为空或null

    var content=$("content").val(); if(!content){      alert("请输出内容!");      return; ...

  2. 编译失败,无法安装APK

    编译失败,无法安装APK. 把libs目录中,全部内容清空,再重新编译就可以了. 应该是有些组件有冲突的原因! -------------------------------------------- ...

  3. ubuntu之路——day12.1 不用tf和torch 只用python的numpy在较为底层的阶段实现简单神经网络

    首先感谢这位博主整理的Andrew Ng的deeplearning.ai的相关作业:https://blog.csdn.net/u013733326/article/details/79827273 ...

  4. 2019软工实践_Alpha(6/6)

    队名:955 组长博客:https://www.cnblogs.com/cclong/p/11913269.html 作业博客:https://edu.cnblogs.com/campus/fzu/S ...

  5. 经典批处理实现自动关机(BAT)

    经典批处理实现自动关机1.BAT @ECHO offTITLE 自动关机程序 作者:廖晓青 :startCLSCOLOR 1frem 使用COLOR命令对控制台输出颜色进行更改MODE con: CO ...

  6. Java线程同步的Monitor机制(Lock配合Condition)

    Monitor模式是一种常见的并行开发机制, 一个Monitor实例可以被多个线程安全使用, 所有的monitor下面的方法在运行时是互斥的, 这种互斥机制机制可以用于一些特性, 例如让线程等待某种条 ...

  7. Sharding-Jdbc 自定义分库分表-复合分片算法自定义实现

    Sharding-JDBC中的分片策略有两个维度,分别是: 数据源分片策略(DatabaseShardingStrategy) 表分片策略(TableShardingStrategy) 其中,数据源分 ...

  8. Javascript 将 console.log 日志打印到 html 页面中

    如何将 console.log() 打印的日志输出到 html 页面中 (function () { var old = console.log; var logger = document.getE ...

  9. git初次登陆使用

    一. 安装git 二. 在当前项目根目录点击鼠标右键,出来下图: 点击进入git命令行界面. 三.初始化项目 git init 四. 添加所有文件到项目中 git add . 五. 尝试提交所有文件 ...

  10. Python 初级 6 循环 (三)

    一.复习 1 计算循环(for循环) for looper in [1, 2, 3, 4, 5]: print("hello") 1) looper的值从第0个数1开始 2) 对应 ...