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_coreutillibrary. 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.
fork()system call from a Vitis core development kit application. The
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 use the
posix_spawn()system call to launch another process from the Vitis software platform application.