In the Vitis™ environment, the software application can be written in native C++ using the Xilinx® runtime (XRT) native API. The XRT native API is described here in brief, with additional details available under XRT Native API on the XRT documentation site. The software application is generally referred to as the host application for Data Center acceleration, and simply as the application for embedded processor-based systems.
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 PL kernel and kernel arguments.
- Transferring data between the software application and PL kernels.
- Running the kernel and returning results.
For Versal® ACAP devices, the PS application manages the whole heterogeneous system, including the PL hardware and the AI Engine graph application. Refer to Programming the PS Host Application in the Versal ACAP AI Engine Programming Environment User Guide (UG1076) for more information.
xrt_coreutillibrary. For example:
g++ -g -std=c++17 -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++17. On GCC version older than 4.9.0, use
-std=c++1y instead because
-std=c++17 is introduced to GCC from 4.9.0.
fork()system call. 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.