我下载了CUDA 6.0 RC并在我的应用程序中使用“cudaMallocManaged”测试了新的统一内存。但是,我发现这个内核速度很慢。
与cudaMallocManaged(~0.63)相比,使用cudaMalloc后跟cudaMemcpy更快(~0.56)。这是预期的吗?
website声称cudaMallocManged是为了“更快地对cuda内核进行原型设计”,因此我想知道哪种应用在性能方面更好?
感谢。
答案 0 :(得分:22)
cudaMallocManaged()
不关于加速您的申请(有一些例外情况或极端情况,有些建议如下)。
今天统一内存的实现和cudaMallocManaged
不会比由熟练的CUDA程序员编写的智能编写的代码更快来做同样的事情。机器(cuda运行时)并不比你作为程序员更聪明。 cudaMallocManaged
不会神奇地使PCIE总线或一般机器架构限制消失。
快速原型设计是指编写代码所需的时间,而不是代码的速度。
在以下情况下, cudaMallocManaged
可能对熟练的cuda程序员感兴趣:
cudaMallocManaged
可能比天真或低效的零拷贝方法更快。 cudaMallocManaged
可能对非熟练的 CUDA程序员感兴趣,因为它可以让你在可能更简单的学习曲线中熟悉CUDA。
虽然评论中提到了Maxwell,但CUDA UM将在某些设置中为某些GPU提供Pascal生成的GPU的主要新功能。特别是,这些设置中的统一内存将不再局限于可用的GPU设备内存,即使内核正在运行,内存处理粒度也将降至页面级别。您可以阅读更多相关信息here。