ワープは、同時に実行される32のスレッドで構成されます。いつでも32のバッチがGPUで実行され、これはワープと呼ばれます。
次に実行するワープを制御できると述べているところはどこにも見つかりません。知っているのは、32スレッドで構成されており、スレッドブロックは常にその数の倍数である必要があるということだけです。
単一のブロック内のスレッドは、ソフトウェアデータキャッシュを共有する単一のマルチプロセッサで実行され、同じブロック内のスレッドとデータを同期および共有できます。ワープは常に単一のブロックからのスレッドのサブセットになります。
メモリ操作とレイテンシに関しては、これもあります。
ワープ内のスレッドがデバイスメモリ操作を発行すると、メモリレイテンシが長いため、その命令には非常に長い時間がかかり、おそらく数百クロックサイクルかかります。主流のアーキテクチャは、レイテンシを減らすためにキャッシュメモリ階層を追加します。Fermiにはいくつかのハードウェアキャッシュが含まれていますが、ほとんどのGPUは、キャッシュメモリが効果的でないストリームまたはスループットコンピューティング用に設計されています。代わりに、これらのGPUは、高度なマルチスレッドを使用することでメモリレイテンシを許容します。Teslaは各マルチプロセッサで最大32のアクティブワープをサポートし、Fermiは最大48をサポートします。メモリ操作で1つのワープが停止すると、マルチプロセッサは別のレディワープを選択してそのワープに切り替えます。このように、コアをビジー状態に保つのに十分な並列処理がある限り、コアは生産的である可能性があります。
ソース
スレッドブロックをワープに分割することに関して、私はこれを見つけました:
ブロックが2Dまたは3Dの場合、スレッドは1次元、2次元、3次元の順に並べられ、次に32のワープに分割されます。
ソース