v2021.1 Release Notes


Vitis BLAS Library

The 2021.1 release introduces L2 kernels for GEMM and GEMV. It also introduces L3 APIs based on the XRT (Xilinx Runtime library) Native APIs.

Vitis Codec Library

This initial release provides a range of algorithms including:

  • JPEG Decoder: “JPEG” stands for Joint Photographic Experts Group, the name of the committee that created the JPEG standard and also other still picture coding standards.
  • JPEG-XL: JPEG XL is a raster-graphics file format that supports both lossy and lossless compression. It is designed to outperform existing raster formats and thus to become their universal replacement.

Vitis Data Analytics Library

The 2021.1 release provide Two-Gram text analytics:

  • Two Gram Predicate (TGP) is a search of the inverted index with a term of 2 characters. For a dataset that established an inverted index, it can find the matching id in each record in the inverted index.

Vitis Data Compression Library

  • GZIP Multi Core Compression
    New GZIP Multi-Core Compress Streaming Accelerator which is purely stream only solution (free running kernel), it comes with many variant of different block size support of 4KB, 8KB, 16KB and 32KB.
  • Facebook ZSTD Compression Core
    New Facebook ZSTD Single Core Compression accelerator with block size 32KB. Multi-cores ZSTD compression is in progress (for higher throughput).
  • GZIP Low Latency Decompression
    A new version of GZIP decompress with improved latency for each block, lesser resources (35% lower LUT, 83% lower BRAM) and improved FMax.
  • ZLIB Whole Application Acceleration using U50
    L3 GZIP solution for U50 Platform, containing 6 Compression core to saturate full PCIe bandwidth. It is provided with Efficient GZIP SW Solution to accelerate CPU libz.so library which provide seamless Inflate and deflate API level integration to end customer software without recompiling.
  • Versal Platform Supports

Vitis Database Library

In 2021.1 release, GQE receives early-access support the following features

  • 64-bit join support: now the gqeJoin kernel and its companion gqePart kernel has been extended to 64-bit key and payload, so that larger scale of data can be supported.
  • Initial Bloom-filter support: the gqeJoin kernel now ships with a mode in which it executes Bloom-filter probing. This improves efficiency on certain multi-node flows where minimizing data size in early stage is important.

Both features are offered now as L3 pure software APIs, please check corresponding L3 test cases.

Vitis DSP Library

The AI Engine DSP Library contains common parameterizable DSP functions used in many advanced signal processing applications. All functions currently support window interfaces with streaming interface support planned for future releases.

Note

Namespace aliasing can be utilized to shorten instantiations: namespace dsplib = xf::dsp::aie;

  • FIR Filters

The DSPLib contains several variants of Finite Impulse Response (FIR) filters.

Function Namespace
Single rate, asymmetrical dsplib::fir::sr_asym::fir_sr_asym_graph
Single rate, symmetrical dsplib::fir::sr_sym::fir_sr_sym_graph
Interpolation asymmetrical dsplib::fir::interpolate_asym::fir_interpolate_asym_graph
Decimation, halfband dsplib::fir::decimate_hb::fir_decimate_hb_graph
Interpolation, halfband dsplib::fir::interpolate_hb::fir_interpolate_hb_graph
Decimation, asymmetric dsplib::fir::decimate_asym::fir_decimate_asym_graph
Interpolation, fractional, asymmetric dsplib::fir::interpolate_fract_asym:: fir_interpolate_fract_asym_graph
Decimation, symmetric dsplib::fir::decimate_sym::fir_decimate_sym_graph

All FIR filters can be configured for various types of data and coefficients. These types can be int16, int32, or float and also real or complex. Both FIR length and cascade length can also be configured for all FIR variants.

  • FFT/iFFT

The DSPLib contains one FFT/iFFT solution. This is a single channel, single kernel decimation in time, (DIT), implementation with configurable point size, complex data types, cascade length and FFT/iFFT function.

Function Namespace
Single Channel FFT/iFFT dsplib::fft::fft_ifft_dit_1ch_graph
  • Matrix Multiply (GeMM)

The DSPLib contains one Matrix Multiply/GEMM (GEneral Matrix Multiply) solution. This supports the Matrix Multiplication of 2 Matrices A and B with configurable input data types resulting in a derived output data type.

Function Namespace
Matrix Mult / GeMM dsplib::blas::matrix_mult::matrix_mult_graph
  • Widget Utilities

These widgets support converting between window and streams on the input to the DSPLib function and between streams to windows on the output of the DSPLib function where desired and additional widget for converting between real and complex data-types.

Function Namespace
Stream to Window / Window to Stream dsplib::widget::api_cast::widget_api_cast_graph
Real to Complex / Complex to Real dsplib:widget::real2complex::widget_real2complex_graph
  • AIE DSP in Model Composer

DSP Library functions are supported in Vitis Model Composer, enabling users to easily plug these functions into the Matlab/Simulink environment to ease AI Engine DSP Library evaluation and overall AI Engine ADF graph development.

Vitis Graph Library

The initial release provides a range of algorithms, including:

  • Centrality analysis: Page Rank.
  • Pathfinding: Single Source Shortest Path.
  • Connectivity analysis: Weekly Connected Components and Strongly Connected Components.
  • Community Detection: Label Propagation and Triangle Count.
  • Search: Breadth First Search.
  • Graph Format: Calculate Degree and Format Convert between CSR and CSC.

Vitis HPC Library

Vitis HPC Libraray 2021.1 release introduces HLS primitives, prebuild kernles and software APIs for HPC applications on FPGAs. These applications are:

  • 2D Acoustic RTM (Reverse Time Migration) based on FDTD (Finite Difference Time Domain) algorithm, including forward kernel and backward kernel
  • 3D Acoustic RTM based on FDTD algorithm, including forward kernel
  • MLP (Mult-Layer Perceptron) and its components including common activation functions and fully connected network kernels
  • PCG (Preconditioned Conjugate Gradient) solvers for both dense and sparse matrix

Vitis Quantitative Finance Library

This initial release provides engines and primitives for the acceleration of quantitative financial applications on FPGA. It comprises two approaches to pricing:

  • A family of Trinomial-Tree based pricing engines for 4 interest rate derivatives (including swaption, swap, cap/floor and callable bond), using 6 short-term interest rate models (including Hull-White, Two-additive-factor gaussian, Vasicek, Cox-Ingersoll-Ross, Extended Cox-Ingersoll-Ross and BlackKarasinski). All of these pricing engines are based on a provided generic Trinomial-Tree Framework.
  • 2 Finite-difference method based pricing engines for swaption, using Hull-White model and Two-additive-factor gaussian model. 1 Monte-Carlo based pricing engine for cap/floor, using Hull-White model, based on the Monte-Carlo simulation API we provided in release 0.5.
  • 3 close form pricing engine for inflation cap/floor, CPI cap/floor, and discounting bond.

Vitis Security Library

The 2021.1 release provide support for:

  • RIPEMD160
  • Initial support for BLS (not complete)

Vitis Sparse Library

The 2021.1 release introduces double precision SpMV (Sparse Matrix dense Vector multiplication) implementation with L2 kernels.

Vitis Utilities Library

In the 2021.1 release, Data-Mover was added to this library. Unlike other C++ based APIs, this addition is targeting users less experienced in HLS-based kernel design and primarily want to test their stream-based designs. The Data-Mover is a kernel source code generator, creating a list of common helper kernels to drive or valdiate designs, like those on AIE devices.

Vitis Vision Library

New features and functions

The below functions and pipelines are newly added to the library:

  • ISP pipeline and functions
    • Updated 2020.2 Non-HDR Pipeline:
      • Support to change few of the ISP parameters at runtime: Gain parameters for red and blue channels, AWB enable/disable option, gamma tables for R,G,B, %pixels ignored to compute min&max for awb normalization.
      • Gamma Correction and Color Space conversion (RGB2YUYV) made part of the pipeline.
    • New 2021.1 HDR Pipeline : 2020.2 Pipeline + HDR support:
      • HDR merge: merges the 2 exposures which supports sensors with digital overlap between short exposure frame and long exposure frame.
      • Four Bayer patterns supported: RGGB,BGGR,GRBG,GBRG
      • HDR merge + isp pipeline with runtime configurations, which returns RGB output.
      • Extraction function: HDR extraction function is preprocessing function, which takes single digital overlapped stream as input and returns the 2 output exposure frames(SEF,LEF).
  • 3DLUT: Provides input-output mapping to control complex color operators, such as hue, saturation, and luminance.
  • CLAHE: Contrast Limited Adaptive Histogram Equalization is a method which limits the contrast while performing adaptive histogram equalization so that it does not over amplify the contrast in the near constant regions. This it also reduces the problem of noise amplification.
  • Flip: Flips the image along horizontal and vertical line.
  • Custom CCA: Custom version of Connected Component Analysis Algorithm for defect detection in fruits. Apart from computing defected portion of fruits , it computes defected-pixels as well as total-fruit-pixels
  • Other updates:
    • Canny updates: Canny function now supports any image resolution.
    • Gamma correction: Gamma function changed.
    • AWB optimization: AWB modules optimized.

Library related changes

  • All tests have been upgraded from using OpenCV 3.4.2 to OpenCV 4.4.0

  • Added support for vck190 and aws-vu9p-f1 platforms.

  • A new benchmarking section with benchmarking collateral for selected pipeline/functions published.

Known issues

  • Vitis GUI projects on RHEL83 and CEntOS82 may fail because of a lib conflict in the LD_LIBRARY_PATH setting.

  • Windows OS has path length limitations, kernel names must be smaller than 25 characters.