次のように、推力デバイス ベクトルを使用してスペースを割り当てました。
thrust::device_vector<int> s(10000000000);
このスペースを明示的かつ正しく解放するにはどうすればよいですか?
device_vector
標準の c++ コンテナーと同様に、スコープ外になると関連付けられたストレージの割り当てを解除します。
Thrust のストレージの有効期間中に手動で割り当てを解除したい場合はvector
、次のレシピを使用して実行できます。
// empty the vector
vec.clear();
// deallocate any capacity which may currently be associated with vec
vec.shrink_to_fit();
swap
Roger Dahl's answer で言及されているトリックも機能するはずです。
clear()
ベクトルのサイズを0に設定しますが、関連するメモリを解放しない場合があります。STLでメモリを解放する標準的な方法は、ベクトルを空のベクトルと交換することです。スラストでも機能するはずです。
v.clear();
device_vector<T>().swap(v);