1

有与 CUDA C++ 非常相似的AMD HIP C ++。AMD 还创建了Hipify以将 CUDA C++ 转换为 HIP C++(便携式 C++ 代码),可以在 nVidia GPU 和 AMD GPU 上执行:https ://github.com/GPUOpen-ProfessionalCompute-Tools/HIP

对英伟达的要求

请确保您拥有3.0 或更高版本的计算能力设备,以便使用 warp shfl 操作并在使用此应用程序时在 Makefile 中添加 -gencode arch=compute=30, code=sm_30 nvcc 标志。

此外,HIP 定义了查询架构特性的可移植机制,并支持更大的64 位 wavesize,这将跨通道函数(如投票和随机播放)的返回类型从 32 位整数扩展到 64 位整数。

但是哪些 AMD GPU 确实支持功能shfl,或者任何 AMD GPU 都支持shfl,因为在 AMD GPU 上它是通过使用本地内存实现的,而没有硬件指令寄存器到寄存器?

nVidia GPU 需要 3.0 或更高的计算能力 (CUDA CC),但是shfl使用 HIP C++ 在 AMD GPU 上使用操作有什么要求?

4

1 回答 1

3
  1. 是的,GPU GCN3中有新的指令,例如ds_bpermute并且ds_permute可以提供诸如__shfl()甚至更多的功能

  2. 这些ds_bpermuteds_permute指令仅使用本地内存(LDS 8.6 TB/s)的路由,但实际上并不使用本地内存,这允许加速线程之间的数据交换:8.6​​ TB/s < speed < 51.6 TB/s : http:// /gpuopen.com/amd-gcn-assembly-cross-lane-operations/

它们使用 LDS 硬件在波前的 64 个通道之间路由数据,但它们实际上并不写入 LDS 位置。

  1. 还有数据并行原语(DPP) - 当您可以使用它时特别强大,因为操作可以直接读取相邻工作项的寄存器。即 DPP 可以全速访问相邻线程(工作项)~51.6 TB/s

http://gpuopen.com/amd-gcn-assembly-cross-lane-operations/

现在,大多数向量指令都可以在全吞吐量下进行跨通道读取。

例如,扫描算法wave_shr的 -指令(波前右移):

在此处输入图像描述

有关 GCN3 的更多信息:https ://github.com/olvaffe/gpu-docs/raw/master/amd-open-gpu-docs/AMD_GCN3_Instruction_Set_Architecture.pdf

新指令

  • “SDWA”——子 Dword 寻址允许访问 VALU 指令中 VGPR 的字节和字。
  • “DPP”——数据并行处理允许 VALU 指令访问来自相邻通道的数据。
  • DS_PERMUTE_RTN_B32、DS_BPERMPUTE_RTN_B32。

...

DS_PERMUTE_B32 前向置换。不写入任何 LDS 内存

于 2017-03-02T17:58:49.550 回答