“cudaMallocManaged”比“cudaMalloc”慢吗?

时间:2014-02-24 11:33:04

标签: cuda gpgpu nvidia hpc

我下载了CUDA 6.0 RC并在我的应用程序中使用“cudaMallocManaged”测试了新的统一内存。但是,我发现这个内核速度很慢。

与cudaMallocManaged(~0.63)相比,使用cudaMalloc后跟cudaMemcpy更快(~0.56)。这是预期的吗?

website声称cudaMallocManged是为了“更快地对cuda内核进行原型设计”,因此我想知道哪种应用在性能方面更好?

感谢。

1 个答案:

答案 0 :(得分:22)

cudaMallocManaged() 关于加速您的申请(有一些例外情况或极端情况,有些建议如下)。

今天统一内存的实现和cudaMallocManaged 不会比由熟练的CUDA程序员编写的智能编写的代码更快来做同样的事情。机器(cuda运行时)并不比你作为程序员更聪明。 cudaMallocManaged不会神奇地使PCIE总线或一般机器架构限制消失。

快速原型设计是指编写代码所需的时间,而不是代码的速度。

在以下情况下,

cudaMallocManaged可能对熟练的cuda程序员感兴趣:

  1. 您有兴趣快速获得原型-i.e.你不关心最后一盎司的表现。
  2. 您正在处理一个不经常使用的复杂数据结构(例如双链表),否则这些数据结构将成为移植到CUDA的苦差事(因为使用普通CUDA代码的深拷贝往往是一件苦差事)。您的应用程序必须工作,但不是性能路径的一部分。
  3. 您通常会使用零拷贝。在某些情况下,使用cudaMallocManaged可能比天真或低效的零拷贝方法更快。
  4. cudaMallocManaged可能对非熟练的 CUDA程序员感兴趣,因为它可以让你在可能更简单的学习曲线中熟悉CUDA。

    虽然评论中提到了Maxwell,但CUDA UM将在某些设置中为某些GPU提供Pascal生成的GPU的主要新功能。特别是,这些设置中的统一内存将不再局限于可用的GPU设备内存,即使内核正在运行,内存处理粒度也将降至页面级别。您可以阅读更多相关信息here

相关问题