我想知道如何衡量在cudaMemcpy中花费的时钟周期。
如果cudaMemcpy只使用CPU,那就没关系,我只需要测量CPU时钟。
但如果它使用GPU,我如何衡量副本中花费的时钟周期?
答案 0 :(得分:2)
cudaMemcpy
是一个函数,最终由GPU驱动程序提供服务,该驱动程序设置DMA操作以在主机和GPU之间传输数据。 GPU驱动程序是主机代码,因此您可以使用基于主机的方法或cudaEvent
系统来计算持续时间。 cudaMemcpy
。
异步版本,例如cudaMemcpyAsync
通常不能自己定时,因为它们设置了DMA操作,然后立即返回调用线程(在主机上)。 DMA操作发生一段时间后。因此,您需要插入其他同步(例如cudaDeviceSynchronize()
)来计算这些同步的持续时间。由于这通常不是您想要的,因此在这种情况下通常的建议是使用cudaEvent
系统或profiling tools之一。