Intel® FPGA SDK for OpenCL™ Pro Edition: 最佳实践实践指南

ID 683521
日期 9/26/2022
Public
文档目录

5.7.1. 停顿、占用率、带宽

对于内核代码的特定行, Intel® VTune Profiler GUI的Source View选项卡会显式停顿的百分比、占用量百分比、数据传输大小和平均存储器带宽。

对于停顿、占用量和带宽的定义,请参阅性能数据的类型

Intel® FPGA SDK for OpenCL™ 生成流水线架构,其中work-item按顺序遍历(traverse)整个流水线阶段(即,以流水线并行方式)。一旦流水线阶段成空,work-item进入并占据该阶段。流水线并行性也适用于流水线化循环的迭代,其中迭代按顺序进入流水线循环。

图 72. 通过性能计数器注入的内核流水线的简化表示

以下是描述Profiler计算的停顿、占用量和带宽的简化方程式:

注: 带宽方程式中的ivalid_count还包含predicate=true输入到load-store unit。

理想的内核流水线条件:

  • 停顿百分率等于0%
  • 占用量百分率等于100%
  • 带宽等于板级带宽

对于内核流水线中的给定位置,如果停顿百分比和占用量百分比的总和大约等于100%,则Profiler将该位置标识为停顿源。如果停顿百分比较低,那么Profilerhi将该位置标识为停顿的受害者(victim)。

Profiler报告高占用量百分比,如果离线编译器从您的内核中生成高效流水线,其中work-item或迭代在流水线阶段中移动而不会停顿。

如果所有的LSU被访问的次数相同,则它们具有相同的占用量值。

  • 如果work-item不能连续进入流水线,那么它们将冒泡(bubble)插入流水线。
  • 在循环流水线中,由于迭代之间存在冒泡,则携带依赖项的循环也会在流水线中形成冒泡(bubble)。
  • 如果某个LSU的访问频率低于其它LSU,例如这样一种情况,当一个LSU位于包含其它LSU的循环之外时,此LSU的占用量值就低于其它LSU。

关于占用值的规则同样适用于通道。