2022.1 Release Notes

Vitis Codec Library

Codec Library is an open-sourced library written in C/C++ for accelerating image coding, decoding and related processing algorithms. It now covers a level of acceleration: the module level(L1) and the pre-defined kernel level(L2). Currently 6 kinds of algorithms are accelerated.

The 2022.1 release provides a range of algorithms, includes:

  • JPEG decoding: one L2 API is provided for accelerating entire JPEG decoding process, which supports the ‘Sequential DCT-based mode’ of ISO/IEC 10918-1 standard. It can process 1 Huffman token and create up to 8 DCT coefficients within one cycle. It is also an easy-to-use decoder as it can directly parse the JPEG file header without help of software functions. In addition, L1 API is provided for Huffman decoding.
  • Pik encoding: 3 L2 APIs are provided for accelerating about 90% workload of lossy compression in Google’s pik. The pikEnc used the ‘fast mode’ of pik encoder which can provide better encoding efficiency than most of other still image encoding methods.
  • WebP encoding: 2 L2 APIs are provided for accelerating about 90% workload of lossy compression in WebP which is a popular image format developed by Google and supported in Chrome, Opera and Android, that is optimized to enable faster and smaller images on the Web.
  • Lepton encoding: the API ‘jpegDecLeptonEnc’ can be used for accelerating the encoding process for a new image format ‘Lepton’ developed by Dropbox. The format can save about 22% size of JPEG images losslessly.
  • JPEG-XL encoding: 3 L2 APIs are provided for accelerating the lossy encoding process of the JPEG XL Image Coding System (ISO/IEC 18181). Currently, not all computing intensive modules are offloaded, and more accelerating APIs will be available in feature.
  • Bicubic resizing: the L2 APIs ‘resizeTop’ is based on bicubic algorithm, which can take 1 or 8 input samples per cycle. When taking 8 samples, it can process 80 8K images per second. Although resizing is not a coding or encoding algorithm, it is widely used with image codecs in image transcoding applications.

Vitis Database Library

  • Merge partition / bloomfilter / join into single kernel make three operators shares resource on FPGA. Although such kernel could only performance one of the three operators at the same time, it will take much less resource than 3 stand alone kernels. With such design, it will help eliminate the time cost to switch xclbins for different operators. Also such design will enable pipelined execution of kernels and reduce DMA workload. This design targets for U50. U50 costs less and still retains HBM.
  • Key-Value store offloading introduce a new kernel for accelerate K-V compaction operation in log-structure merge tree database.

Vitis Data Analytics Library

  • csv scanner: Used to accelerate the extract, transform and load process. It integrates GZIP decompression, CSV parser, filter module together to make them work in parallel. ETL accelerator could work together with database to run queries on large size of semi-structured and unstructured data.
  • Geospatial APIs: Two major APIs in this family have been included: the Spatial Join and KNN. The former API inserts the columns from one feature table to another based on location or proximity, while the latter is often used to find the K nearest neighbors around the center point. They are both vital for spatial analysis and spatial data mining.

There are some known issues for this release.

  • Log Analyer in L2 demo fails hardware build with 2022.1 Vitis. Please use 2021.2 Vitis for it,

Vitis Data Compression Library

  • ZLIB Compression Improvement:
    • Reduced TreeGen Initial Interval < 1K to reduce overall resource utilization for 8KB octa core compression.>
    • Customized Octa-Core compression for 8KB solution ( Reduced Booster Window 8KB).
    • Static IP customized.
    • Improved Compression IP Timing for Versal and achieved > 250MHz.
    • Provided Memory Mapped GZIP File Decompression.
  • ZLIB Decompression Improvement:
    • Added ADL32 and provided uncompressed size in TUSER.
    • Provided Quad-Core Decompress solution for 32KB and 8KB file size to achieve 4x throughput (upto 2GB/s).

Vitis DSP Library

  • DDS / Mixer: The DDS/ Mixer library element now has extended type support. It now supports cfloat and cint32 for TT_DATA when configured as a mixer. When configured as a DDS, cfloat is now supported for TT_DATA. Additionally, the DDS/Mixer now supports Super Sample Rate operation for higher throughput.
  • FFT/iFFT: FFT point size support has been extended to 65536. Performance has been improved approximately 10% for cases using PARALLEL_POWER>1 which were previously supported.
  • FIR Filters: All FIR library elements now support streaming interfaces as well as window interfaces. The single rate asymmetric FIR variant now support Super Sample Rate operation for higher throughput. The FIR resampler library element has been added which performs fractional decimation. This supersedes the existing FIR interpolate fractional library unit. All FIR variants now support a larger maximum value for FIR_LEN, up to 8k depending on variant, data/coefficient type and API choice.

Vitis Genomics Library

Three new Genomics accelerators have been added:

  • Smithwaterman Algorithm Created Smithwaterman Algorithm to provide high throughput than existing benchmark solution.
  • PairHMM Algorithm Created PairHMM Algorithm to achieve architectural maximum performance.
  • SMEM Algorithm Created SMEM Algorithm to achieve the required DRAM bandwidth overcoming the latency.

Vitis Graph Library

  • Added the new algorithm Maximal Independent Set.
  • Enhanced Louvain Modularity. L2 Louvain Modularity is able to support large-scale graphs.
  • Added a L3 API to divide huge graphs into multiple parts and add other data structures to support the Louvain Modularity on these parts.

Vitis Solver Library

In this relese, the following legacy API from Vivado_HLS were migrated to solver library. They are all hls::stream based API that support std::complex type.

  • Cholesky
  • Cholesky Inverse
  • QR Inverse
  • QRF (QR decomposition)
  • SVD

Vitis Vision Library

New features and functions

The below functions and pipelines are newly added into the library.

PL additions/enhancements:

  • New functions:
    Rotate
    TV-L1 optical flow
    Multi-stream ISP (basic) support
  • Updates
    Added Demosaicing kernel (xf_demosaicing_rt.hpp) having the input Bayer pattern as run time parameter.
    Fixed issue with RGBIR L1 testbench
    Added support for custom depth specification for xf::cv::Mat in all kernels
  • Lib Infra Changes
    Added API JSON for L2 which helps in usage of a given function’s API in the Vitis GUI
  • AIE additions/enhancements:

    • Updates:
      Introduced RTL Data-movers with improved latency over HLS data-movers
      All tests updated with RTL data-movers

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.
  • SVM L2 PL function fails hardware emulation with 2022.1 Vitis. Use 2021.1 Vitis for this function.
  • rgbir2bayer, isppipeline_rgbir PL functions are not supplied with input images
  • Software emulation for Warptransform L2 testcases doesn’t work because of a known issue with platform.
  • Warptransform L1 URAM cases fail CSim because of a known HLS issue.
  • Hardware emulation in AIE testcases may throw segmentation fault at the end, although completing the functional test successfully.