0
我打算编写一个cuda内核到机器学习算法,但我尝试比较从设备代码获得的效率和从主机到设备的数据传输的时间损失。有没有什么工具可以帮助我,或者有什么准确的方法来进行比较,从而得出cuda实现是否值得编码?如何计算CUDA中从主机到设备的数据传输的时间损失?
我打算编写一个cuda内核到机器学习算法,但我尝试比较从设备代码获得的效率和从主机到设备的数据传输的时间损失。有没有什么工具可以帮助我,或者有什么准确的方法来进行比较,从而得出cuda实现是否值得编码?如何计算CUDA中从主机到设备的数据传输的时间损失?
使用CUDA分析器。它绘制出很好的图表来表示你的程序及时做了什么。这将向您显示传输时间和内核运行时间。一般来说,如果您的算法与数据大小相比执行大量计算,您将看到显着提升。
但是代码还没有实现,所以我尝试估计我花费的时间是否值得我获得效率。 – erogol
数据使用DMA传输到卡上。如果你的数据是大的连续表,那么它将会像从RAM复制到GPU一样快。这取决于您的PCIExpress,RAM和DMA效率的速度。 再说一句。编写复制数据的代码并不耗时。您只需要在设备上分配内存 - cuda_malloc,然后将数据复制到卡上,然后使用cuda_memcpy将其复制。不超过20分钟的测试和运行分析器编码。 – Adrian