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

ID 683176
Date 9/24/2018
Public
Document Table of Contents

3.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.