0

鉴于最新两代 NVIDIA GPU 上的以下低级 (SASS) 指令(参考http://docs.nvidia.com/cuda/cuda-binary-utilities/index.html),有哪些(可能是推测的)差异在硬件/内存层次结构设计(和性能影响)?

表面记忆指令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 阵列封装了 NVIDIA 专有的阵列布局,这些布局针对 2D 和 3D 局部性进行了优化。开发人员故意混淆了从坐标到地址的转换,因为它可能会从一种架构更改为另一种架构。看起来 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;

与 Maxwell 相比:

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

Kepler 指令中的“EA”代表“有效地址”,它是 CISC 指令集中的 LEA(加载有效地址)指令的更复杂的变体。

至于SURED/SUATOM,那些一定是表面等价物GRED/GATOM。两者都执行原子操作,但ATOM变体返回内存位置的先前值,而RED变体不返回。他们不需要不同的内在函数;编译器会自动发出正确的指令。

于 2015-05-25T14:26:37.943 回答