一、指令延迟隐藏
1. 延迟和延迟隐藏
- 指令延迟指计算指令从调度到指令完成所需的时钟周期
- 如果在每个时钟周期都有就绪的线程束可以被执行,此时GPU处于满符合状态
- 指令延迟被GPU满负荷计算状态所掩盖的现象称为延迟隐藏
- 延迟隐藏对GPU编程开发很重要,GPU设计目标是处理大量但是轻量级的线程函数
- 如何计算满足延迟隐藏所需要的线程束数量:
2. 指令分类
- GPU指令分为:算术运算指令、内存访问指令
- 算术运算指令延迟指从开始运算到得到计算结果的时钟周期,通常为10~20个时钟周期
- 内存访问指令延迟指从命令发出到数据到达目的地的时钟周期,通常为400~800个时钟周期
二、算术运算指令并行性需求
1. 并行性需求概念
- 使GPU保持满负荷运行时所需的指令操作的数量
- 算术运算指令并行性需求由隐藏算术运算指令延迟所需的操作数(operations)衡量
- 线程束中线程执行相同的指令 (instruction),执行32个操作(opeartion)
- 需要640/32个线程束才能满足算术运算指令的并行性需求
- 提升并行性方法:线程中更多的独立指令,更多的并发线程
https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#maximize-instruction-throughput