Как освободить __device__ память в CUDA - PullRequest
1 голос
/ 14 марта 2011
__device__ int data; 

__constant__ int var1;

Как освободить «data» и «var1» в CUDA?

Спасибо

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

Как сказал @ CygnusX1, его нельзя освободить.Как вы заявили, память будет выделена на весь срок жизни вашей программы - ПРИМЕЧАНИЕ: Даже если вы никогда не вызываете ядро ​​.

Однако вы можете использовать cudaMalloc и cudaFree (или new / delete в CUDA 4.0) для временного выделения и освобождения памяти.Конечно, вы должны манипулировать всем с помощью указателей, но это огромная экономия, если вам нужно сохранить несколько крупных объектов, освободить их, а затем сохранить еще несколько крупных объектов ...

2 голосов
/ 17 мая 2012

С возможностью вычисления устройства sm_20 и выше вы можете просто использовать новое или удалить ключевое слово, еще лучше было бы использовать CUDA Thrust API (это реализация стандартной библиотеки шаблонов поверх графического процессора) действительно классная штука.

http://code.google.com/p/thrust/

2 голосов
/ 14 марта 2011

Вы не можете освободить это. Когда программа заканчивается, она автоматически освобождается.

Аналогично, как и в хост-коде, вы не освобождаете глобальные переменные.

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