Releases: Xilinx/Vitis_Libraries
2024.1 Update 2
Update
- DSP Library update:
- Update the benchmark CSV files to rename the values of AIE_VARIANT from 1 and 2 to AIE and AIE-ML respectively.
2024.1 Update1
Update
- Vision library updates:
- Added AIE-ML GMIO examples
- Fixed ISP Pipeline L1 10 bit issue
2024.1 Release
2024.1 Vitis Libraries Release Notes
Vitis Blas Library
The example design of L3/benchmarks/gemm/memKernel are deprecated and removed.
The helper function of "xfblasGetByAddress" has been removed, due to deprecate of xrt api of "xclUnmgdPread"
Vitis Data Analytics Library
- The following cases are deprecated and removed.
- L2/tests/knn_sc
- L3/tests/gunzip_csv_sc_test
- L3/tests/re_sc_test
Vitis Data Mover Library
- Known Issue
- A Jinja2 template is used to generate the source code of the data mover. When running on RHEL 9.x, it will fail. This will get fixed in the next release.
- L2/demo/4d_mover_with_handshake, L2/demo/bi_4d_mover_with_handshake, L2/tests/bi_dm_s2mm_mm2s_s2s encountered deadlock issue. This will get fixed in the next release.
Vitis DSP Library
The following features have been added to the library in this release.
- TDM FIR - New library element.
Function | Namespace and class name |
---|---|
TDM FIR | xf::dsp::aie::fir::tdm::fir_tdm_graph |
This element adds an implementation of the Time-Division Multiplexing (TDM) variant of finite impulse response (FIR) filter.
Supports AIE and AIE-ML devices.
- Convolution / Correlation - New library element.
Function | Namespace and class name |
---|---|
Convolution / Correlation | xf::dsp::aie::conv_corr::conv_corr_graph |
This element adds an implementation of the Convolution and Correlation, depending on the specified FUNCT_TYPE template parameter.
Supports AIE and AIE-ML devices.
- Hadamard Product - New library element.
Function | Namespace and class name |
---|---|
Hadamard Product | xf::dsp::aie::hadamard::hadamard_graph |
This element adds an implementation of the Hadamard Product.
Supports AIE and AIE-ML devices.
- Outer Tensor Product - New library element.
Function | Namespace and class name |
---|---|
Outer Tensor Product | xf::dsp::aie::outer_tensor::outer_tensor_graph |
This element adds an implementation of the Outer Tensor Product.
Supports AIE devices.
- Kronecker Matrix Product - New library element.
Function | Namespace and class name |
---|---|
Kronecker Matrix Product | xf::dsp::aie::kronecker::kronecker_graph |
This element adds an implementation of the Kronecker Matrix Product.
Supports AIE devices.
- Example design of FFT on AIE and PL
This element illustrates the implementation of the Fast Fourier transform that spans across the AIE and Programmable Logic.
Supports AIE and AIE-ML devices.
- Matrix-Vector Multiplication
Added support for AIE-ML devices.
Added Super Sample Rate (SSR) feature. Allows the matrix-vector multiplication to be computed using parallel paths for increased throughput.
- Matrix Multiplication
Added Super Sample Rate (SSR) feature. Allows the matrix multiplication to be computed using parallel paths for increased throughput.
- DFT
Added Super Sample Rate (SSR) feature. Allows the Discrete Fourier Transform (DFT) to be computed using parallel paths for increased throughput.
- FFT IFFT
This element now supports cint32 type twiddles for integer data types. This element also now supports a new parameter TP_TWIDDLE_MODE.
- Mixed-Radix FFT
This element now supports AIE-ML devices.
Vitis Graph Library
There are some known issues for this release.
- Louvain Modularity cases meet routing failure when build with 2024.1 tool. Last known working version is 2023.2.
Vitis Solver Library
In this release, one API running on AIE Engine is added
- QRF (QR decomposition), for complex float matrix input (using Householdere transformation method)
Vitis Ultrasound Library
- Known Issue
L3/tests/scanline_AllinAIE interrupted issue with sw_emu target. This will get fixed in the next release.
Vitis Vision Library
New Features and Functions
PL additions/enhancements
- Updates:
- Updated ISP Pipeline example in L1 to support runtime reconfiguration
- Added ISP Mono example in L1
- Updated runtime configurable support to color-correction-matrix function
- Updated bayer-pattern as runtime parameter for demosaicing, gaincontrol functions
- Added green-gain as runtime parameter for gaincontrol function
- Lib Infra Changes:
- Minor fixes to API JSON file
AIE additions/enhancements
- New Functions:
- Added 22 new AIE-ML functions targeting Versal devices:
- AccumulateWeighted
- Blacklevel
- Demosaic
- Denorm_resize
- Denormalize
- Filter2D
- Gain Control
- Hybrid ISP
- Mask Generation
- Mask Generation Tracking
- Normalize
- NMS
- PixelWise Select
- Resize
- Resize Nomalize
- RGBA2GRAY
- RGBA2YUV
- Transpose
- TopK
- Threshold
- YUV2RGBA
- YUY2-Filter2d
- Added 22 new AIE-ML functions targeting Versal devices:
- Updates:
- Minor bug fixes
- Removed AIE1 functions
Known issues
- AMD Vitis™ GUI projects on RHEL83 and CEntOS82 may fail because of a lib conflict in the LD_LIBRARY_PATH setting. You need to remove ${env_var:LD_LIBRARY_PATH} from the project environment settings for the function to build successfully.
- rgbir2bayer, isppipeline_rgbir PL functions are not supplied with input images.
- lkdensepyroptflow fails to meet timing when URAM is enabled.
2023.2 Update 1
Update:
- DSP & Solver Library Doc update
2023.2 Release
2023.2 Vitis Libraries Release Notes
Vitis Data Analytics Library
In this release, there are no major updates.
Known Issues
The following cases fail hardware run with 2023.1 Vitis and XRT. Instead, use 2022.2 Vitis and XRT.
- L2/tests/knn_sc
- L3/tests/gunzip_csv_sc_test
Vitis DSP Library
The below features have been added to the library in this release.
- DFT - new library element
Function | Namespace and class name |
---|---|
DFT | xf::dsp::aie::fft::dtf::dft_graph |
This element adds an implementation of the Discrete Fourier Transform (DFT).
Supports both AIE and AIE-ML devices.
- Mixed-Radix FFT - new library element
Function | Namespace and class name |
---|---|
Mixed Radix FFT | xf::dsp::aie::fft::mixed_radix_fft::mixed_radix_fft_graph |
This element adds an implementation of a s a single-channel, decimation-in-time, fixed point size Fast Fourier Transform (FFT) that includes radix3, radix4 and/or radix5 stages.
Supports AIE devices.
- GeMV - new library element
Function | Namespace and class name |
---|---|
GeMV | xf::dsp::aie::blas::matrix_vector_mul::matrix_mult_graph |
This element adds an implementation of the General Matrix Vector Multiplier(GeMV).
Supports AIE devices.
- Vectorized Sample Delay - new library element
Function | Namespace and class name |
---|---|
Sample Delay | xf::dsp::aie::sample_delay::sample_delay_graph |
This element adds an implementation of a delay filter for introducing delay into a time series.
Supports both AIE and AIE-ML devices.
- FIR Filters
The support for AIE-ML devices has been rolled out to all FIR variants.
- FFT IFFT
Added a performance optimization that will extract some SSR FFT features onto widget kernels and map these kernels in separate tiles, achieving better performance at a high AIE usage cost.
- All Library elements
All libraries now offer selectable saturation mode, as well as rounding modes.
Test harnesses for all library elements have been expanded to allow parameter configuration through .json
files.
Vitis Motor Control Library
The sensor-based FOC IP has been updated by adding a new control mode called MOD_MANUAL_TORQUE_FLUX_FIXED_ANGLE
.
Vitis Quantitative Finance Library
The L3 of this library are deprecated and removed.
If you are still using the L3 of this library, go to the forum for help.
Vitis Solver Library
Added two APIs running on AI Engine:
- Singular value decomposition, for complex float matrix input
- Pseudoinverse, for complex float matrix input
Vitis Ultrasound Library
L1
Contains not only the fine-grained arithmetic kernels, but also the coarse-grained algorithm kernels of scanline. The algorithm kernels have interfaces for both data units and run-time parameters, making it easier to extend functionalities.
L2
Provides two kinds of sub-graphs for sub-algorithm modules and a scanline L2 top-graph. One kind of sub-graph is directly based on L1 arithmetic kernel combination, the other kind is the wrappers of L1 algorithm kernel. The top-graph of scanline can support the end-to-end validation in the L2 level by invoking a C-model of scanline algorithm.
L3
Besides the examples for connected units for 3 beamformer of PW/SA/Scanline, L3 provides an end-to-end scanline project based on L2 scanline top-graph which can be verified on VCK190.
From this release, an algorithm-end to AIE-end implementation of scanline are provided in L2 and L3 with a set of scanline C-model functions. These C-model functions show a step-by-step process for how to start from a natural description of a complex algorithm, to obtaining an AIE-mappable implementation. You can also directly invoke the C-models in any level of AIE projects to generate input and verify output simultaneously and conveniently.
Vitis Utility Library
Data-mover APIs were migrated to the Data Mover library.
Vitis Vision Library
New Features and Functions
PL additions/enhancements
-
Updates:
- Added reference functions for
extractExposureFrames
,autoexposurecorrection_sin
,LTM
, andbgr2yuyv
- Added reference function for all-in-one L3 ISP pipeline
- Fixed border rows issue in Bad Pixel Correction function
- Fixed divide-by-zero condition in GTM
- Improved accuracy of AWB and AEC functions
- Optimized resource utilization of 3DLUT function
- Other minor bug fixes
- Added reference functions for
-
Lib Infra Changes:
- Added L1
api.json
to autofill the function APIs in Vitis HLS GUI - Updated APIs in L2
api.json
- Updated Makefiles of L1 examples and testcases to a new template
- Added L1
AIE additions/enhancements
-
Updates:
- Host code of all AIE1 cases modified to use new graph coding methodology
Known Issues
- Vitis GUI projects on RHEL83 and CEntOS82 may fail because of a lib conflict in the
LD_LIBRARY_PATH
setting. You must remove${env_var:LD_LIBRARY_PATH}
from the project environment settings for the function to build successfully. rgbir2bayer
,isppipeline_rgbir
PL functions are not supplied with input imageslkdensepyroptflow
fails to meet timing when URAM is enabled- AWB, ISPStats output will not match with reference only on VCK190, because of a known XRT issue
2023.1 Update 1
Motor Library update:
- Additional mode of fixed-angle added for FOC and enhanced timing for more FPGA platforms
2023.1 Release
2023.1 Release Notes
Vitis Data Mover Library
In this release, we migrate all data mover design from utils library. Also we add 4D datamover with internal URAM buffer support and tile based descriptor.
Known issues
- We use Jinja2 template to generate source code of data mover. When running on RHEL 9.x, it will fail. We’ll get this fixed in next release.
Vitis Data Analytics Library
Known issues
- Following kernels in L2/tests fail hardware run with 2023.1 Vitis and XRT. Please use 2022.2 Vitis and XRT for it.
- clustering/kmeans
- classification/xGradientBoost
- classification/decisiontree
- regression/linearRegressionSGDTrain
- regression/ridgeRegressionSGDTrain
Vitis DSP Library
The below features have been added to the library in this release.
- DDS Mixer LUT - new library element
- DDS Mixer
- FFT Window
- FFT/iFFT
- FIR Filters
Function | Namespace and class name |
DDS Mixer LUT | xf::dsp::aie::mixer::dds_mixer::dds_mixer_lut_graph |
This element adds a second implementation of a DDS/Mixer that provides higher SFDR figures than the existing DDS/Mixer solution.
Supports both AIE and AIE-ML devices (EA).
To be consistent with other library elements, the usage of Input Window Size parameter (TP_INPUT_WINDOW_VSIZE) has been changed in the DDS and DDS Mixer LUT elements. TP_INPUT_WINDOW_VSIZE describes the number of samples processed by the graph in a single iteration run.
In addition to AIE devices, FFT Window now supports AIE-ML devices (EA).
In addition to AIE devices, FFT/iFFT now supports AIE-ML devices (EA)..
Single Rate FIRs now support AIE-ML devices (EA) with 16-bit data types and 16-bit coeff types, which are listed below:
Data Type | |||
Int16 | Cint16 | ||
Coefficient type | Int16 | Supported | Supported |
Cint16 | note 1 | Supported | |
1. Complex coefficients are not supported for real-only data types. |
All FIR library elements now support AIE devices with 16-bit data types and 32-bit coefficients, which are listed below:
Data Type | |||
Int16 | Cint16 | ||
Coefficient type | Int32 | Supported | Supported |
Cint32 | note 1 | Supported | |
1. Complex coefficients are not supported for real-only data types. |
FIR Resampler now supports Super Sample Rate operation for higher throughput, through polyphase decomposition.
Vitis Quantitative Finacne Library
Known issues
There are some known issues for this release. Please use 2022.2 Vitis for them.
- L2/tests/M76Engine - hw build failure on u250 platform
- L2/tests/PortfolioOptimisation - hw build failure
- L2/tests/MCEuropeanHestonGreeksEngine - hw build failure on u50 and u200 platform
- L2/tests/MCAmericanEngineMultiKernel - hw build failure on u50 platform
- L2/tests/Quadrature - hw build failure on u200 platform
- L2/tests/MCAmericanEngine - hw build failure on u50 platform
The L3 of this library will be soon deprecated and removed. It has the following known issue.
- All L3 APIs will fail when running on Ubuntu Operating System
If you are still using the L3 of this library please reach us through forum for help.
Vitis Motor Control Library
The 2023.1 release covers a range of key algorithms, including the following:
- FOC: TAPI for sensor based field-orientated control (FOC). The eight control modes it supports cover basic speed and torque control modes, as well as field-weakening control.
- SVPWM_DUTY: This API is the front-end for Space Vector Pulse Width Modulation (SVPWM) to calculate ratios.
- PWM_GEN: This API is the back-end for Space Vector Pulse Width Modulation (SVPWM) to generate output signals based on ratios.
- QEI: API for quadrature encoder interface (QEI).
Vitis Solver Library
In this release, we add two API running on AI Engine.
- QRF (QR decomposition), for float / complex float matrix input
- Cholesky decomposition, for complex float matrix input
Vitis Ultrasound Library
- L1, imgrate window port to buffer port for aligning latest aie compiler feature
- L2, refine graph for dimension definition, now it could be inferred from template configuration
- L3, refine L3 graph for including L2 graphs as sub-graph and set the L3 beamformer as top graph
Vitis Utility Library
IThe data-mover APIs are promoted as a new top-level library. They will be removed from this library in future release.
Vitis Vision Library
New features and functions
PL additions/enhancements:
- New functions:
- Added 24 bits-per-channel L3 ISP pipeline
- dded all-in-one L3 ISP pipeline
- classification/decisiontree
- Pin-cushion, Barrel distortion support added in L1, L2 Remap testbench
- Updates:
- Added new functions in ISP-Multistream pipeline
- Added NPPC 2,4,8 support for RGBIR function
- Added URAM support for AWB, AEC, 3DLUT, Otsu-Threshold, HDRMerge, Histogram, Equalization
- Improved performance and utilization for ISP Stats
- Fixed the missing template parameters issue in
axiStrm2xfMat
andxfMat2axiStrm
functions
- Lib Infra Changes:
- Renamed all existing testcases and added new cases in tests directory of L1, L2
- Replaced
xf__config.h
withxf__accel_config.h
,xf__tb_config.h
files which are included inaccel.cpp
andtb.cpp
, respectively - All configurable parameters moved to
xf_config_params.h
- In the function directories, under the
examples
directory, renamedbuild
folder toconfig
- Standardized several variable names across
2022.2 Update 2
Update
- Vision library updates:
- Modified XFCVDEPTH values in all functions
- Stride support added in the preprocess kernel of L3 Defect Detection pipeline
- Order of kernels changed in all-in-one pipeline and renamed as all-in-one-adas
- Array partitions in accel file moved to kernel file in isp multistream pipeline
2022.2 Update 1
Vitis Ultrasound Library Updates:
Vitis Ultrasound library, which targets on the platform Versal AI Core Series VCK190 evaluation board, provides implementation of different L1/L2/L3 APIs as a toolbox for ultrasound image processing. Current version provides:
- L1, the lowest level of abstraction and is composed of simple BLAS operation.
- L2, the functional units of the Beamformer, which can be obtained by composing L1 libraries.
- L3, complete Beamformer which uses all of the three points above and contain run tests for beamforming design of PW/SA/Scanline
2022.2 Release
Vitis Data Analytics Library
Added the following API:
- String LIKE: API returns true if the string matches the supplied pattern, similar to string find in C++. The NOT LIKE expression returns false if LIKE returns true.
- String EQUAL: API returns true if the string completely matches with the base string, similar to string compare in C++. The NOT EQUAL expression returns false if EQUAL returns true.
- JSONLine Loader: API is enhanced to support more general data type, including nested field and list.
Vitis DSP Library
The following features have been added to the DSP library:
- FFT Window: New library element. FFT Window is a utility to apply a windowing (scaling) function such as Hamming to a frame of data samples.
- FFT/iFFT: FFT Dynamic Point Size (run-time point size determination) is now supported with parallelized configurations.
- FIR Filters: All FIR library elements (with the exception of FIR Resampler) now support Super Sample Rate operation for higher throughput. To minimize latency, Super Sample Rate operation is implemented using streaming interfaces. In addition, usage of Input Window Size (TP_INPUT_WINDOW_VSIZE) parameter has been consolidated across library. TP_INPUT_WINDOW_VSIZE describes the number of samples processed by the graph in a single iteration run. Reloadable coefficients within the Super Sample Rate configurations are now supported on all FIR variants that support SSR operation.
Vitis Solver Library
Added support for two API on AI Engine:
- QRF (QR decomposition)
- Cholesky decomposition
Vitis Utility Library
Added support for 4D datamover on AI Engine. 4D Datamover takes a queue of 9x64bits descriptors as input to describe a 4D access pattern. It reads the 4D cuboid with the desired pattern and finishes descriptors one by one.
- read4D
- write4D
Vitis Vision Library
PL Additions and Updates:
- New functions:
- HDR Decompanding: Compress(compand) data in a piece-wise linear (PWL) mapping to a lower bit depth
- Degamma: Designed to linearize the input from sensor or any pre-processing IP
- ISPStats: collects histogram based stats of bayer and color images
- ISP all-in-one pipeline: All the ISP related functions stitched in one pipeline with option to exclude unwanted functions during runtime and compile time.
- Multi-stream ISP: Multiple input stream ISP pipeline
- Updates:
- Added new template parameter XFCVDEPTH for xf::cv::Mat class that can be used to assign custom depth to the Mat’s internal hls::stream.
- All APIs in the library updated with newly added XFCVDEPTH parameter for xf::cv::Mat
- Remove deprecated SDSVHLS macro from all files
- Replaced deprecated RESOURCE pragma with BIND_STORAGE/BIND_OP pragmas
- Rename NO, RO in all files to SPC (Single Pixel per Clock) and MPC (Multiple Pixels per Clock)
- Add missing reference functions in L1, L2, L3 testbench files
- Fixed Gaussian Difference incorrect implementation
- Fixed incorrect dst Mat assignment in xf::cv::Mat member function convertBitdepth
- Updated analyzeDiff in L1/include/common/xf_sw_utils.hpp to a static function
- Added missing “Test Passed/Failed/Finished” check in all L1/L2/L3 functions.
- Added 16 bit and 4 channel support, corrected B and R channel swap issue for channel extract function.
- Fixed a bug in BGR2HLS module of cvtcolor function
- Restructured L1 channel combine accel and testbench code
- Fixed SVM emulation and cosim hang issue
- Updated loop tripcounts of pyrDown, histogram, HDR extract, rgb2yuyv module in cvtColor to fix synthesis latency numbers
- Fixed array reshape pragma in xf_sobel.hpp, xf_video_mem.hpp files
- Lib Infra Changes:
- Added frequency setting in L2/L3 JSON files. 300 MHz for NPPC1 and 150MHz for NPPC8 for most cases.
- Updated JSON and Makefiles to use ps_on_x86 feature for software emulation targeting embedded platforms. Software emulation for embedded platforms no longer uses qemu—only the regular g++ compilation flow.
- Added missing environment checks in all JSON and Makefiles.
AI Engine Additions and Updates:
- New functions:
- Resize / Resize + Normalize
- Smart tiling for x86 64-bit platforms
- Updates:
- RTL Data movers
- 8-bit PL / 8-bit AIE data movers
- Multi-channel support
- Optimized implementation
- Optimized smart tiling / stitching for higher performance
- Fix Random crashes in hardware emulation flow
- Miscellaneous bug fixes
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.
- 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.