Kernel Execution Modes - 2020.2 English

Vitis Unified Software Platform Documentation: Application Acceleration Development (UG1393)

Document ID
UG1393
Release Date
2021-03-22
Version
2020.2 English

There are three types of kernel execution modes, as described in the following table. These modes are mutually exclusive; each kernel can only operate in one of these modes. Kernels with different execution modes can be linked together by the Vitis linker to form the FPGA binary.

Tip: The table below provides a summary of the three execution modes. Refer to Supported Kernel Execution Models in the XRT documentation for additional details.
Table 1. Kernel Execution Modes
Sequential Mode Pipelined Mode Free-Running Mode
Control protocol: ap_ctrl_hs
  • A kernel is started by the host application using an API call.
  • Once the kernel is done, it notifies the host application.
  • The kernel can only restart once current task is completed.
  • Legacy mode for kernels using memory-based data transfers.
Control protocol: ap_ctrl_chain
  • A kernel is started by the host application using an API call.
  • Once the kernel is ready for new data, it notifies the host application.
  • The kernel can be restarted before its current task is completed.
  • Improves performance as multiple invocations of kernel can be overlapped.
  • Default mode for kernels using memory-based data transfers.
Control protocol: ap_ctrl_none
  • A kernel starts as soon as the device is programmed with the xclbin.
  • A kernel is running continuously and synchronizes on availability of data.
  • Free-running mode is not supported for kernels described in OpenCL C.