私はDirectComputeを使用してGPUで一般的なコンピューティングを行っています。現在、解像度1920x1080のテクスチャを操作しようとしています。Dispatch(2、1080、1)とnumthreads(960、1、1)があり、計算によれば、ピクセルごとに1つのスレッドで画像を正確にカバーしています。
さて、私が理解しているように、すべてのスレッドは同時に実行する必要がありますよね?ただし、私のコードでは、ピクセルが黒の場合は計算を行いません。そのため、ほとんどの画像が黒の場合、パフォーマンスが確実に向上することに気づきました。ただし、1つのオブジェクトが画面をブロックすると、パフォーマンスが大幅に低下します。
私の質問は、すべてのスレッドが並行して実行されている場合、フレームの処理速度は最もパフォーマンスの低いスレッドによって決定されます。基本的に、黒いピクセルで実行されているスレッドはアイドリング状態になります。では、なぜ、より多くのピクセルが処理されるときに速度が低下するのでしょうか。彼らは同時にそうするべきです。それとも私はこれをすべて間違っていますか?
どんな助けでもいただければ幸いです。