У меня есть программа .NET, использующая CUDA.
Доступ к CUDA осуществляется через C DLL.
То, что я делаю, - это инициализация моего приложения CUDA путем выделения буферов (cudaMalloc) на устройстве при запуске программы. Указатели на эти буферы затем поддерживаются в статических переменных, объявленных в DLL. Данные копируются в буферы и из них по всей программе. По завершении программы ранее выделенные буферы освобождаются.
Можно ли поддерживать указатели на выделенную память устройства или я должен перераспределяться при каждом запуске ядра (что может показаться очень неэффективным)?
В настоящее время я не заметил никаких побочных эффектов, но просто хотел подтвердить, что этот шаблон использования является предпочтительным и приемлемым.