DPU Node - 1.1 English

Vitis AI User Guide (UG1414)

Document ID
UG1414
Release Date
2020-03-23
Version
1.1 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.

  • 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.
  • A boundary output node is a node that does not have any successor nodes in the DPU kernel topology.
  • 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, andloss3_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".