Stream Chain Matrix Multiplication =================================== This is a kernel containing the cascaded Matrix Multiplication using dataflow. ap_ctrl_chain is enabled for this kernel to showcase how multiple enqueue of Kernel calls can be overlapped to give higher performance. ap_ctrl_chain allow kernel to start processing of next kernel operation before completing the current kernel operation. **KEY CONCEPTS:** ap_ctrl_chain, PLRAM This example focuses on using the ap_ctrl_chain that implements a set of block-level control ports to start the design operation, continue operation, and indicate when the design is idle, done, and ready for new input data. The ap_ctrl_chain interface mode is similar to ap_ctrl_hs but provides an additional input signal ap_continue to apply back pressure. Xilinx recommends using the ap_ctrl_chain block-level I/O protocol when chaining Vivado HLS blocks together. In this example, we are having a series of Vivado HLS blocks chained together to perform this operation. For declaring this protocol, the kernel interface should contain this special pragma: .. code:: cpp #pragma HLS INTERFACE s_axilite port = return bundle = control #pragma HLS INTERFACE ap_ctrl_chain port = return bundle = control SUPPORTED SHELLS ---------------- ================ ================= ================ SHELL Board Software Version ================ ================= ================ xilinx_u200_qdma Xilinx Alveo U200 Vitis 2019.2 xilinx_u200_xdma Xilinx Alveo U200 Vitis 2019.2 xilinx_u250_qdma Xilinx Alveo U250 Vitis 2019.2 xilinx_u250_xdma Xilinx Alveo U250 Vitis 2019.2 xilinx_u280_xdma Xilinx Alveo U280 Vitis 2019.2 ================ ================= ================ DESIGN FILES ------------ Application code is located in the src directory. Accelerator binary files will be compiled to the xclbin directory. The xclbin directory is required by the Makefile and its contents will be filled during compilation. A listing of all the files in this example is shown below :: src/host.cpp src/krnl_stream_mmult.cpp COMMAND LINE ARGUMENTS ---------------------- Once the environment has been configured, the application can be executed by :: ./vadd_mmult <krnl_stream_mmult XCLBIN>