问题描述:一般利用CUDA进行加速处理时,都需要测试CUDA程序的运行时间,来对比得到的加速效果.

解决方法:

1).GPU端计时,即设备端计时.

2).CPU端计时,即主机端计时.

设备端计时有两种不同的方不地,分别是调用clock()函数和使用CUDA API的事件管理功能.

clock函数计时:

1).在内核函数中要测量的一段代码的开始和结束的位置分别调用一次clock函数,并将结果记录下来.

2).根据这两次clock函数返回值,作差计算,然后除以GPU的运行频率(SP的频率)即可以得到内核执行时间.

一般只需要记录每个block执行需要的时间,最后将得到多个block的开始和结束时间,

然后比较这多个开始和结束时间,选择最小的开始(最早开始的block)时间和最大的结束时间(最晚结束的block),

这两个时间值作差,除以GPU的运行频率即可以得到内核执行时间.

CUDA API事件计时:

利用cuda提供的事件管理api实现计时功能.

主机端计时:

利用库函数里提供函数进行计时,如gettimeofday(),clock()...

注意问题:

1).实际中用得较多的是第二和第三种测时方法.

2).在cpu端测进,一定要了解CUDA API的异步特性,需要时,使用cudaThreadSynchronize()函数进行同步.

3).使用CUDA runtime API时,会在第一次调用runtime API函数时启动CUDA环境.

为了避免将这一部分时间计入,最好在正式测时开始前先进行一次包含数据输入输出的计算,

这样可以使GPU从平时的节能模式进入工作状态,使测试结果更加可靠.

转载于:https://www.cnblogs.com/dwdxdy/archive/2012/06/04/2534065.html

【CUDA学习】计时方法相关推荐

  1. CUDA学习(十):向量内积的多种方法实现

    博主CUDA学习系列汇总传送门(持续更新):编程语言|CUDA入门 文章目录 一.CPU上实现向量内积 二.GPU下单Block分散归约向量内积 三.单Block低线程归约向量内积 四.多block向 ...

  2. CUDA学习笔记之程序优化

    CUDA学习笔记之程序优化 标签: cuda优化conflict存储算法数学计算 2010-01-05 17:18 5035人阅读 评论(4) 收藏 举报 分类: CUDA(6) 版权声明:本文为博主 ...

  3. CUDA学习笔记之 CUDA存储器模型

    CUDA学习笔记之 CUDA存储器模型 标签: cuda存储bindingcache编程api 2010-12-14 01:33 1223人阅读 评论(0) 收藏 举报 分类: CUDA(26) GP ...

  4. CUDA学习笔记(持续更新——蜗速)

    CUDA学习笔记(持续更新--蜗速) 1.CUDA 程序实现流程如下 2.内存管理 3.核函数 4.全局数据访问唯一索引 5.设备管理 附录代码 1.CUDA 程序实现流程如下 将数据从CPU内存拷贝 ...

  5. CUDA学习(十一):原子操作实现向量内积

    博主CUDA学习系列汇总传送门(持续更新):编程语言|CUDA入门 文章目录 一.原子操作的概念 二.一次原子操作替换两次归约 三.Block内归约,block间原子操作 本文章为 < GPU编 ...

  6. Cuda学习笔记(一)——sm流处理器簇对blocks的调度策略

    由于GPU目前在各行各业的广泛应用,无论是深度学习.大数据.云计算等都离不开GPU的并行加速,前阵子自学了Cuda-c编程,希望将来的研究工作能够用得上. Cuda系列总共有4篇,这里主要用于记录本人 ...

  7. 【代码实现】最新PyTorch机器学习与深度学习技术方法

    近年来,随着AlphaGo.无人驾驶汽车.医学影像智慧辅助诊疗.ImageNet竞赛等热点事件的发生,人工智能迎来了新一轮的发展浪潮.尤其是深度学习技术,在许多行业都取得了颠覆性的成果.另外,近年来, ...

  8. linux中时间计时,Linux 中的计时方法

    本文描述了Linux系统中一些与计时相关的问题和解决方法.因为在学习和研究的过程中我们经常需要统计程序或程序段的耗时,评估它们的性能好坏.因而这些问题对于我们来说,经常会遇到.掌握多种计时方法对于开发 ...

  9. C语言中常用计时方法总结

    转自:http://blog.csdn.net/fz_ywj/article/details/8109368 C语言中常用计时方法总结 1. time() 头文件:time.h 函数原型:time_t ...

  10. DeepMind提出强化学习新方法,可实现人机合作

    来源:AI前线 作者:Ben Dickson 译者:盖 策划:凌敏 本文来自 BDTechTalks 网站的"AI 研究论文评论"专栏.该专栏提供人工智能最新发现的系列解读文章. ...

最新文章

  1. c#获取电脑硬件信息参数说明(主板篇 Win32_BaseBoard )
  2. jQuery的Ajax方法实现注册邮箱时用户名查询
  3. vb小工具-----txt转为excel
  4. 一步一步将自己的代码转换为观察者模式
  5. JavaScript学习笔记(十五)
  6. arma模型_R语言与计量经济学(七)ARMA模型
  7. matlab读取文件夹下所有文件的字符串,MATLAB读取文件夹下所有文件的文件名并读取数据...
  8. AI+药物研发:人工智能赋能新药研发(人工智能应用案例)
  9. 区域卫生数据用于临床疗效分析的可用性研究
  10. 关于bacula网络备份软件的安装以及配置1
  11. 创建数据库、表以及索引
  12. 利用MATLAB对乐曲进行钢琴演奏【matlab调音_1】
  13. spring 的bean 作用域
  14. 灰色关联分析与预测模型
  15. 《Dreamweaver CS6 完全自学教程》笔记 第一章:网页制作基础知识
  16. 诗词格律[7] 诗词的唱和
  17. 树莓派CM4设置静态IP地址(已解决)
  18. php创建数组教程,PHP中使用array函数新建一个数组
  19. 几万年前,孙悟空的一次删库跑路...
  20. kettle数据同步从EXCL文件读取数据入库

热门文章

  1. Spark内核解析之四:Spark 任务调度机制
  2. python | 高效统计语言模型kenlm:新词发现、分词、智能纠错
  3. RFM模型及R语言实现
  4. 点击类选择器,获取索引
  5. cocos2d JS 鼠标响应事件
  6. 康威定律-软件之道:软件开发争议问题剖析
  7. 通过python切换hosts文件
  8. Ruby的Fiber根本不是用来做并发的~
  9. 必须重视针对SCADA系统的***
  10. Window系统下 MongoDB 下载 和 安装