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.
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.