問題タブ [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.
visual-studio-2010 - Visual Studio で Thrust CUDA をデバッグできない
私はVS10で単純なCUDAプロジェクトをコンパイルしました(そしてそれは機能します)が、奇妙なことに、コードの一部、つまりホスト側のスラストでさえなく、スラスト呼び出しを含む部分にブレークポイントを設定したり、ステップオーバーしたりすることはできません。デバッグ キー -D_NEXUS_DEBUG -g および -G0 を指定して nvcc を実行すると、問題の部分は F10 およびブレークポイントから見えなくなります。
たとえば、次の関数では、ステップ デバッグはスター付きの (簡単な) 行でのみジャンプします。
}
[逆アセンブリ] ウィンドウにステップインしてからソースに戻ると、Thrust ソースが取得されます。しかし、明らかに何かが壊れています。
質問 2: ビルド ログの下にすべての警告が 2 回出力されるのはなぜですか?
visual-studio-2010 - デバイスからホストへのデータのコピーが機能しない
大学のプロジェクトでは、Windows7x64でvs2010を使用しています。CUDAツールキットv4.0を使用しています。簡単なgpu-vs-cpuテストを実行したいのですが、ほとんどのテストは実行されていますが、cudaテストで結果が返されることはありません。デバッガーでメモリを確認しましたが、デバイスのメモリには必要なものがすべて含まれており、メモリのコピーだけが失敗しました。
コード行「h_c=d_c;」に注意してください。推力では、これはデータをd_c(デバイスベクトル)からh_c(ホストベクトル)にコピーすることになっています。この行は失敗しませんが、正しく実行されません。h_cはずっと0のままです。
私は次のような他のいくつかの方法を試しました
また
あるいは
何も機能しませんでした。私はここで迷子になっています。
誰か似たようなものがありましたか?すべての助けが高く評価されました。
c++ - Thrust::device_vector から raw ポインターへ、そしてその逆?
ベクトルから生のポインターに移動する方法は理解していますが、逆方向に移動する方法についてはスキップしています。
誰かが説明/例を教えてもらえますか?
cuda - CUDA Thrustを使用して最大要素値とその位置を見つける
値だけでなく、最大 (最小) 要素 (res.val
およびres.pos
) の位置を取得するにはどうすればよいですか?
c - このトリプルループを効率的に並列化するにはどうすればよいですか?
入力として 3 つの配列 (x、y、および prb) と 1 つのスカラーを取り、3 つの配列 (P1、Pt1、および Px) を出力する関数を並列化しようとしています。
元の c コードは次のとおりです (外れ値と E は重要ではありません)。
これを並列化する私の試みは次のとおりです。
ただし、恐ろしいことに、元のバージョンよりもはるかに遅く実行されます。より速く実行するにはどうすればよいですか? 私はCUDAと並列プログラミングに非常に慣れておらず、アルゴリズムの経験がないため、徹底的に説明してください。
c バージョンには列優先の順序があり、CUDA バージョンには行優先があることに注意してください。結果が正しいことを確認するために、いくつかのテストを行いました。それは非常に遅く、大量のメモリを占有します。
どんな助けでも大歓迎です!
編集: 詳細: N と M は数千 (たとえば、300-3000) のオーダーであり、D は常に 3 です。CUDA バージョンでは、h_ で始まる変数を除いて、配列はデバイスメモリであると想定されています。
cuda - スラスト デバイス イテレータが機能しない
以下のコードが 1,2 を出力しない理由がわかりませんが、いくつかの乱数が出力されます
さらに、 begin と end1 を使用して、結果配列のすべての値を反復処理する方法
cuda - cuda + Thrust プロジェクトを複数のファイルに分割できますか
Thrust (cuda api) と openMP テクノロジの両方を使用するビルドとプロジェクトです。私のプログラムの主な目的は、何かを計算するためのインターフェイスを提供することです。そのために、私は STRATEGY デザイン パターンを使用することにしました。これは基本的に、仮想関数を使用して基本クラスを定義し、次にその基本クラスから派生して必要な関数を実装する他のクラスを定義する必要があることを意味します。
私の問題はここから始まります: 1。プロジェクトに複数の .CU ファイルを含めることはできますか? 2. CU ファイルにクラスの宣言を含めることはできますか?
3. これは続きます 2. 、DEVICE カーネルはクラス内で宣言できず、次のように実行する必要があることに気づきました。
それは正しい方法ですか?4.最後の質問は、私は THRUST を使用していますが、CU ファイルも使用する必要がありますか?
ありがとう、イガル
cuda - 推力ベクトル型で通常の CUDA カーネルを作成する
簡単な質問があります。たとえば、推力ベクトルに書いた cuda カーネルを使用したい場合、device_vector を通常のポインター型にキャストする必要がありますか? または別の方法がありますか?
ああ、device_vectorコンストラクターに関して、GPUにポインターが割り当てられている場合、そのポインターを受け入れるクイックdevice_vectorがありますか、それとも最初にすべてをCPUに転送してから、適切な引数でdevice_vectorを宣言することになっていますか(CPU 割り当て変数) ?
ありがとう、イガル!
c++ - CUDAカーネル内で使用するためのthrust::device_vectorと同等のライブラリはありますか?
推力::device_vectorの自動メモリ管理は本当に便利です。唯一の欠点は、カーネルコード内からそれを使用できないことです。
インターネットを調べたところ、ホストコードからデバイスメモリを処理するthrustなどのベクターライブラリが見つかりました。カーネル用のベクターライブラリはありますか?そうでない場合は、そのようなライブラリを用意するのは悪い考えですか?