4
如果没有,抛出异常时释放cudaMalloc
ed内存的标准方式是什么? (请注意,我无法使用Thrust。)有没有CUDA智能指针?
如果没有,抛出异常时释放cudaMalloc
ed内存的标准方式是什么? (请注意,我无法使用Thrust。)有没有CUDA智能指针?
您可以使用RAII成语,并分别将cudaMalloc()
和cudaFree()
调用到对象的构造函数和析构函数中。
一旦抛出异常,你的析构函数将被调用,这将释放分配的内存。如果你把这个对象包装成一个智能指针(或者使它像一个指针一样),你将得到你的CUDA智能指针。
什么会抛出异常? – talonmies 2013-05-12 16:29:01
任何函数或类成员 - 即很多事情 – mchen 2013-05-12 16:43:46
我的意思是,宿主代码是否会针对CUDA运行时错误抛出异常,或者这些其他错误条件是否与CUDA无关? – talonmies 2013-05-12 16:52:11