The VectorBlox Accelerator Software Development Kit (SDK) offers the most power-efficient Convolutional Neural Network (CNN)-based Artificial Intelligence/Machine Learning (AI/ML) inference with PolarFire FPGAs. VectorBlox software enables:
The VectorBlox Accelerator SDK contains different tools that compile a neural network description from frameworks like TensorFlow and ONNX into a Binary Large Object (BLOB). These BLOBs are stored in Flash and loaded into the DDR memory during execution.
The CoreVectorBlox IP consists of a Matrix processor (MXP) and an MXP CNN IP. It can be instantiated as a single-core accelerator or in multi-cores when neural network workloads need to be shared. The MXP consists of eight 32-bit Arithmetic/Logic Units (ALUs) and is responsible for elementwise tensor operations like add, sub, xor, shift, mul, dotprod, etc. The MXP CNN IP consists of a 2D array of multiply and accumulate functions implemented using math blocks. As the name suggests, the MXP CNN IP is responsible for executing the convolutional layers of CNNs. Multiple networks can be overlaid during the runtime and switched dynamically. You can also use time-slicing to run simultaneous networks on a single CoreVectorBlox instantiation.
Step 1: Prepare Your Trained Model
Use Python scripts provided in the SDK to convert your trained model into an optimized INT8 representation called a BLOB. Run the BLOB through the VectorBlox Accelerator Simulator to verify accuracy of the network and to ensure successful conversion of the network.
Step 2: Prepare Your Hardware
The PolarFire FPGA Video and Imaging Kit is configured to run as an AI-enabled smart camera. The SDK includes a pre-compiled kit image bitstream. Write the bistream into the PolarFire FPGA using the FlashPro programmer included with the kit. Write the BLOB, generated from Step 1, into the SPI Flash of the kit.
Step 3: Write Your Embedded Code
Use the provided embedded code in C/C++ based SoftConsole IDE and generate and program the hex file. Connect the video kit to an HDMI® monitor and turn it on. Modify the embedded code to load and run many CNN BLOBs, switch CNNs dynamically on the fly or load CNNs sequentially for simultaneous inferencing.
The VectorBlox SDK is supported in the PolarFire FPGA Video and Imaging Kit (MPF300-VIDEO-KIT-NS).