AMD Vitis™ AI provides a C++ DpuRunner class with the following interfaces:
-
std::pair<uint32_t, int> execute_async( const std::vector<TensorBuffer*>& input, const std::vector<TensorBuffer*>& output);
Submit input tensors for execution and output tensors to store results. The host pointer is passed using the TensorBuffer object. This function returns a job ID and the status of the function call.
-
int wait(int jobid, int timeout);
The job ID returned by
execute_async
is passed towait()
to block until the job is complete and the results are ready. -
TensorFormat get_tensor_format()
Query the DpuRunner for the Tensor format it expects.
Returns DpuRunner::TensorFormat::NCHW or DpuRunner::TensorFormat::NHWC
-
std::vector<Tensor*> get_input_tensors() std::vector<Tensor*> get_output_tensors()
Query the DpuRunner for the shape and name of the input and output tensors it expects for its loaded Vitis AI model.
- To create a DpuRunner object, call the following:
function
create_runner(const xir::Subgraph* subgraph, const std::string& mode = "")
It returns the following:
std::unique_ptr<Runner>
The input to create_runner is an XIR subgraph generated by the Vitis AI compiler.
https://github.com/Xilinx/Vitis-AI-Tutorials/tree/3.0/Tutorials/pytorch-subgraphs/.