如果没有,抛出异常时释放cudaMalloc
内存的标准方法是什么? (请注意,我无法使用Thrust。)
答案 0 :(得分:6)
您可以使用RAII惯用法,并将cudaMalloc()
和cudaFree()
调用分别放到对象的构造函数和析构函数中。
抛出异常后,将调用析构函数,释放已分配的内存。
如果将此对象包装成智能指针(或使其行为像指针),您将获得CUDA智能指针。
答案 1 :(得分:1)
您可以使用cuda::shared_ptr
中的代码。如上所述,此实现使用std::shared_ptr
作为Cuda设备内存的包装器。