有CUDA智能指针吗?

时间:2013-05-12 16:16:05

标签: memory cuda gpgpu smart-pointers

如果没有,抛出异常时释放cudaMalloc内存的标准方法是什么? (请注意,我无法使用Thrust。)

2 个答案:

答案 0 :(得分:6)

您可以使用RAII惯用法,并将cudaMalloc()cudaFree()调用分别放到对象的构造函数和析构函数中。

抛出异常后,将调用析构函数,释放已分配的内存。

如果将此对象包装成智能指针(或使其行为像指针),您将获得CUDA智能指针。

答案 1 :(得分:1)

您可以使用cuda::shared_ptr中的代码。如上所述,此实现使用std::shared_ptr作为Cuda设备内存的包装器。