// get dpu subgraph by parsing model file auto runner = vart::Runner::create_runner(subgraph, "run"); // populate input/output tensors auto job_data = runner->execute_async(inputs, outputs); runner->wait(job_data.first, -1); // process outputs
For more C++ examples, refer to Vitis AI Examples.
Vitis AI also provides a Python ctypes Runner class that mirrors the C++ class, using the C DpuRunner implementation:
class Runner: def __init__(self, path) def get_input_tensors(self) def get_output_tensors(self) def get_tensor_format(self) def execute_async(self, inputs, outputs) # differences from the C++ API: # 1. inputs and outputs are numpy arrays with C memory layout # the numpy arrays should be reused as their internal buffer # pointers are passed to the runtime. These buffer pointers # may be memory-mapped to the FPGA DDR for performance. # 2. returns job_id, throws exception on error def wait(self, job_id)