使用CPU计时器和CUDA计时器事件来测量执行某些CUDA代码所需的时间有什么区别?CUDA程序员应该使用以下哪些,为什么?
CPU计时器使用将涉及cudaThreadSynchronize在记录任何时间之前调用.注意clock()可以使用时间或者QueryPerformanceCounter可以查询(在Windows上)高分辨率性能计数器.
CUDA计时器事件将涉及使用之前和之后的记录cudaEventRecord.稍后,通过调用cudaEventSynchronize事件cudaEventElapsedTime获得经过的时间,然后获得经过的时间.
第一部分问题的答案是cudaEvents定时器基于GPU上的高分辨率计数器,与使用主机定时器相比,它们具有更低的延迟和更好的分辨率,因为它们"脱离金属".您应该期望来自cudaEvents定时器的亚微秒分辨率.出于这个原因,你应该更喜欢它们来定时GPU操作.cudaEvents的每个流的特性也可用于检测异步操作,如同步内核执行和重叠复制以及内核执行.使用主机定时器进行这种时间测量几乎是不可能的.
编辑:我不会回答最后一段,因为你删除了它.
| 归档时间: |
|
| 查看次数: |
3658 次 |
| 最近记录: |