如何释放device_vector <int> </int>

时间:2012-06-20 06:23:40

标签: cuda gpu thrust

我使用推力装置矢量分配了一些空间如下:

thrust::device_vector<int> s(10000000000);

如何明确正确地释放此空间?

2 个答案:

答案 0 :(得分:8)

clear()将向量的大小设置为0,但可能不会释放相关的内存。使用STL释放内存的标准方法是将向量与空向量交换。它也适用于Thrust。

v.clear();
device_vector<T>().swap(v);

答案 1 :(得分:8)

device_vector在超出范围时释放关联的存储,就像任何标准的c ++容器一样。

如果您想在其生命周期内手动释放任何Thrust vector存储空间,可以使用以下方法执行此操作:

// empty the vector
vec.clear();

// deallocate any capacity which may currently be associated with vec
vec.shrink_to_fit();

Roger Dahl的回答中提到的swap技巧也应该有用。