Stream Kernel to Kernel ======================= This is a simple kernel to kernel streaming Vector Add and Vector Multiply C Kernel that demonstrates on how to process a stream of data for computation between two kernels. **KEY CONCEPTS:** Read/Write Stream, Create/Release Stream **KEYWORDS:** cl_stream, CL_STREAM_EOT, CL_STREAM_NONBLOCKING This example demonstrates how two kernels ``kernel_stream_vadd`` and ``kernel_stream_vmult`` can communicate through a stream interface. Rather than loading the results from producer kernel ``kernel_stream_vadd`` to global memory and then to consumer kernel ``kernel_stream_vmult`` we can use stream to transfer this data directly. It reduces the latency of the application and also reduces the memory utilization. For kernel to kernel streaming transfer, kernel to kernel data transfer ports do not need ``clSetKernelArg`` from host code. Producer kernel ``krnl_stream_vadd`` streaming output port needs to be connected to consumer kernel ``krnl_stream_vmult`` stream input port during ``v++`` using ``krnl_stream_vadd_vmult.ini`` file as below: :: [connectivity] stream_connect=krnl_stream_vadd_1.output:krnl_stream_vmult_1.b This stream connection specify that ``output`` streaming port of ``krnl_stream_vadd_1`` will be connected to ``b`` streaming port of ``krnl_stream_vmult`` during system linker run. This connectivity file is provided to v++ command as below: :: --config krnl_stream_vadd_vmult.ini EXCLUDED PLATFORMS ------------------ Platforms containing following strings in their names are not supported for this example : :: zc xdma xilinx_u250_qep aws samsung 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_vadd.cpp src/krnl_stream_vmult.cpp COMMAND LINE ARGUMENTS ---------------------- Once the environment has been configured, the application can be executed by :: ./vadd_stream <krnl_stream_vadd_vmult XCLBIN>