首页 文章

cuda visual profiler中的CPU和GPU计时器

提问于
浏览
2

所以在cuda visual profiler中有2个计时器,

GPU时间:这是GPU上方法的执行时间 . CPU时间:启动该方法的GPU时间和CPU开销之和 . 在驱动程序生成的数据级别,CPU时间只是启动非阻塞方法的方法的CPU开销;对于阻塞方法,它是GPU时间和CPU开销的总和 . 默认情况下,所有内核启动都是非阻塞的 . 但是如果启用任何探查器计数器,则内核启动会阻塞 . 不同流中的异步内存复制请求是非阻塞的 .

如果我有一个真正的节目,那么实际的节奏时间是多少?我测量时间,还有一个GPU计时器和一个CPU计时器,有什么区别?

2 回答

  • 0

    你几乎就在那里 - 现在你已经意识到了一些不同的选择,最后一步是问自己你想要测量的时间 . 对此没有正确答案,因为这取决于您尝试对测量做些什么 . 当您尝试优化计算时,CPU时间和GPU时间正是您想要的,但它们可能不包括等待实际上非常重要的事情 . 你提到“实际的执行时间” - 这是一个开始 . 你的意思是问题的完整执行时间 - 从用户启动程序到答案吐出并且程序结束?在某种程度上,这真的是唯一真正重要的时刻 .

    对于这样的数字,在Unix类型的系统中,我只想测量程序的整个运行时间; /bin/time myprog ,大概有's a Windows equivalent. That'很好,因为它总共's completely unabigious. On the other hand, because it',如果你的代码有一个很大的GUI组件,它就不太好了,因为那时你也在测量用户点击他们的结果所需的时间 .

    如果你想要一些计算的经过时间,cuda有非常方便的函数cudaEvent *可以放在代码的各个部分 - 参见CUDA Best Practices Guide,s 2.1.2,使用CUDA GPU定时器 - 这些你可以放在前后重要的代码和打印结果 .

  • 2

    gpu计时器基于事件 . 这意味着当创建一个事件时,它将被设置在gpu的队列中以进行服务 . 所以那里的开销也很小 . 从我所测量的虽然差异不太重要

相关问题