問題タブ [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++ - 2 つの配列からペア ベクトルを作成し、CUDA/Thrust を使用してペアの最初の要素で並べ替えるにはどうすればよいですか?
よし、これで一口食べられるぞ。
シリアル化された 2D 配列へのポインターがあり、ポインター演算は別として、(本質的に) 2 つの配列 (2D 配列から取得する予定) からペアのベクトルを作成したいと考えています。ただし、Thrustライブラリを使用する必要があります。
これは、ペアの最初の要素の値に基づいて、ベクトルで Thrust::sort() を使用できるようにするためです。デバイス上。
したがって、ペアのベクトル (好ましくは、推力::device_vector) (明らかに、arrayOne と arrayTwo のサイズに一致するサイズ) が必要です。ペアの最初の要素は arrayOne から、2 番目は arrayTwo からのものです。そのため、ペアの最初の要素でソートするために、thrust::sort() を使用できます。
コードが不足していて申し訳ありませんが、これを実装する方法の詳細をまだ理解しようとしているため、質問です。試行錯誤しながら投稿していきます。前もって感謝します!
#アップデート
質問を投稿したので、実際に幸運になり、解決策を見つけたと思います(ペアを使用するよりも優れた解決策です-以前の質問から提案されました)、Thrustは実際に私が提供したものとまったく同じであることがわかりました'デフォルトで探しています:
* http://code.google.com/p/thrust/wiki/QuickStartGuide#Fancy_Iteratorsから取得*
だから、今私がしなければならないのは、2 つの配列から 2 つの Thrust::device_vectors を取得することです (2D 配列から取得する必要があります)。幸せ。
sorting - BitonicソーティングネットワークとThrust::sort_by_key
ソートを使用するアルゴリズムを実装しました。10^7要素の配列をソートするのに約0.4秒かかるThrust::sort_by_keyを試しました。
バイトニックソートネットワークはThrust::sort_by_keyよりも高速である必要があると思いました。ただし、バイトニックソートでは、上記と同じ配列をソートするのに約2.5秒かかりました。SDKが提供するバイトニックソートネットワークを使用しました。元のバイトニックソートを少し変更しました。
理由を教えてください。または私にいくつかのアドバイスを与えますか?
ありがとう、
Yik
2011年8月15日
cuda - ソートされたリストのエントリの削除: gpu で効率的に
cuda/thrust で次の問題をコーディングしようとしています。キーのリストと、各キーに関連付けられた 3 つの値が与えられます。それらを辞書順で並べ替えることができました。同じキーを持つ入力がそれぞれの値に関する関係を持つ場合、入力を減らす必要があります。以下の例では、V1(a)<=V1(c) および V2(a)<=V2(c) および V3(a)<=V3(c) は、入力 a < 入力 c、したがって入力 c を意味します。出力から削除されます。
入力例:
出力例:
- 入力 a < 入力 c ==> c を削除
- 入力 a < 入力 d ==> d 削除
上記の問題は、for ループと if ステートメントを使用して解決できました。現在、GPU ベースの cuda/thrust を使用してこれを解決しようとしています。これは GPU (できればスラスト) で実行できますか、それとも個々のカーネルを cuda で記述する必要がありますか?
スラスト: キー値配列の重複の削除で説明されているように、一意を使用してこの問題を定式化することはありませんでした
上記のシナリオを生成するプログラム「stl/c++」プログラムを含めるように編集: セクション「myMap の削減」は、for ループと if ステートメントを使用した私の実装です。
cuda - ソートでTHRUSTよりも速いCUDPP?では、構造体配列はどうですか?
構造体の配列があり、それらを並べ替えたいと思います。私はThrust::sortを使用していますが、うまく機能します。次に、CUDPPの方が並べ替えが速いと言われますが、構造体配列を簡単に並べ替えることはできません。
ここでは、CUDPPを使用して構造体配列を並べ替える方法を説明しましたが、リソースを消費しているように聞こえます。
並べ替えを高速化するための提案はありますか?この仕事をする他の方法はありますか?
PS私の構造は単にいくつかの数字です...
cuda - CudaThrustカスタム機能
この機能をThrustでどのように実装できますか?
CUDAでは次のようにしました:
ありがとう!
cuda - 関数内の推力カウントイテレータ
CudaThrustカスタム機能での回答ありがとうございます
このような値をコピーするために別のベクトルを渡したい場合、最後にもう1つありますか?
作成された関数に値を渡す方法はまだわかりません。ありがとうございます。
c++ - STL推力複数ベクトル変換?
a = a + b + c を書くより効率的な方法があるかどうか疑問に思っていましたか?
これは機能しますが、コードを 1 行だけ使用して同じ効果を得る方法はありますか? 例で saxpy の実装を見ましたが、これは 2 つのベクトルと定数値を使用しています。
これはより効率的ですか?
cuda - CUDA 配列内の数値の出現回数をカウントする
1000000
CUDA (通常は要素)を使用して GPU に格納された符号なし整数の配列があります。配列内のすべての数値の出現をカウントしたいと思います。明確な数はわずか ( 程度10
) ですが、これらの数は 1 から まであり1000000
ます。約9/10
番目の数字は0
です。それらの数は必要ありません。結果は次のようになります。
sを使用した実装atomicAdd
がありますが、遅すぎます (多くのスレッドが同じアドレスに書き込みます)。誰かが高速/効率的な方法を知っていますか?
cuda - Thrust 変換中にベクトルを並べ替えるにはどうすればよいですか?
この単純なコードを推力コードに変換するにはどうすればよいですか?
詳細情報: cA と rA は const 整数であるため、「n」= cA-rA と考えることができます。 sn : float(n) の配列 n_index : int(n) の配列 c : float(cA) の配列
私の問題は、C 配列の要素を指す n_index[i] にあります。ありがとう!
cuda - 3 つの異なるサイズのベクトルの推力複素変換
こんにちは、C+ にこのループがあり、それを推力に変換しようとしましたが、同じ結果が得られませんでした...何かアイデアはありますか? ありがとうございました
C++ コード
スラストコード
推力関数