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

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

10.1.1. 减少内核数量

与其将设计划分成多个内核,不如考虑将设计合并到更少的内核中。 对于英特尔 Stratix 10设计, Intel® 建议您仅使用单独的内核进行真正的异步执行。

以下实例显示了producer内核和consumer内核通过通道通信:

kernel producer(unsigned N) {
   int result;
   for (unsigned int i = 0; i < N; i++) {
      write_channel_intel(Produce(i));
   }
} 
 
kernel consumer(unsigned N) {
   for (unsigned int i = 0; i < N; i++) {
      Consume(i, read_channel_intel());
   }
}

以下的优化代码将上述实例中的两个内核合并成为单个内核,从而可以直接使用计算结果无需通道访问:

kernel fused(unsigned N) {
   for (unsigned int i = 0; i < N; i++) {
      Consume(i, Produce(i));
   }
}