表面记忆开普勒与麦克斯韦之间的区别

时间:2015-05-22 22:23:19

标签: cuda nvidia kepler maxwell

鉴于最新两代NVIDIA GPU(ref 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

1 个答案:

答案 0 :(得分:3)

CUDA阵列包含NVIDIA专有的阵列布局,这些布局针对2D和3D局部性进行了优化。从坐标到地址的转换是有意混淆的,因为它可能会从一个体系结构变为另一个体系结构。看起来NVIDIA选择将这种翻译与Kepler以不同的方式包装到Maxwell,而Kepler实现了更“类似RISC”的方法。来自CUDA手册(https://github.com/ArchaeaSoftware/cudahandbook/blob/master/texturing/surf2Dmemset.cu)的surf2dmemset样本的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;

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

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