CUDA - поддерживать указатели на глобальную память - PullRequest
3 голосов
/ 23 июля 2010

У меня есть программа .NET, использующая CUDA.

Доступ к CUDA осуществляется через C DLL.

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

Можно ли поддерживать указатели на выделенную память устройства или я должен перераспределяться при каждом запуске ядра (что может показаться очень неэффективным)?

В настоящее время я не заметил никаких побочных эффектов, но просто хотел подтвердить, что этот шаблон использования является предпочтительным и приемлемым.

1 Ответ

3 голосов
/ 23 июля 2010

Насколько мне известно, единственная сильная рекомендация по использованию памяти устройства - сокращать операции копирования. cudaMalloc работает намного быстрее, чем cudaMemcpy. Таким образом, нет ничего сложного в повторном использовании буферов. Это будет работать правильно, если вы правильно используете mem

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...