FPGA AI Suite: PCIe-based Design Example User Guide

ID 768977
Date 3/29/2024
Document Table of Contents

5.7. Running the Ported OpenVINO™ Demonstration Applications

Some of the sample demonstration applications from the OpenVINO™ toolkit for Linux Version 2022.3.1 have been ported to work with the FPGA AI Suite. These applications are built at the same time as the runtime when using the -build_demo flag to build_runtime.sh.

The FPGA AI Suite runtime includes customized versions of the following demo applications for use with the FPGA AI Suite IP and plugins:

  • classification_sample_async
  • object_detection_demo_yolov3_async
  • segmentation_demo

Each demonstration application uses a different graph. The OpenVINO™ HETERO plugin can fall-back to the CPU for portions of the graph that are not supported with FPGA-based acceleration. However, in a production environment, it may be more efficient to use alternate graphs that execute exclusively on the FPGA.

You can use the example .arch files supplied with the FPGA AI Suite can be used with the demonstration applications. However, certain example .arch files do not enable some of the layer-types used by the graphs associated with the demonstration applications. Using these .arch files cause portions of the graph to needlessly execute on the CPU. To minimize the number of layers that are executed on the CPU by the demonstration application, use the following architecture description files located in the example_architectures/ directory of the FPGA AI Suite installation package to run the demos:
  • Agilex™ 7: AGX7_Generic.arch
  • Arria® 10: A10_Generic.arch

As specified in Programming the FPGA Device ( Arria 10), you must program the FPGA device with the bitstream for the architecture being used. Each demonstration application includes a README.md file specifying how to use it.

When the OpenVINO™ sample applications are modified to support the FPGA AI Suite, the FPGA AI Suite plugin used by OpenVINO™ needs to know how to find the .arch file describing the IP parameterization by using the following configuration key. The following C++ code is used in the demo for this purpose:

ie.SetConfig({ { DLIA_CONFIG_KEY(ARCH_PATH), FLAGS_arch_file } }, "FPGA");

The OpenVINO™ demonstration application hello_query_device does not work with the FPGA AI Suite due to low-level hardware identification assumptions.