安全に割り当てることができるthrust::device_vector<T>
の最大サイズを判断する方法はありますか?thrust :: device_vectorの最大長の決定
1
A
答えて
3
私が知っ簡単な方法はありません。 、それ私の「合理的な」大きさは(最高のように私は、GT200の時代に言うことができるようデクリメント、
const size_t MB = 1<<20;
size_t reserved, total;
cudaMemGetInfo(&reserved, &total);
char fail = 0;
while(cudaMalloc((void**)&pool, reserved) != cudaSuccess)
{
reserved -= MB;
if(reserved < MB)
{
fail = 1;
break;
}
}
cudaMemGetInfo
から返された合計空きメモリで始まる:私のいつものアプローチは、このような何かをしてきましたGPU MMUには、1Mbが最大の2つの異なるページサイズがあります)。ループは、割り当てを取得するか、メモリが断片化したり使い果たされて1ページでも失敗したりするまで続きます。それほどきれいではありませんが、99.999%の時間で動作するようです。
0
cudaMemGetInfo
を使用してください。
関連する問題
- 1. thrust :: device_vectorエラー
- 2. 2次元thrust :: device_vector <thrust :: device_vector <int>>を生ポインタにキャストする方法
- 3. thrust :: device_vectorに効率的に挿入/マージするには?
- 4. シードデータベースの設定最大長
- 5. ElasticSearch - 最大シャードサイズの決定
- 6. thrust :: device_vectorから生のポインタに戻って戻ってきますか?
- 7. device_vectorの各要素を定数でデクリメントする方法は?
- 8. エラー:device_vector
- 9. 長いテキストフィールドの最大長
- 10. ユーザー定義の構造体のthrust :: device_vectorで排他スキャンを実行します。コンパイラエラー
- 11. thrust :: complex型で操作する:thrust :: transform
- 12. CMakeLists問題:thrust :: device_vectorでresize()を呼び出すと、bad_allocエラーが発生する
- 13. 最大タイトル長の設定:Blogspot
- 14. EditTextの最大長を設定する
- 15. 最大ラベル長の設定方法は?
- 16. SteamID64の最小長と最大長
- 17. Android:URLの最大長
- 18. UITextViewの最大長
- 19. スカラキューの最大長
- 20. openIDの最大長
- 21. ハフマンの最大ビットエンコーディングを決定する
- 22. nvidia cuda thrust abort()find_if
- 23. オラクルナンバーフォーマットモデル最大長
- 24. JAVA_TOOL_OPTIONS最大長
- 25. 2つの異なるUITextfieldの最小長と最大長の設定
- 26. SAS長さが最大長
- 27. URLの最大長(C#の)
- 28. RemoteInputの最小長および/または最大長の指定方法
- 29. Redis - 最大ログファイル長を定義する
- 30. Android OpenGLESの最大/最小テクスチャサイズ制限の決定
メモリ断片化のため、 'cudaMemGetInfo'によって報告される空きメモリの量は、通常、連続ブロックにはありません。ゼロと完全空きメモリの間のバイナリ検索に頼ることなく、最大連続ブロックを求める方法はありますか? – Craz
@Crazまあ、わからない。ドライバapiをチェックしてください。そこにあるかもしれないかもしれない – Anycorn
@Craz:本当にではありません。私は通常、 'cudaMemGetInfo'の結果で始まり、それが成功するまで合理的な単位(私は通常Mbを使います)で減分します。興味のある場合は、この[code snippet](https://github.com/avidday/hpl-cuda/blob/master/src/auxil/HPL_gpusupport.c#L96-107)の例を参照してください。 – talonmies