2013-05-12 2 views
4

Если нет, то какой стандартный способ освободить память cudaMalloc, когда выбрано исключение? (Обратите внимание, что я не могу использовать Thrust.)Есть ли умный указатель CUDA?

+0

Что бы выбрасывало исключение? – talonmies

+0

Любая функция или член класса, т. Е. Много вещей – mchen

+0

Я имею в виду, будет ли код хоста выдавать исключения в ответ на ошибку из среды выполнения CUDA или это другие условия ошибки, не связанные с CUDA? – talonmies

ответ

5

Вы можете использовать RAII идиомы и положить cudaMalloc() и cudaFree() вызовы конструктора и деструктора вашего объекта соответственно.

После того как исключение будет выброшено, ваш деструктор будет называться, который освободит выделенную память.

Если вы завернете этот объект в интеллектуальный указатель (или сделайте так, как указатель), вы получите свой умный указатель CUDA.