我一直在运行CUDA程序的内核。我观察到GPU计数器和NVVP报告的内核执行时间有相当大的差异。为什么通常会观察到这样的差异?
发布于 2012-09-20 04:10:26
Nsight Visual Studio Edition和Visual Profiler支持两种捕获内核持续时间的机制。这两种方法都会产生一个比CUevent/cudaEvent报告的值更小、更准确的值。方法如下:
b. GPU可以在启动事件记录和内核执行之间进行上下文切换。
c.启动事件记录将包括启动开销,包括更新需要调整大小的驱动程序缓冲区的时间、复制参数、复制纹理绑定等。
d.提交内核和结束事件记录之间经过的时间可能会影响计时。
e. GPU可以在内核执行的结束和结束事件记录之间进行上下文切换。
f.错误使用事件将中断并发内核执行。
这些模式中每种模式提供的持续时间将提供不同的值。此外,由工具提供的持续时间的定义与通过使用事件提供的持续时间的定义是不同的。
NVIDIA工具将持续时间定义为从GPU开始处理内核到GPU完成内核工作这段时间。如果开发人员有兴趣收集这些信息,他们应该查看工具包中包含的CUPTI SDK。
https://stackoverflow.com/questions/12497619
复制相似问题