是";cudaMallocManaged";慢于;库达马洛克;?

是";cudaMallocManaged";慢于;库达马洛克;?,cuda,gpgpu,nvidia,hpc,Cuda,Gpgpu,Nvidia,Hpc,我下载了CUDA6.0RC,并在我的应用程序中使用“cudaMallocManaged”测试了新的统一内存。但是,我发现这个内核速度变慢了 与cudaMallocManaged(~0.63)相比,使用后跟更快(~0.56)。这是预期的吗 cudaMallocManged的一个主张是“更快地原型化cuda内核”,所以我想知道哪一个是应用程序性能方面更好的选择 谢谢。cudamalocmanaged()并不是为了提高应用程序的速度(除了少数例外或特殊情况,下面建议使用一些) 今天的统一内存和cuda

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

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

cudaMallocManged的一个主张是“更快地原型化cuda内核”,所以我想知道哪一个是应用程序性能方面更好的选择

谢谢。

cudamalocmanaged()
并不是为了提高应用程序的速度(除了少数例外或特殊情况,下面建议使用一些)

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

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


cudaMallocManaged
在以下情况下,精通cuda的程序员可能会感兴趣:

  • 您对快速组装原型感兴趣-也就是说,您不关心最后一盎司的性能
  • 您正在处理一个不经常使用的复杂数据结构(例如,双链接列表),如果不这样做,将很难将其移植到CUDA(因为使用普通CUDA代码的深度复制往往很麻烦)。这是应用程序工作所必需的,但不是性能路径的一部分
  • 您通常会使用零拷贝。在某些情况下,使用
    cudaMallocManaged
    可能比单纯或低效的零拷贝方法更快

  • cudaMallocManaged
    可能会让不熟练的CUDA程序员感兴趣,因为它可以让你在可能更简单的学习曲线上用CUDA来湿脚。(但是,请注意,单纯使用
    cudamalocmanaged
    可能会导致CUDA内核运行速度低于预期,请参阅和。)


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

    如果主机内存被固定,是的,它预计会比托管内存快。但是我没有使用任何固定内存。如何分配主机内存?我复制了上面的内核调用部分和分配部分以供参考。谢谢,但是如何分配主机内存(
    *.data
    )?谢谢你的详细回复。我想在我的情况下Cudamaloc更适合。非常感谢……如果我没有弄错的话,Maxwell体系结构应该为统一内存提供硬件支持,因此
    cudamalocmanaged()
    可以在该体系结构上提供更好的性能。我的陈述主要是为了反映统一内存今天的功能。我们有理由假设未来的UM进化将是:1。利用GPU和主机上较新的硬件体系结构,以及2。进一步模糊了熟练的CUDA程序员可以或应该处理的内容与机器(CUDA运行时)可以或应该完成的内容之间的界限。100%同意。我只是做个笔记,因为你的回答没有提到麦克斯韦。