問題タブ [directcompute]

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 投票する
0 に答える
150 参照

directx - DirectComputeと複数のデバイス?

CUDAのように、複数のデバイス(GPU)間で作業を分割することは可能ですか?これはコードでどのように見えますか?

DirectComputeの適切なドキュメントを見つけるのは困難であり、SDKにはこの例が示されていません。

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

hlsl - directcompute hlsl numthreads?

計算シェーダーをディスパッチするときに実行されるスレッドグループを既に定義しているので、シェーダーファイル内の数字は何を意味しますか?例:[numthreads(1、1、1)]

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

hlsl - DirectCompute のバッファ速度への書き込み

私はパーティクル シミュレーションに取り組んでいて、少しボトルネックに遭遇しました。UAV を使用して RWStructured の単一の float バッファーに書き込むと、約 10 倍遅くなります。実験によると、帯域幅に不足はないように見えますが、アクセス時間自体がそれを妨げているだけです。送信データは特定の順序である必要があるため、追加書き込みは問題外です。これは DX10/SM4 ハードウェア上にあるため、いくつか質問があります: 速度を上げる方法はありますか (シェーダーからの出力が連続していないため、より大きなデータのチャンクを書き込む以外に)? そうでない場合、DX11 グレードのハードウェアは UAV でより高速ですか?

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

c++ - HLSL バッファーのストライドとスレッド化 - ここで何が起きているのでしょうか?

私は DirectCompute テクノロジに本当に慣れていないので、控えめに言っても、msdn Web サイトのドキュメントから学ぼうとしています。

4x4 行列と 4xN 行列を取り、乗算結果を返す基本的な hlsl ファイルを作成したいと思います。しかし、コードでしばらく遊んだ後、理解できない奇妙なものを見つけました。主に、渡すスレッドがバッファを処理してデータを出力する方法です。

これらすべての例で、2 つの 16 浮動小数点バッファーを渡し、16 浮動小数点バッファーを取得してから、4x1x1 のグループ化でディスパッチします。私の C++ コードで見たいセクションがあれば教えてください。

次のコードを使用します。

次の値を取得します。

これは私には理にかなっています-バッファは4つのスレッドとして解析され、それぞれが1つのfloat4グループ化を実行します.

次のコードを使用します。

次の値を取得します。

そして、私が実行したい実際のコードで:

次の値を取得します。

ここで重要なことを見逃していることはわかりますが、私の人生では、これらがどのように機能するかを説明する適切なドキュメントを見つけることができません。誰かがこのコードで何が起こっているのかを理解するのを手伝ってくれますか?

御時間ありがとうございます、

ザック

別の注記として、このコードは Microsoft DirectX SDK (2010 年 6 月)\Samples\C++\Direct3D11\BasicCompute11 サンプルを使用して一緒に作成されました。私がひどく間違ったことをしている場合は、遠慮なくお知らせください。私はHLSLで本当に新しいです。

編集:私のバッファ作成コード。

.1,.2,.3,.4 を試しています ...

これを得た:

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

multithreading - GPU上のスレッドとスレッドグループ

GPUにディスパッチできるスレッド/スレッドグループの「グリッド」について疑問に思っています。私はDirectComputeを使用しているので、そのAPIを使用した具体的な例を示します。たとえば、Dispatch(2,2,2)を呼び出すと、合計2x2x2=8のスレッドグループがディスパッチされることがわかります。ただし、Dispatch(8,1,1)を呼び出すと、8x1x1 = 8スレッドグループもディスパッチする場合の違いは何ですか?パフォーマンスに違いはありますか?

GPU上のスレッドに関するPSの同じ質問。計算(.hlsl)ファイルで宣言されたnumthreads(2,2,2)とnumthreads(8,1,1)の違いは何ですか?

どんな助けでもいただければ幸いです。

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

memory - HLSL を使用して目に見えないグラフィックス カードに負荷をかける - メモリに負荷をかける方法は?

グラフィックカードの機能をテストするために、目に見えない(視覚的な出力を生成しない)ストレッサーを少し開発してきました(そして、DirectCompute全般の調査として、私はかなり新しいです)。私は今、私がかなり誇りに思っている次のコードを持っています:

これは、2 の最初の 40 乗に対してLucas Lehmer 検定を実行します。このコードをタイミング ループでディスパッチし、GPU-Zを使用してグラフィックス カードの統計情報を確認すると、その間 GPU 負荷が 99% に達しています。私はこれにかなり満足していますが、完全にロードされた GPU からの発熱は実際にはごくわずかであることにも気付きました (摂氏 5 度から 10 度ほど上昇しています。たとえば、ボーダーランズ 2)。私の考えでは、熱のほとんどはメモリ アクセスから発生しているため、実行全体で一貫したメモリ アクセスを含める必要があります。私の最初のコードは次のようになりました。

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

image-processing - GPU上のスレッド

私はDirectComputeを使用してGPUで一般的なコンピューティングを行っています。現在、解像度1920x1080のテクスチャを操作しようとしています。Dispatch(2、1080、1)とnumthreads(960、1、1)があり、計算によれば、ピクセルごとに1つのスレッドで画像を正確にカバーしています。

さて、私が理解しているように、すべてのスレッドは同時に実行する必要がありますよね?ただし、私のコードでは、ピクセルが黒の場合は計算を行いません。そのため、ほとんどの画像が黒の場合、パフォーマンスが確実に向上することに気づきました。ただし、1つのオブジェクトが画面をブロックすると、パフォーマンスが大幅に低下します。

私の質問は、すべてのスレッドが並行して実行されている場合、フレームの処理速度は最もパフォーマンスの低いスレッドによって決定されます。基本的に、黒いピクセルで実行されているスレッドはアイドリング状態になります。では、なぜ、より多くのピクセルが処理されるときに速度が低下するのでしょうか。彼らは同時にそうするべきです。それとも私はこれをすべて間違っていますか?

どんな助けでもいただければ幸いです。

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

directx - DirectX コンピューティング シェーダーは、共有メモリ内の 2D 配列をサポートしていますか?

groupsharedDirectX コンピューティング シェーダーでメモリを使用して、グローバル メモリ帯域幅を削減し、できればパフォーマンスを向上させたいと考えています。私の入力データは で、次のTexture2Dように 2D インデックスを使用してアクセスできます。

入力データの一部をキャッシュするための共有メモリの 2D 配列が必要なので、明らかなことを試しました。

コンパイルされません。エラーメッセージは言うsyntax error: unexpected token ','

共有メモリの 2D 配列を持つ方法はありますか? そうでない場合、共有メモリの 1D 配列に格納された 2D データを操作するための適切な手法は何ですか?