In the Vitis™ environment, the host application can be written in native C++ using the Xilinx® runtime (XRT) native C++ API or industry standard OpenCL™ API. The XRT native API is described here in brief, with additional details available under XRT Native API on the XRT documentation site. Refer to OpenCL Programming for a discussion on writing the host application using the OpenCL API.
In general, the structure of the host application can be divided into the following steps:
- Specifying the accelerator device ID and loading the .xclbin.
- Setting up the kernel and kernel arguments.
- Transferring data between the host and kernels.
- Running the kernel and returning results.
xrt_coreutil library. For example:
g++ -g -std=c++14 -I$XILINX_XRT/include -L$XILINX_XRT/lib -lxrt_coreutil -pthread
Compiling host code with XRT native C++ API requires C++ standard with
-std=c++14. On GCC version older than 4.9.0, use
-std=c++1y instead because
-std=c++14 is introduced to GCC from 4.9.0.
system call from a Vitis core development kit
fork() does not duplicate all the
runtime threads. Hence, the child process cannot run as a complete application in the
Vitis core development kit. It is advisable to
posix_spawn() system call to launch another
process from the Vitis software platform