【问题标题】:CUDA - Maintain pointers to global memoryCUDA - 维护指向全局内存的指针
【发布时间】:2010-07-23 14:57:56
【问题描述】:

我有一个使用 CUDA 的 .NET 程序。

通过 C DLL 访问 CUDA。

我正在做的是通过在程序启动时在设备上分配缓冲区 (cudaMalloc) 来初始化我的 CUDA 应用程序。然后将指向这些缓冲区的指针保存在 DLL 中声明的静态变量中。数据在整个程序中被复制到缓冲区或从缓冲区复制。在程序终止时,先前分配的缓冲区被释放。

是否可以维护指向已分配设备内存的指针,还是应该在每次执行内核时重新分配(这似乎效率很低)?

目前我没有注意到任何副作用,只是想确认这种使用模式是首选和可接受的。

【问题讨论】:

    标签: .net dll memory-management cuda


    【解决方案1】:

    据我所知,使用设备内存的唯一强烈建议 - 减少复制操作。 cudaMalloc 的工作速度比 cudaMemcpy 快得多。 因此,重用缓冲区并不是什么大问题。如果您正确使用设备内存,它将正常工作

    【讨论】:

      猜你喜欢
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多