1

CUDA をプログラミングするとき、スレッド ブロックが SM でスケジュールされ、他の SM に移行されないことは誰もが知っています。スレッド ブロックのスレッドに関しては、実行中は 1 つの SP にとどまりますか、それとも命令を別の SP に任意にスケジュールできますか?

4

3 に答える 3

4

プログラミング モデルは、スレッドを 1 つの CUDA コアに制限しません。ブロック内のスレッドは共有メモリを介して通信でき、共有メモリには同じ SM 内のスレッドのみがアクセスできるため、スレッド ブロックは単一の SM 上で実行する必要があります。この制限は、GPU をモバイルからスーパーコンピューティングに拡張することを可能にするものの一部です。

スレッドが単一の CUDA コアで実行されるかどうかを知ることが役立つのはなぜですか? CUDA モデルはスループット コンピューティング用です。つまり、1 つのスレッド (ワープ) がレイテンシーのある操作を実行しているときに、ハードウェアが別のスレッド (ワープ) を即座に取り込んでギャップを埋めることができます。その結果、特定のスレッドがどこで実行されているかは問題になりません。

于 2013-08-01T11:34:18.027 に答える
1

1 つの固定 SP に 1 つのスレッドを制限する必要はなく、SP の固定グループ内の任意の SP に自由にスレッドを発行することが簡単かつ効率的であると考えています (つまり、設計を容易にするために 1 つの SM を異なるブロックに分割することができます)。相互接続を最小限に抑えます)。

于 2013-08-02T02:16:02.633 に答える