問題タブ [thrust]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 推力の最大長を決定::device_vector
thrust::device_vector<T>
安全に割り当てることができる最大サイズを決定する方法はありますか?
c++ - 推力の構造のベクトルのイテレータ
この方法でベクトル要素にアクセスしようとしています
device_vectorは正しく初期化されました。次のエラーが発生します:
私は何が間違っているのですか?
sorting - 推力: メモリ割り当てが原因で sort_by_key が遅い
sort_by_key
サイズ8000万のキーと値のint配列を使用しています。デバイスは2GB VRAMを搭載したGTX 560 Tiです。sort_by_key の前に使用可能な (空き) メモリが の場合、 でソートを終了します。ただし、使用可能なメモリが に低下すると、同じキーと値の配列の sort_by_key は!1200MB
200ms
600MB
1.5-3s
Compute Visual Profilerの下でプログラムを実行しました。GPU タイムスタンプが、前の最後のカーネルsort_by_key
と内部の最初のカーネル呼び出しsort_by_key
(
RakingReduction
.
sort_by_key
最初の内部カーネルを呼び出す前に、内部でメモリ割り当てが行われていると思われます。必要なメモリsort_by_key
は (利用可能なメモリがであっても600MB
)
利用可能ですsort_by_key
。これが発生すると、コンピューターが 1 秒間フリーズすることがわかります。Process Explorerを開いたままにしておくと、CPU物理メモリグラフにも隆起が見られ
ます。
sort_by_key
使用可能なメモリが少ない場合に、この作業を同じくらい速くするためにできることはありますか? また、メモリ バンプと一時的なフリーズを引き起こしているデバイスとホストの間で何が起こっているのでしょうか?
cuda - CUDAで3つの配列をキーでソートする(おそらくThrustを使用)
同じサイズの配列があります(要素3
よりも多い)。300.000
浮動小数点数の 1 つの配列とインデックスの 2 つの配列。したがって、番号ごとに2
IDがあります。
すべての3
配列は既に GPU グローバル メモリにあります。それに応じて、すべての番号を ID で並べ替えたいと思います。
Thrust ライブラリを使用してこのタスクを実行する方法はありますか? Thrustライブラリよりも良い方法はありますか?
もちろん、私はそれらをホスト メモリとの間で何度もコピーしたくありません。ちなみに、これらはベクトルではなく配列です。
事前にご協力いただきありがとうございます。
暫定的な解決策ですが、これは非常に遅いです。ほぼ4
数秒かかり、配列サイズは次の順序です300000
c++ - Thrust::device_vector を参照によって関数に渡す
私はdevice_vector
構造を通過しようとしています
次の方法で関数に:
myvector は正しく初期化されました
次のエラーが表示されます。
どうしたの?
c++ - GCC (CUDA で使用) の必然的な可変個のテンプレート?
Linux/GCC でいくつかの CUDA/Thrust コードを試していて、いくつかの TR1 ライブラリを使用したいと思っていましたが、奇妙なことに気付きました: ほとんどのライブラリは常にtr1_impl/type_traits
(4.4) または単にtype_traits
(4.6) を取り込み、そのヘッダーには常に可変長テンプレートが含まれます。 、 そのようです:
ただし、これらのヘッダーは、GCC を C++98 または C++03 モードで実行するときにも使用されます。これはどのように機能しますか?
私が実際に遭遇した問題は、CUDA ツールチェーンが C++0x 構造を認識せず、cudafe++
(CUDA フロントエンド、つまりジョイント ソース コードをホスト ソース コードとデバイス ソース コードに分離するプログラム) が発生したときにエラーで正しく中止されることです。可変個引数のテンプレート パラメーター。
では、GCC は C++ の非 0x ダイアレクトでどのように variadic テンプレートをサポートし、依存できるのでしょうか? また、TR1 の正規の C++03 バージョンを入手する方法はありますか?
c++ - CUDAスラストリターンタイプ
現在、Thrustライブラリを使用しようとしていますが、リターンタイプに問題があります。
エラーが発生します:
誰かが私にリターンタイプがどうあるべきかをどのように理解するかを説明してもらえますか?
ドキュメントによると、リターンタイプは
しかし、これは私にはうまくいきません、誰かが説明してもらえますか?
ありがとう!
c++ - CUDA推力性能
一連の数値を含む 640*480 ベクトルがあります。ベクトルの各行の最小数と最大数を見つけたいと考えています。
ただし、これは非常に遅いです。これを高速化する方法はありますか?
- これを実行したときの GPU の現在の負荷は 34% しかないので、これを改善する方法が必要ですか?
c++ - スラストライブラリ-ラッパーの書き方は?
C ++で記述されたVS2010プロジェクトがあり、thrust::sort関数を使用したいと思います。私のデータは現在POD(Plain Old Date)構造体にあります。推力::ソートルーチンが機能するには、ホストとデバイスのベクトルコンテナが必要です。推力::ソートで使用するためにPODデータをインターフェースする最も簡単な方法は何ですか?
ありがとう、デイブ
c++ - CUDA/Thrust を使用して、配列の 1 つの値に関して 2 つの配列/ベクトルを並べ替える方法
これは、プログラミングに関する概念的な質問です。
要約すると、2 つの配列/ベクトルがあり、1 つを並べ替える必要があります。そのため、arrayOne を並べ替えると、並べ替えのスワップごとに、同じことが arrayTwo に発生します。今、私は std::sort を使用すると比較関数を定義できることを知っています (私が想定しているカスタム オブジェクトの場合)。
だから私が望むのは、CUDAを使用して、ベクトルの1つの値に基づいて2つのベクトルをソートすることです。
これが私の不確実性が高まるところです。基本的には、Thrust ライブラリを使用して並べ替えを行いたいと考えています。カスタム比較関数の定義をサポートしていますか? もしそうなら、私はまだ arrayTwo の変更を伝播する方法を理解していません (CUDA ベースになるため)。
CUDA でカスタムの並列クイックソートを実装する時間がありません。
理由
基本的に、変数の配列の束に対して単一の配列に対してソートと計算を実行する必要があります (回帰木を考えてください)。当然のことながら、できるだけ早く行う必要があります。CPU ベースの並べ替えでは十分な速度が得られません。
#アップデート
ホストで2つを並べ替えるのに問題はありません.CUDAを使用するソリューションを探しています。ありがとう。
#更新 2
質問を投稿して以来、私は実際に幸運になり、解決策を見つけたと思います.Thrustは実際に私が探しているものをデフォルトで正確に提供することがわかりました:
* http://code.google.com/p/thrust/wiki/QuickStartGuide#Fancy_Iteratorsから取得*
だから、今私がしなければならないのは、2 つの配列から 2 つの Thrust::device_vectors を取得することです (2D 配列から取得する必要があります)。幸せ。