Intel® FPGA SDK for OpenCL™ Pro Edition: Best Practices Guide

ID 683521
Date 12/13/2021
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

4.1.4. Best Practices for Channels and Pipes

Consider the following best practices when designing channels and pipes:
  • Use single-threaded kernels over multi-threaded kernels.
  • Consider how the design model can be represented with a feed forward datapath, for example, back-to-back loops or discrete processing steps. Determine whether you should split the design into multiple kernels connected by channels.
  • Aggregate data on channels only when the entire data is used at the same point of kernel.
  • Attempt to keep the number of channels per kernel reasonable.
  • Do not use non-blocking channels or pipes if you are using a looping structure waiting for the data. Non-blocking channels consume more resources than the blocking channels.