v2021.2 Release Notes

Vitis Data Analytics Library

The 2021.2 release provides CSV Parser:

  • CSV Parser parses comma-seperated value files and generates object stream, which are easily connected with DataFrame APIs. CSV is a common used storage format in Date Lake. CSV parser can accelerate the data extraction process.

Vitis Data Compression Library

  • ZSTD Quad-Core Compression
    Created ZSTD Multi-Core architecture to provide high throughput for single file compression. Using Zstd Quad core solution, user can get throughput > 1 GB/s.
  • Zstd Decompress Improvement
    ZSTD Decompress optimized in this release. Overall resource is reduced to 19.6K and achieve 20% higher throughput compare to previous release.
  • GZIP Decompress Improvement
    Re-architected GZIP Decompress cores to reduce resource to 6.9K and better throughput compare to previous release. With this new latency overall IP latency is also reduced to ~1.5K cycle. Provided ZLIB decompression containing ADLR32 Checksum to catch any error in input file. Added functionality to provide uncompressed size in output stream port TUSER (incase end application needs to know uncompressed size).
  • GZIP Compression Improvement
    • Created various ZLIB/GZIP Octa-Core Compression Kernels for different block sizes (8KB, 16KB, 32KB) and achieved > 2GB/s throughput for all variants. Updated IP core to provided compressed size in output axis stream TUSER port (incase any application needs compressed size).
    • Huffman TreeGen latency is reduced significantly < 1K, as a result, for multi-core architectures (Octa-core), a single Treegen is required. This reduce the resource requirement signficantly down for 8KB and 16KB blocksize compression core compare to previous release solution.
    • Compression ratio is improved from 2.67 to 2.7 for Silesia Fileset for 32KB bloksize.
  • Snappy/LZ4 Decompress Improvement
    Optimized Snappy and LZ4 Decompress throughput.

Vitis Database Library

In 2021.2 release, GQE starts to support asynchronous input / output feature, along with multi-card support.

  • Asynchronous input / output: use std::future<size_t> to notify GQE L3 readiness of each input sections, and its value is the effective row number of the input section. It will use std::promise<size_t> to notify the caller of GQE L3 the readiness of each section of the final result, and its value is the effective row number of output section. Asynchronous support will allow the FPGA start to process as soon as part of the input data is ready. In such way, FPGA won’t wait until all input data is ready and shrink the overhead to prepare data for FPGA.
  • Multi-Cards support: allows to identify multiple Alveo cards that suitable for working. It will load the same xclbins for these cards and called them when there’s more task than 1 cards could handle at the same time. The data structure will also keep pinned host buffer and device buffer alive before they’re explicitly released. This will help save the time to load xclbins / create pinned buffer / create device buffer.

Vitis DSP Library

The below features have been added to the library in this release.

  • DDS / Mixer - new library element
Function Namespace and class name
DDS / Mixer xf::dsp::aie::mixer::dds_mixer

This component may be configured to one of three modes. The first mode is a DDS only. The second mode is a single channel mixer. The third mode is a symmetrical mixer, taking two input channels and mixing each with the DDS output and the conjugate of DDS output respectively, combining the result to one output channel. DDS/Mixer supports window input/output interface, as well as streaming interface.

  • FIR Filters

Single rate FIRs now support streaming interfaces as well as to window interfaces.

  • FFT/iFFT

FFT now supports streaming interfaces as well as to window interfaces. In addition, FFT now offers improved performance and greater point size support with parallelization.

Vitis Graph Library

The algorithms implemented by Vitis Graph Library include:

  • Similarity analysis: Cosine Similarity, Jaccard Similarity, k-nearest neighbor. From 2021.2, the ‘weight’ feature is supported for Cosin Similarity.
  • Centrality analysis: PageRank.
  • Pathfinding: Single Source Shortest Path (SSSP), Multi-Sources Shortest Path (MSSP).
  • Connectivity analysis: Weekly Connected Components and Strongly Connected Components.
  • Community Detection: Louvain Modularity, Label Propagation and Triangle Count.
  • Search: Breadth First Search, 2-Hop Search
  • Graph Format: Renumber(2021.2), Calculate Degree and Format Convert between CSR and CSC.

Vitis Security Library

The 2021.2 release provides support for:

  • KECCAK-256
  • CRC32C

Vitis Utilities Library

Adds two Data-Mover implementations for debugging hw issues:

  • LoadDdrToStreamWithCounter: For loading data from PL’s DDR to AIE through AXI stream and recording the data count sending to AIE.
  • StoreStreamToMasterWithCounter: For receiving data from AIE through AXI stream and saving them to PL’s DDR, as well as recording the data count sending to DDR.

Vitis Vision Library

New features and functions

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

Versal AI Engine additions :

  • blobFromImage
    Function used in many ML pre-processing tasks to do normalization and other tasks.
  • Back to back filter2D with batch size three support
    Application showcasing increasing throughput of single filter2D kernel, by doing 3, back-2-back filter2D achieving 555 FPS with PL datamovers.

New Programmable Logic (PL) functions and features:

  • ISP pipeline and functions:
    • End to End Mono Image Processing (ISP) pipeline with CLAHE TMO
      Useful for ISP pipelines with monochrome sensors
    • RGB-IR along-with RGB-IR Image Processing (ISP) pipeline
      Useful for ISP pipelines with IR sensors
    • Global Tone Mapping (GTM) along with an ISP pipeline using GTM
      Adding to growing TMO (tone-mapping-operators) in the library for different quality and area tradeoff purposes: CLAHE, Local Tone Mapping, Quantization and Dithering

Known issues

Vitis GUI projects on RHEL83 and CEntOS82 may fail because of a lib conflict in the LD_LIBRARY_PATH setting. User needs to remove ${env_var:LD_LIBRARY_PATH} from the project environment settings for the function to build successfully.