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

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

10.1.3. 使用非阻塞通道(Non-Blocking)通道

如果必须在您的英特尔 Stratix 10 OpenCL设计中实现通道,则请考虑使用非阻塞通道。某些情况下,这样可以减少面积开销。

如下实例代码有一个阻塞通道读取:

while (cond) {
   val = read_channel_intel (my_ch);
   <do_compute (val)>
}

将非阻塞通道读切换成等效功能阻塞通道读,请按以下方式修改代码:

bool have_data = true;
while (cond) {
   val = read_channel_nb_intel (my_ch, &have_data);
   if (have_data) <do_compute (val)>
} 

对于该实例,从阻塞通道读取更改为非阻塞通道读取的缺点是循环控制逻辑变得更复杂。如果您以这种方式转换多个通道访问,循环控制逻辑可能会限制您设计的性能或这实际上增加面积开销。