3 GPU硬件架构

3.2 Kernel的硬件映射

  • Kernel函数
  • CPU端调用时用<<< >>>配置
    • 相应线程(块)维度、
    • 共享存储容量
    • CUDA流等信息

  • Kernel函数增加了以下概念
  • grid(线程格)、 block(线程块)、 thread(线程)。
  • 大量的 thread组成一个block,
  • 大量的 block组成一个grid(图5.1)
  • 执行 kernel函数时,
    • 一个 kernel函数对应一个grid(Fermi架构开始,一个GPU支持同时多个kernel函数执行),
    • grid内block数量和 block内 thread数量在 kernel函数启动时在<<<>>>内指定
3 GPU硬件架构

  • Tesla K20c GPU
  • threads尺寸维度(1024,1024,64),
  • 每个block最多1024thread
  • blocks(bx,by,bz)尺寸维度(2147483647,65535,65535)。
  • 线程设计原则:
    • block中的 thread数量合适(一般256、512、1024),使占用率最大化(占用率计算工具在CUDA安装目录的 tools文件夹下,CUDA_ Occupancy_ Calculator.xls)
    • block数量越大越好(GPU中block切换开销极小,几乎可忽略)

3.3GPU存储体系

  • GPU存储体系是影响GPU程序性能的最重要的因素之一。
  • GPU设计了鲜明的层次式存储,
    • 用好层次式存储是进行性能优化的关键。
    • GPU存储结构如图3.16

3 GPU硬件架构