input_gmio
/output_gmio
is not only used with the AI Engine
simulator, but can also work in hardware emulation and hardware flows. To allow it to work in
hardware emulation and hardware flows, add the following code to graph.cpp.
#if !defined(__AIESIM__) && !defined(__X86SIM__)
#include "adf/adf_api/XRTConfig.h"
#include "experimental/xrt_kernel.h"
// Create XRT device handle for ADF API
char* xclbinFilename = argv[1];
auto dhdl = xrtDeviceOpen(0);//device index=0
xrtDeviceLoadXclbinFile(dhdl,xclbinFilename);
xuid_t uuid;
xrtDeviceGetXclbinUUID(dhdl, uuid);
adf::registerXRT(dhdl, uuid);
#endif
Using the guard macro __AIESIM__ and __X86SIM__, the same version of graph.cpp can work for the AI Engine simulator, x86simulator, hardware emulation, and hardware flows. Note
that the preceding code should be placed before calling the graph or the GMIO ADF APIs. At the
end of the program, close the device using the xrtDeviceClose()
API.
#if !defined(__AIESIM__) && !defined(__X86SIM__)
xrtDeviceClose(dhdl);
#endif
To compile the code for hardware flow, see Programming the PS Host Application in AI Engine Tools and Flows User Guide (UG1076).