2

AMD GPU に関する記事を読んでいて、特定の例に混乱しています。多数のレジスターを持つ SIMD ユニットが与えられた場合、x 個のレジスターが必要な場合、SIMD を占有できる波面の数はいくつですか?

具体的には、SIMD ユニットに 1 ~ 32 のウェーブフロントを共有する 16k のレジスタがある場合。これは、各波面が平均 8 つのレジスタを持つことができることを意味します (波面が 32 ある場合)。これで問題ありません。

さらに、SIMD のウェーブフロント数には 20.6 までのグローバルな制限があり、各ウェーブフロントに 11 ~ 12 のレジスタを与えることになります。

この部分は私を混乱させます。さらに、83 以上のレジスタを使用する場合、SIMD を占有できるのは 2 つの波面のみであると言えます。(波面の幅は 64 であることを思い出してください)。

私の計算 2 * 83 * 64 = 10628 registersでは、これは SIMD ごとに与えられた 16,384 をはるかに下回っています。したがって、3 つの波面があっても問題ありません。

見逃したものがある場合は、ここの記事を読んでいます。(第7段落)

4

1 に答える 1

0

グローバル制限について:

各 amd gpu には、維持できる同時波面数のグローバルな制限があります。この制限はモデル固有ですが、通常、同じチップの異なるカット バージョン間で変化しません。たとえば、サイプレス チップ (5830、5850、5870) の場合、GPU あたり 496 波面です。これらのチップは CU の数が異なるため、ウェーブフロント/CU の最大数 (この制約によって計算される) は、5830 の 35.4 から 5870 の 24.8 まで減少します。エントリーレベルのチップの場合、このグローバル制限は 96 ウェーブフロント/CU の値まで計算できます。 CU。これらの場合、32 ウェーブフロント/CU (8 ワークグループと 4 ウェーブフロント) の制限は、8 レジスタ/スレッドに適用されます。

次に、2 つの波面について:

ATI Stream Programming Guide OpenCL に記載されている数値から判断すると、使用可能なレジスタの数は 16384 よりわずかに少ないようです。カーネルから直接アクセスできないその他の目的 (命令ポインターなど)。与えられた表では、15872 を超えるレジスタを使用する割り当てがないため、使用可能な最大値である可能性があります。もちろん、これは単なる憶測なので、誰かがマニュアルの間違った数字を使用して、みんながそれをコピーしただけかもしれません。

一般に、ATI Stream Programming Manual OpenCLは、これについて学ぶための優れたリソースです。ただし、リンクは簡単な Google 検索の結果であり、最新バージョンを指していないようです (rev 1.05 を使用しているときに rev 1.03 を指していて、それが最新バージョンかどうかわかりません)。最新のいずれか)。それが重要な違いを生むかどうかはわかりませんが、より詳細な検索が必要になる可能性があります.

于 2011-05-16T13:51:28.200 に答える