DPU Node - 1.3 English

Vitis AI User Guide (UG1414)

Document ID
UG1414
Release Date
2021-02-03
Version
1.3 English

A DPU node is considered a basic element of a network model deployed on the DPU. Each DPU node is associated with input, output, and some parameters. Every DPU node has a unique name to allow APIs exported by Vitis AI to access its information.

There are three types of nodes: boundary input node, boundary output node, and internal node.

Boundary input node
A boundary input node is a node that does not have any precursor in the DPU kernel topology; it is usually the first node in a kernel. Sometimes there might be multiple boundary input nodes in a kernel.
Boundary output node
A boundary output node is a node that does not have any successor nodes in the DPU kernel topology.
Internal node
All other nodes that are not both boundary input nodes and boundary output nodes are considered as internal nodes.

After compilation, VAI_C gives information about the kernel and its boundary input/output nodes. The following figure shows an example after compiling Inception-v1. For DPU kernel 0, conv1_7x7_s2 is the boundary input node, and loss3_classifier is the boundary output node.

Figure 1. Sample VAI_C Compilation Log

When using dpuGetInputTensor*/dpuSetInputTensor*, the nodeName parameter is required to specify the boundary input node. When a nodeName that does not correspond to a valid boundary input node is used, Vitis AI returns an error message like:

[DNNDK] Node "xxx" is not a Boundary Input Node for Kernel inception_v1_0.
[DNNDK] Refer to DNNDK user guide for more info about "Boundary Input Node".

Similarly, when using dpuGetOutputTensor*/dpuSetOutputTensor*, an error similar to the following is generated when a “nodeName” that does not correspond to a valid boundary output node is used:

[DNNDK] Node "xxx" is not a Boundary Output Node for Kernel inception_v1_0.
[DNNDK] Please refer to DNNDK user guide for more info about "Boundary Output Node".