2011-03-14 161 views
1
__device__ int data; 

__constant__ int var1; 

如何释放在CUDA的“数据”和“VAR1”?如何释放__device__内存在CUDA

谢谢

+1

你不能 - 这个内存分配为内核的寿命。 – 2011-03-14 14:02:11

+0

@Paul这里没有分配。也不清楚,如果这些变量是在内核中声明的,还是在全局范围内声明的。 – 2012-08-31 07:44:39

回答

2

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

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

2

由于@ CygnusX1说,你不能释放它。正如你声明的那样,内存将被分配用于你的程序 - 注意:即使你永远不会调用内核

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

2

使用设备计算能力sm_20及以上可以简单地使用新的或删除关键字, 更好的是使用CUDA推力API(它是在GPU顶部的标准模板库的实现)真的很酷的东西。

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