找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 96|回复: 1

程序时间测试

[复制链接]
发表于 2018-10-10 14:38:18 | 显示全部楼层 |阅读模式
GTC
代码中既包含CPU执行的部分,也包含GPU执行的部分,最后整个程序执行时间应该怎样测量?可以直接利用C++中的计时函数测量,还是需要C++测量时间+cudaEventElapsedTime时间?
回复

使用道具 举报

发表于 2018-10-10 15:26:48 | 显示全部楼层
Jetson TX2
含有CUDA部分的代码的总体运行时间, 一般情况下, 是用的wall time进行计算的.

也就是相当于从时刻A开始, 到时刻B结束的总时间. 这是常规的计算方式.

请注意这个计算方式受到你的GPU卡的性能, 和你的CPU性能(包括但不限于他们的频率, 架构, SM或者CPU核心数等等信息)影响. 一般情况下作出结论你需要附注你当前的硬件平台情况, 这个时间才有意义.

此外, 不能让GPU时刻满载的代码, 往往受到程序逻辑, 磁盘IO等等方面的影响. 所以一般的, 你总是看到大家给出kernel时间, 而不是整体的时间.

但你如果真的需要整体时间, 可以简单的用time命令测试一下. 但需要注意的是, 该时间往往没有指导意义(给领导写报告之类的可以用这种时间). 因为它受到上面说的系统内的多种因素的影响(CPU, 内存配置, 磁盘配置, 网络等等). 不能反应你在GPU上所做的工作情况(本论坛只是GPU论坛. 如果你依然需要整体时间, 请无视本段).

需要注意的是, 尽量不要使用忙等方式(spin)在CPU上等待异步GPU操作(kernel或者传输等等)完成, 这会引入额外的开销. 请参考设备等待标志的设定(手册上有, 建议使用BlockingSync).

感谢来访.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表