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

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

5.8.2. 较低的占用量百分比

较低的占用量百分比意味着work-item未频繁访问加载和存储操作或者该通道。 对于非关键循环中的加载和存储操作或者通道,这个是预期行为。但是,如果存储器或者通道指令位于内核代码的关键部分,并且其占用量或者活动度百分比较低,这就表明存在性能瓶颈,因为硬件中没有发布work-item或者循环迭代。

请参考如下代码实例:

__kernel void proc (__global int * a, ...) {
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < 1000; j++) {
      write_channel_intel (c0, data0);
    }
    for (int k = 0; k < 3; k++) {
      write_channel_intel (c1, data1);
    }
  }
}    

假设所有循环都已流水线化,第一个行程计数为1000的内部循环是关键循环。而第二个循环的行程计数为3,该循环很少执行。因此,您可以预见通道c0的占用量和活动度百分比较高,而通道c1的占用量和活动度百分比较低。

此外,如果您定义的工作组规模较小,内核可能无法接收到足够的work-item,因而占用量百分比也可能会很低。这样就会出现问题,因为在内核执行期间流水线基本上是空的,从而导致性能不佳。