CUDA - 维护指向全局内存的指针

3
我有一个使用CUDA的.NET程序。
CUDA是通过C DLL访问的。
我在程序启动时通过在设备上分配缓冲区(cudaMalloc)来初始化我的CUDA应用程序。然后在DLL中声明静态变量以维护这些缓冲区的指针。整个程序中会不断地将数据复制到和从这些缓冲区中。在程序终止时,之前分配的缓冲区将被释放。
保持对已分配设备内存的指针是否合适?还是每次执行内核时都要重新分配(这似乎非常低效)?
目前我还没有注意到任何副作用,但只是想确认这种用法模式是首选且可接受的。
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接