CUスケジューラ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/09 20:36 UTC 版)
「Graphics Core Next」の記事における「CUスケジューラ」の解説
CUスケジューラはSIMD-VUでどのウェーブフロントを実行させるかを選択するハードウェア機能的ブロックである。これはスケジューリングサイクル毎に1基のSIMD-VUを取り上げる。これはハードウェアまたはソフトウェアにおいて他のスケジューラと混同されることはない。 ウェーブフロント (Wavefront) 「シェーダー」はグラフィックス処理を行なう小さなプログラムであり、また「カーネル」はGPGPU処理を行なう小さなプログラムである。前者は通例GLSL/HLSLで記述されるが、後者はOpenCL C言語もしくはGLSL/HLSL(コンピュートシェーダー)で記述できる。これらのプロセスはレジスタをあまり必要とせず、システムまたはグラフィックスメモリからのデータの読み込みを必要とする。この操作は大きく遅延が生じる。AMDとNVIDIAは複数のスレッドをグループ化するという方法でこの不可避な遅延を隠蔽するという、よく似たアプローチを選択している。AMDはこのグループをウェーブフロント、NVIDIAはワープと呼んでいる。スレッドのグループは遅延を隠蔽する仕組みを実装するGPUスケジューリングの最も基本的なユニットであり、SIMDスタイルで処理されるデータの最小サイズ、コードの最小実行可能ユニット、同時に全てのスレッドを単一の命令で処理する手段である。 全てのGCN-GPUではウェーブフロントは64スレッドで構成され、全てのNVIDIA GPUではwarpは32スレッドで構成される。 AMDの解決策は、複数のウェーブフロントを各SIMD-VUに割り振ることである。ハードウェアはレジスタを異なるウェーブフロントに振り分けて、メモリにある一つのウェーブフロントが何らかの結果を待機している時、CUスケジューラはSIMD-VUに他のウェーブフロントを実行させる。ウェーブフロントはSIMD-VU毎に割り振られており、SIMD-VUはウェーブフロントを入れ替えない。最大10個のウェーブフロントが1基のSIMD-VUに割り振られる。(従ってCUあたり40個。) CodeXL(英語版)では、SGPRおよびVGPRの数と波紋の数の関係を表にしているが、基本的にSGPRSの場合はmin(104, 512/numwavefronts)、VGPRSの場合は256/numwavefrontsとなる。 ストリーミングSIMD拡張命令に関連して、この最も基本的な並列度の概念は、しばしば「ベクトル幅」と呼ばれることに注意されたい。ベクトル幅は、その中の総ビット数によって特徴付けられる。
※この「CUスケジューラ」の解説は、「Graphics Core Next」の解説の一部です。
「CUスケジューラ」を含む「Graphics Core Next」の記事については、「Graphics Core Next」の概要を参照ください。
- CUスケジューラのページへのリンク