4

次のように、推力デバイス ベクトルを使用してスペースを割り当てました。

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

このスペースを明示的かつ正しく解放するにはどうすればよいですか?

4

2 に答える 2

11

device_vector標準の c++ コンテナーと同様に、スコープ外になると関連付けられたストレージの割り当てを解除します。

Thrust のストレージの有効期間中に手動で割り当てを解除したい場合はvector、次のレシピを使用して実行できます。

// empty the vector
vec.clear();

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

swapRoger Dahl's answer で言及されているトリックも機能するはずです。

于 2012-06-20T17:29:26.150 に答える
9

clear()ベクトルのサイズを0に設定しますが、関連するメモリを解放しない場合があります。STLでメモリを解放する標準的な方法は、ベクトルを空のベクトルと交換することです。スラストでも機能するはずです。

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