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