GPGPUとCUDAを初めて使用しています。私の読書から、現在の世代のCUDA GPUでは、スレッドは32スレッドのワープにバンドルされます。ワープ内のすべてのスレッドが同じ命令を実行するので、分岐に分岐がある場合、すべてのスレッドは基本的に、発生したすべての分岐を取ることに対応する時間を要します。しかし、GPU上で同時に実行される異なるワープは、別個の計算資源によって異なるワープが実行されるので、このコストなしに分岐ブランチを有することができるように思われる。ですから、私の質問は、発散がこのペナルティを引き起こさない場合、つまりスペックシートで調べなければならない数字は何であるのかを、同時実行できるワープの数にします。ここに関連する「シェーダプロセッサ」の数または「ストリーミングマルチプロセッサ」の数ですか?GPUプログラミングモデル - ペナルティなしで同時に多数のスレッドが混在する
また、AMD Radeonについても同じ質問があります。ここで関連用語は「統一シェーダ」と「コンピューティングユニット」です。
最後に、ワードごとに1つのスレッドしか必要としないように、スレッド間で非常に異なるワークロードがあるとします。基本的にGPUを通常のマルチコアCPUとして使用する。それは可能ですか?これを行うためにスレッドとスレッドブロックをどのようにレイアウトする必要がありますか?ワープ中の31の冗長スレッドにメモリなどを割り当てるのを避けることはできますか?私はこれがGPGPUの理想的なワークロードではないかもしれないが、ホストCPUをブロックすることなくバックグラウンドでアクティビティを実行するのに使用できることを理解しています。