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

Cuda 表面记忆开普勒与麦克斯韦的区别,cuda,nvidia,kepler,maxwell,Cuda,Nvidia,Kepler,Maxwell,鉴于以下关于最新两代NVIDIA GPU(ref)的低级(SASS)说明,在硬件/内存层次结构设计(和性能影响)方面(可能推测)存在哪些差异 表面存储器指令MAXWELL SUATOM Surface Reduction SULD Surface Load SURED Atomic Reduction on surface memory SUST Surface Store 表面存储器指令开普勒 SUCLAMP Surface Clamp SUBFM Surface Bi

鉴于以下关于最新两代NVIDIA GPU(ref)的低级(SASS)说明,在硬件/内存层次结构设计(和性能影响)方面(可能推测)存在哪些差异

表面存储器指令MAXWELL

SUATOM  Surface Reduction
SULD    Surface Load
SURED   Atomic Reduction on surface memory
SUST    Surface Store
表面存储器指令开普勒

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

CUDA阵列封装了NVIDIA专有的阵列布局,针对2D和3D位置进行了优化。从坐标到地址的转换是开发人员有意混淆的,因为它可能会从一个体系结构更改到下一个体系结构。看起来NVIDIA选择了不同于开普勒到麦克斯韦的方式来包装这一翻译,开普勒实现了一种更“类似RISC”的方法。CUDA手册()中的
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;
与Maxwell的相比:

 SUST.D.BA.2D.TRAP [R2], R8, 0x55;
开普勒指令中的“EA”代表“有效地址”,它是CISC指令集中LEA(加载有效地址)指令的更复杂变体


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

CUDA阵列封装了NVIDIA专有的阵列布局,这些布局针对二维和三维位置进行了优化。从坐标到地址的转换是开发人员有意混淆的,因为它可能会从一个体系结构更改到下一个体系结构。看起来NVIDIA选择了不同于开普勒到麦克斯韦的方式来包装这一翻译,开普勒实现了一种更“类似RISC”的方法。CUDA手册()中的
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;
与Maxwell的相比:

 SUST.D.BA.2D.TRAP [R2], R8, 0x55;
开普勒指令中的“EA”代表“有效地址”,它是CISC指令集中LEA(加载有效地址)指令的更复杂变体


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

CUDA阵列封装了NVIDIA专有的阵列布局,这些布局针对二维和三维位置进行了优化。从坐标到地址的转换是开发人员有意混淆的,因为它可能会从一个体系结构更改到下一个体系结构。看起来NVIDIA选择了不同于开普勒到麦克斯韦的方式来包装这一翻译,开普勒实现了一种更“类似RISC”的方法。CUDA手册()中的
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;
与Maxwell的相比:

 SUST.D.BA.2D.TRAP [R2], R8, 0x55;
开普勒指令中的“EA”代表“有效地址”,它是CISC指令集中LEA(加载有效地址)指令的更复杂变体


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

CUDA阵列封装了NVIDIA专有的阵列布局,这些布局针对二维和三维位置进行了优化。从坐标到地址的转换是开发人员有意混淆的,因为它可能会从一个体系结构更改到下一个体系结构。看起来NVIDIA选择了不同于开普勒到麦克斯韦的方式来包装这一翻译,开普勒实现了一种更“类似RISC”的方法。CUDA手册()中的
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;
与Maxwell的相比:

 SUST.D.BA.2D.TRAP [R2], R8, 0x55;
开普勒指令中的“EA”代表“有效地址”,它是CISC指令集中LEA(加载有效地址)指令的更复杂变体


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

附加:SURED到底做什么?这是由ROPs处理的吗?我在PTX指令集中看到了它,但它似乎没有被C语言扩展(直接和间接的表面API)公开。另外:SURED到底做了什么?这是由ROPs处理的吗?我在PTX指令集中看到了它,但它似乎没有被C语言扩展(直接和间接的表面API)公开。另外:SURED到底做了什么?这是由ROPs处理的吗?我在PTX指令集中看到了它,但它似乎没有被C语言扩展(直接和间接的表面API)公开。另外:SURED到底做了什么?这是由ROPs处理的吗?我在PTX指令集中看到了它,但它似乎没有被C语言扩展(直接和间接的表面API)公开“CUDA阵列封装了NVIDIA专有的阵列布局,这些布局针对2D和3D位置进行了优化。从坐标到地址的转换是开发人员故意混淆的,因为它可能会从一个体系结构转换到下一个体系结构。”……是的,当然。我希望得到一个技术答案。SUEAU计算“专有”布局吗?是的,是的