Loading

AMD GPU 硬件架构

 AMD 5870 显卡 (cypress) 架构

  •  20 simd 引擎,每个 simd 引擎包含 16 simd
  •  每个 simd 包含 16 stream core 
  •  每个 stream core 都是 5 路的乘法 -加法运算单元( VLIW processing
  •  每个 stream core 是一个 5 路的 VLIW 处理器,在一个 VLIW 指令中,可以最多发射 5 个标量操作。标量操作在每个 pe 上执行
  •  CU8xx 系列 cu 对应硬件的 simd)内的 stream core 执行相同的 VLIW 指令 
  •  在 CU(或者说 simd)内同时执行的 work item 放在一起称作一个 wave,它是 cu 中同时执行的线程数目。在 5870wave 大小是 64,也就是说一个 cu 内,最多有 64 work item 在同时执行 
  •  单精度运算可以达到 Teraflops 
  •  双精度运算可以达到 544Gb/s 

 我们现在看下 AMD GPU 硬件在 OpenCL 中的对应关系: 

  •  一个 workitme 对应一个 pepe 就是单个的 VLIW core ,也就是每个simd core 中的某个具体的VLIW 线程
  •  一个 cu 对应多个 pecu 就是 simd 引擎 
  •  一个 simd 引擎的示意图,每个 simd 引擎由一系列的 stream core 组成 

  •  对每个 cu 来说,它使用的内存包括 onchip LDS 以及相关寄存器。在 5870 中,每个 LDS 32K,共 32 bank,每个 bank 1k,读写单位 4 byte
  •  对每个 cu 来说,有 8K 的 L1 cache。( for 5870) 
  •  各个 cu 之间共享的 L2 cache,在 5870 中是 512K 
  • fast Path 只能执行 32 位或 32 位倍数的内存操作
  •  complete path 能够执行原子操作以及小于 32 位的内存操作 

 AMD GPU 的内存架构和 OpenCL 内存模型之间的对应关系: 

  •  LDS 对应 local memeory,主要用来在一个 work group 内的 work times 之间共享数据。 steam core 访问 LDS 的速度要比 Global memory 快一个数量级 
  •  private memory 对应每个 pe 的寄存器 
  •  constant memory 主要是利用了 L1 cache 
  •  注意:对 AMD CPU, constant memory 的访问包括三种方式: Direct-Addressing Patterns ,这种模式要求不包括行
    列式,它的值都是在 kernel 函数初始化的时候就决定了,比如传入一个固定的参数。 Same Index Patterns ,所有的 work
    item 都访问相同的索引地址。 Globally scoped constant arrays ,行列式会被初始化,如果小于 16K,会使用 L1 cache,
    从而加快访问速度。当所有的 work item 访问不同的索引地址时候,不能被 cache,这时要在 global memory 中读取。 

 

posted @ 2022-11-02 22:12  aalanwyr  阅读(603)  评论(0编辑  收藏  举报