問題タブ [gpu-atomics]

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.

0 投票する
1 に答える
625 参照

c - 共有メモリに対するアトミック操作

共有メモリでアトミック操作を行うにはどうすればよいですか?
私はこれに似たものを持っています:

したがって、5 つのスレッドが増加しています。これどうやってするの?
この方法で 5 つのスレッドの実行をシリアル化していることはわかっていますが、ワープにどのような影響がありますか? ワープ内のすべてのスレッドがシリアル化されますか、それとも最初の 5 つだけですか?

0 投票する
7 に答える
9517 参照

algorithm - CUDA: リダクションまたはアトミック操作?

特定の行列の最大値を計算する CUDA カーネルを作成しており、可能性を評価しています。私が見つけることができる最良の方法は次のとおりです。

すべてのスレッドが共有メモリに値を格納するように強制し、その後削減アルゴリズムを使用して最大値を決定します (長所: 最小の発散 短所: 共有メモリは 2.0 デバイスで 48Kb に制限されます)。

読み取り操作と書き込み操作の両方があるため、アトミック操作を使用できなかったため、同期スレッドによってスレッドを同期できませんでした。

他のアイデアが頭に浮かびますか?

0 投票する
1 に答える
496 参照

cuda - cuda アトミック 可視性を追加

CUDA では、アトミック操作の結果は、アトミック操作を実行するブロックと同じブロック内の他のワープのスレッドにすぐに表示されますか? 非アトミック操作の場合、__syncthreads()呼び出されるまで結果が表示されない可能性があることを知っています。

0 投票する
1 に答える
9248 参照

cuda - CUDAの不可分操作?どのヘッダーファイルを含めるか?

CUDAでアトミック操作を使用するには、CUDAヘッダーファイルをインクルードする必要がありますか?CUDAプログラミングガイドはこれに固執しているようです。

以下に示すコードglmax.cuにより、次のコンパイルエラーが発生します。

これがコードです。基本的には、アトミック操作を使用してGPU上の配列の最大値を計算していますatomicMax。私はCUDAを初めて使用するので、これは非常に単純なコードであると確信していますが、不可分操作を理解するのに役立つようにこれを作成しました。

0 投票する
1 に答える
1542 参照

cuda - CUDA のアトミック操作

次のプログラムは「Cuda By Example」のアトミック ロックの実装を使用していますが、プログラムを実行するとマシンがフリーズします。誰かが私のプログラムの何が問題なのか教えてもらえますか? どうもありがとう

イーフェイ

0 投票する
1 に答える
1429 参照

cuda - CUDA: 共有メモリでのアトミック操作


私のcudaカーネルは、ブロック実行の最後にホストに供給されるものを生成します。
スケルトンは次のとおりです。
データが書き込まれる host_data は、ホスト マップド メモリとして割り当てられます。
host_data_count は、生成されたデータの数を示すマップされたメモリでもあります。
私が使用している GPU は、Fermi アーキテクチャと CC 2.0 を備えた GTX 580 です。

このカーネル コードには何が欠けていますか?
誰でも助けることができますか?

0 投票する
3 に答える
15471 参照

visual-studio-2010 - エラー:識別子「atomicAdd」は、FermiGPUを使用するVisualStudio2010およびcuda4.2では定義されていません

Visual Studio2010でCUDA4.2を使用していくつかのCUDAコードをコンパイルしようとしましたが(Parallel Nsight 2.2を使用してこのCUDAプロジェクトを作成しました)、「エラー:識別子「atomicAdd」が未定義です」というアトミックな問題が発生しました。いくつかのフォーラムをチェックした後に解決します。

そこで、CUDASDKサンプルからいくつかの情報を取得しようとしました。まず、CUDA SDKでsimpleAtomicIntrinsicsサンプルを実行し、テストに合格しました。次に、このサンプルのすべてのファイルをVisual Studio2010の新しいCUDA4.2プロジェクトにコピーしてコンパイルしました。結果は、次のとおりです。

ちなみに、このvs2010 CUDAプロジェクトでは、clock、matrixMulなどの他のサンプルを実行できます。(これは、インクルードパスが正しく設定されていることを意味します)

私はそれをグーグルで検索し、次のリンクを見つけました。CUDAカーネル操作でのAtomicaddに関するいくつかの問題。プロジェクトと.cuファイルの両方のプロパティをそれに応じて変更しましたが、それでも問題を解決できません。

なにか提案を?

0 投票する
2 に答える
76434 参照

cuda - CUDA アトミック操作のリスト

アトミック操作の完全なリストがあるかどうか疑問に思っていました。私はインターネット上でそのようなものを見つけることができませんでした。

0 投票する
1 に答える
2317 参照

kernel - OpenCL カーネルでのアトミック操作

カーネルのアトミック操作について詳しく調べてみると、奇妙なことがわかりました。私が理解しているように、アトミック操作が1つの番号で使用されると、すべてのスレッドからのこの種の操作はすべてシリアル化され、整合性を維持するためにこの番号で起動されます。以下は私のカーネルコードの一部です:

上記のコードでは、T1 と T2 の 2 つのスレッドしかないとします。私が理解しているように、T1 と T2 は両方ともコード スニペットを実行しますが、atomic_cmpxchg 操作を実行しようとすると、T2 は T1 が終了するまで待機する必要があります (T1 が最初に実行されたとします)。私が設計したように、T1 が A[ptr] を読み取ると、A[ptr] の古い値は 0 であるため、アトミックに -1 に変更されます。その後、T1については条件が満たされていないため、T1はそのままディレイコードに行き遅延します。ここで、T2 が A[ptr] を操作するときが来ました。これは、A[ptr] が -1 に設定されているため、T2 の条件が満たされているため、T2 は「ptr= A[ptr + 3];」に実行されます。 . しかし、私の問題は、T2が条件判定を終了した後、「ptr = A [ptr + 3];」を実行するためです。すぐに、しかし T1 は遅延に遭遇し、そのため、A[ptr+3] の値は T1 によってまだ更新されていません (k が非常に大きく、遅延が非常に長くなるため)。そのため、T2 は A[ptr+3] の最新の値を読み取らず、newValueしかし、私の実験では、 k値をどれだけ大きく設定しても、結果は常に正しいことが示されています。つまり、 T1 のレイテンシーがどれほど長くても、T2 は常に正しい値 ( newValue ) を読み取ることができます。誰でもこのケースを調べるのを手伝ってもらえますか? どうもありがとう。

0 投票する
1 に答える
332 参照

cuda - CUDA アトミック関数が機能しないのはなぜですか?

atomicMin問題は、int 配列に適用したいということです。私の配列には6つの要素があり、コードは次のとおりです。

最小要素位置が 6 の場合に 6 スレッドでカーネル コードを呼び出すと最小要素が返されず、7 スレッドでカーネルを呼び出すと正しい答えが得られます。このコードの何が問題になっていますか?