指令延迟隐藏

一、指令延迟隐藏

1. 延迟和延迟隐藏

  • 指令延迟指计算指令从调度到指令完成所需的时钟周期
  • 如果在每个时钟周期都有就绪的线程束可以被执行,此时GPU处于满符合状态
  • 指令延迟被GPU满负荷计算状态所掩盖的现象称为延迟隐藏
  • 延迟隐藏对GPU编程开发很重要,GPU设计目标是处理大量但是轻量级的线程函数
  • 如何计算满足延迟隐藏所需要的线程束数量:

指令延迟隐藏_第1张图片

 2. 指令分类

  • GPU指令分为:算术运算指令、内存访问指令
  • 算术运算指令延迟指从开始运算到得到计算结果的时钟周期,通常为10~20个时钟周期
  • 内存访问指令延迟指从命令发出到数据到达目的地的时钟周期,通常为400~800个时钟周期

二、算术运算指令并行性需求

1. 并行性需求概念

  • 使GPU保持满负荷运行时所需的指令操作的数量
  • 算术运算指令并行性需求由隐藏算术运算指令延迟所需的操作数(operations)衡量

指令延迟隐藏_第2张图片

  • 线程束中线程执行相同的指令 (instruction),执行32个操作(opeartion)
  • 需要640/32个线程束才能满足算术运算指令的并行性需求
  • 提升并行性方法:线程中更多的独立指令,更多的并发线程

https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#maximize-instruction-throughput

你可能感兴趣的:(fpga开发)