Если нет, то какой стандартный способ освободить память cudaMalloc
, когда выбрано исключение? (Обратите внимание, что я не могу использовать Thrust.)Есть ли умный указатель CUDA?
4
A
ответ
5
Вы можете использовать RAII идиомы и положить cudaMalloc()
и cudaFree()
вызовы конструктора и деструктора вашего объекта соответственно.
После того как исключение будет выброшено, ваш деструктор будет называться, который освободит выделенную память.
Если вы завернете этот объект в интеллектуальный указатель (или сделайте так, как указатель), вы получите свой умный указатель CUDA.
Что бы выбрасывало исключение? – talonmies
Любая функция или член класса, т. Е. Много вещей – mchen
Я имею в виду, будет ли код хоста выдавать исключения в ответ на ошибку из среды выполнения CUDA или это другие условия ошибки, не связанные с CUDA? – talonmies