60 cuda全局性能优化
0 引言
cuda线程模型涉及grid的块划分和线程配置,直接影响到全局运算速度。根据文档《CUDA_C_Programming_Guide》,性能优化有三个方面的基本策略。
(1)最大化并行执行以实现最大的利用率.
(2)优化内存使用,以实现最大的内存吞吐量.
(3)优化指令使用,以实现最大的指令吞吐量.
对于应用程序的特定部分,哪些策略将产生最佳性能收益取决于该部分的性能受哪方面的限制;例如,优化主要受内存访问限制的内核的指令使用不会产生任何显著的性能提升。因此,应该不断地通过测量和监视性能限制器(例如使用CUDA profiler)来指导优化工作。此外,将特定内核的浮点操作吞吐量或内存吞吐量(无论哪个更有意义)与设备的相应峰值理论吞吐量进行比较,可以看出内核有多大的改进空间。
1 定位问题
(1)发现采用两组数据进行训练时,速度存在比较大的差异。其中,数据1耗时 time1 = 68163 ms, 数据2耗时 time2 = 42930 ms. time1 = 1.59 * time2
通过cuda函数 gettimeofday 发现数据2关键函数的时间分布如下。
time of pre-ComputeTDF is 106063 mms
time of ComputeTDF is 96 mms
time of post-ComputeTDF is 157454 mms
time of pre-ComputeTDF is 11495 mms
time of ComputeTDF is 108 mms
time of post-ComputeTDF is 149239 mms
time of pre-ComputeTDF is 8958 mms
time of ComputeTDF is 95 mms
time of post-ComputeTDF is 133390 mms
其中, pre-ComputeTDF包含数据的预处理和内存分配与拷贝操作,ComputeTDF调用核函数计算TDF值,post-ComputeTDF计算local-TDF以及将gpu中的数据拷贝回cpu. 从时间上来看,CUDA部分的操作并非计算性能不佳的瓶颈,其瓶颈集中在pre-post-ComputeTDF上。
(2)分别考察pre-post-ComputeTDF中进行数据预处理和内存分配与拷贝的时间,结果如下。
数据2数据处理部分的耗时记录:
time of pre-ComputeTDF without memory copy is 1542 mms
time of post-ComputeTDF without memory copy is 1003 mms
time of pre-ComputeTDF without memory copy is 2182 mms
time of post-ComputeTDF without memory copy is 924 mms
time of pre-ComputeTDF without memory copy is 2066 mms
time of post-ComputeTDF without memory copy is 928 mms
sum_time_of_data_dealing = 8645mms
数据2内存分配与拷贝部分的耗时记录(例二):
time of memory copy of pre-ComputeTDF is 93738 mms
time of memory copy of post-ComputeTDF is 155900 mms
time of memory copy of pre-ComputeTDF is 6428 mms
time of memory copy of post-ComputeTDF is 140536 mms
time of memory copy of pre-ComputeTDF is 7184 mms
time of memory copy of post-ComputeTDF is 135659 mms
sum_time_of_memory_copy_2 = 539445mms = 62.4 * sum_time_of_data_dealing
可以确定时间主要消耗在了内存分配与拷贝部分上!时间差距应当出现在这一部分,计算数据1进行验证
time of memory copy of pre-ComputeTDF is 100188 mms
time of memory copy of post-ComputeTDF is 244773 mms
time of memory copy of pre-ComputeTDF is 6431 mms
time of memory copy of post-ComputeTDF is 205273 mms
time of memory copy of pre-ComputeTDF is 6668 mms
time of memory copy of post-ComputeTDF is 203422 mms
sum_time_of_memory_copy_1 = 766755mms = 1.42 * sum_time_of_memory_copy_2,与1.59的差距大致相当。
(3)更进一步,分析time of memory copy of pre-ComputeTDF 与 time of memory copy of post-ComputeTDF的区别
sum_data1_pre = 1813.6950 ms
sum_data2_pre = 1863.4580 ms
sum_data1_post = 38564.5090 ms
sum_data2_post = 49542.4860 ms
difference_sum_data_post = 10978 ms
(4)寻找其他方面的差距
统计了 time_use_without_computing_tdf1 = 11245.0 ms, time_use_without_computing_tdf2 = 1727.0 ms
difference_time_use_without_computing_tdf = 9518 ms
以上两部分 difference_sum_data_post + difference_time_use_without_computing_tdf = 20496 ms为两组数据在性能上的主要差异,分析原因在于点云规模不同,数据1点云的平均规模在7万级别,数据2点云的规模在1万级别,因此二者的表现差异比较大。
2 解决问题
通过降采样点云可以提高运算效率。
60 cuda全局性能优化的更多相关文章
- nginx全局配置和性能优化
nginx目录结构和命令 1.ls /apps/nginx/: html是测试页,sbin是主程序 2.ls /apps/nginx/sbin/: nginx 只有一个程序文件 3. ...
- CUDA性能优化----warp深度解析
本文转自:http://blog.163.com/wujiaxing009@126/blog/static/71988399201701224540201/ 1.引言 CUDA性能优化----sp, ...
- C#中那些[举手之劳]的性能优化
隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...
- CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
- Android应用性能优化(转)
人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限的,譬如我们看电影会觉得画面很自然连贯(帧率为24fps),用手机当然也需要感知屏幕操作的连贯性(尤其是动画过度),所以Android索性就把达到这 ...
- MySQL 基础及性能优化工具
数据库,用户及权限 常用用户管理操作 # 创建本地用户 abc create user abc@localhost # 创建内网能够访问的用户 abc create user abc@'192.168 ...
- CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
- 转载:SqlServer数据库性能优化详解
本文转载自:http://blog.csdn.net/andylaudotnet/article/details/1763573 性能调节的目的是通过将网络流通.磁盘 I/O 和 CPU 时间减到最小 ...
- 【转载】Spark性能优化指南——高级篇
前言 数据倾斜调优 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数 ...
随机推荐
- mysql rpm包安装
MySql5.7 安装文档 1.yum repo 安装 ``` wget http://dev.mysql.com/get/mysql57-community-release-el6-11.noarc ...
- 61. File类
IO技术主要作用是解决设备与设备之间的数据传输问题.比如:硬盘---->内存 内存的数据---->硬盘上 把硬盘的数据------>内存中 IO技术的应用场景: ...
- Unity NGUI Download
{ 链接:https://pan.baidu.com/s/1hPf4brhN8RvcKP7HSwphHw 提取码:0iim }
- apue.h报错问题
下载apue.3e后进入make,提示错误如下: collect2: error: exit status Makefile:: recipe for target 'badexit2' failed ...
- Shiro学习(12)与Spring集成
Shiro的组件都是JavaBean/POJO式的组件,所以非常容易使用spring进行组件管理,可以非常方便的从ini配置迁移到Spring进行管理,且支持JavaSE应用及Web应用的集成. 在示 ...
- 【Flutter学习】基本组件之基本网格Gradview组件
一,概述 数据量很大的时用矩阵方式排列比较清晰,此时用网格列表组件,即为GridView组件,可实现多行多列的应用场景. 使用GridView创建网格列表有多种方式: GridView.count 通 ...
- 出现Warning: date(): It is not safe to rely on the system's timezone settings的解决办法
在没有配置,尤其是新安装的PHP中使用date函数时,会报这个错误: Warning: date(): It is not safe to rely on the system's timezone ...
- stm32 hal库串口通信资料汇集
串口的发送接收函数:HAL_UART_Transmit();串口轮询模式发送,使用超时管理机制.HAL_UART_Receive();串口轮询模式发送,使用超时管理机制.HAL_UART_Transm ...
- mac os 下安装mysql
在 http://dev.mysql.com/downloads/mysql/ 选择下载mysql 注册并选择相应的版本后,得到下载链接:: wget http://dev.mysql.com/get ...
- php开发面试题---1、php常用面试题一(PHP有哪些特性)
php开发面试题---1.php常用面试题一(PHP有哪些特性) 一.总结 一句话总结: ①.混合语法:php独特混合了C,Java,Prel以及PHP自创的语法. ②.为动态网页而生:可以比CGI或 ...