如何在CUDA中释放__device__内存

时间:2011-03-14 13:59:15

标签: cuda

__device__ int data; 

__constant__ int var1;

如何释放"数据"和" var1"在CUDA?

谢谢

3 个答案:

答案 0 :(得分:2)

你不能释放它。程序结束时会自动释放它。

同样,在主机代码中,您不会释放全局变量。

答案 1 :(得分:2)

正如@ CygnusX1所说,你无法释放它。正如您所声明的那样,内存将在程序的生命周期内分配 - 注意:即使您从未调用内核

然而,您可以使用cudaMalloc和cudaFree(或CUDA 4.0中的new / delete)来临时分配和释放内存。当然你必须使用指针来操作所有东西,但是如果你需要存储几个大对象,释放它们,然后存储几个更大的对象,这是一个巨大的节省......

答案 2 :(得分:2)

使用sm_20及更高版本的设备计算功能,您只需使用new或delete关键字, 更好的是使用CUDA推力API(它是GPU上的标准模板库的实现)非常酷的东西。

http://code.google.com/p/thrust/