如何释放device_vector <int>

Pro*_*mer 3 cuda gpu thrust

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

thrust::device_vector<int> s(10000000000);
Run Code Online (Sandbox Code Playgroud)

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

Rog*_*ahl 8

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

v.clear();
device_vector<T>().swap(v);
Run Code Online (Sandbox Code Playgroud)


Jar*_*ock 8

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

如果您想vector在其生命周期内手动释放任何Thrust 的存储,您可以使用以下配方:

// empty the vector
vec.clear();

// deallocate any capacity which may currently be associated with vec
vec.shrink_to_fit();
Run Code Online (Sandbox Code Playgroud)

swapRoger Dahl的答案中提到的技巧也应该有效.