v2021.2 Release
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.