0

最新の 2 世代の NVIDIA GPU (参照http://docs.nvidia.com/cuda/cuda-binary-utilities/index.html ) で次の低レベル (SASS) 命令を考えると、(おそらく推測される) 違いは何ですか?ハードウェア/メモリ階層設計 (およびパフォーマンスへの影響) で?

サーフェス メモリ命令MAXWELL

SUATOM  Surface Reduction
SULD    Surface Load
SURED   Atomic Reduction on surface memory
SUST    Surface Store

サーフェス メモリ命令KEPLER

SUCLAMP Surface Clamp
SUBFM   Surface Bit Field Merge
SUEAU   Surface Effective Address
SULDGA  Surface Load Generic Address
SUSTGA  Surface Store Generic Address
4

1 に答える 1

3

CUDA 配列は、2D および 3D の局所性に最適化された NVIDIA 独自の配列レイアウトをラップします。座標からアドレスへの変換は、アーキテクチャによって異なる可能性があるため、開発者に対して意図的に難読化されています。NVIDIA は、この変換を Kepler から Maxwell に別の方法でラップすることを選択したようで、Kepler はより「RISC に似た」アプローチを実装しています。CUDA ハンドブック ( https://github.com/ArchaeaSoftware/cudahandbook/blob/master/texturing/surf2Dmemset.cusurf2dmemset ) のサンプルの SASS 逆アセンブリは、出力を書き込むための 6 つの指示を示しています。

 SUCLAMP PT, R8, R7, c[0x0][0x164], 0x0;
 SUCLAMP.SD.R4 PT, R6, R6, c[0x0][0x15c], 0x0;
 IMADSP.SD R9, R8, c[0x0][0x160], R6;
 SUBFM P0, R8, R6, R8, R9;
 SUEAU R9, R9, R8, c[0x0][0x154];
 SUSTGA.B.32.TRAP.U8 [R8], c[0x0][0x158], R10, P0;

マクスウェルのものと比較して:

 SUST.D.BA.2D.TRAP [R2], R8, 0x55;

Kepler 命令の「EA」は「実効アドレス」の略で、CISC 命令セットの LEA (実効アドレスのロード) 命令のより複雑な変形です。

に関してはSURED/SUATOM、それらは と同等の表面でなければなりませんGRED/GATOM。どちらもアトミック操作を実行しますが、ATOMバリアントはメモリ位置の以前の値を返し、バリアントは返しREDません。異なる組み込み関数は必要ありません。コンパイラは正しい命令を自動的に発行します。

于 2015-05-25T14:26:37.943 に答える