4

我使用推力设备矢量分配了一些空间,如下所示:

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

我如何明确和正确地释放这个空间?

4

2 回答 2

11

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

如果您想在 Thrustvector的生命周期内手动解除分配任何 Thrust 的存储空间,您可以使用以下方法执行此操作:

// empty the vector
vec.clear();

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

swap罗杰达尔的回答中提到的技巧也应该有效。

于 2012-06-20T17:29:26.150 回答
9

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

v.clear();
device_vector<T>().swap(v);
于 2012-06-20T15:25:30.367 回答