Xilinx LZ4 Compression and Decompression¶
LZ4 demo resides in L2/demos/lz4
directory.
Xilinx LZ4 compression/decompression is FPGA based implementation of standard LZ4. Xilinx implementation of LZ4 application is aimed at achieving high throughput for both compression and decompression. This Xilinx LZ4 application is developed and tested on Xilinx Alveo U200. To know more about standard LZ4 application please refer https://github.com/lz4/lz4
This application is accelerated using generic hardware architecture for LZ based data compression algorithms.
Results¶
Resource Utilization¶
Table below presents resource utilization of Xilinx LZ4 Compress/Decompress kernels. The final Fmax achieved is 262MHz
Flow | LUT | LUTMem | REG | BRAM | URAM |
---|---|---|---|---|---|
Compress | 47.6K | 10.7K | 50.7K | 56 | 48 |
DeCompress | 7.3K | 1.1K | 7K | 2 | 4 |
Performance Data¶
Table below presents kernel throughput achieved for a single compute unit.
Topic | Results |
---|---|
Compression Throughput | 1.7 GB/s |
Decompression Throughput | 443 MB/s |
Average Compression Ratio | 2.13x (Silesia Benchmark) |
Note: Overall throughput can still be increased with multiple compute units.
Software & Hardware¶
Software: Xilinx Vitis 2020.2
Hardware: xilinx_u200_xdma_201830_2 (Xilinx Alveo U200)
Executable Usage¶
To execute single file for compression :
./build/xil_lz4 -xbin ./build/xclbin_<xsa_name>_<TARGET mode>/<compress_decompress.xclbin> -c <file_name>
To execute single file for decompression :
./build/xil_lz4 -xbin ./build/xclbin_<xsa_name>_<TARGET mode>/<compress_decompress.xclbin> -d <file_name.lz4>
To validate single file (compress & decompress) :
./build/xil_lz4 -xbin ./build/xclbin_<xsa_name>_<TARGET mode>/<compress_decompress.xclbin> -t <file_name>
To execute multiple files for compression :
./build/xil_lz4 -xbin ./build/xclbin_<xsa_name>_<TARGET mode>/<compress_decompress.xclbin> -cfl <files.list>
To execute multiple files for decompression :
./build/xil_lz4 -xbin ./build/xclbin_<xsa_name>_<TARGET mode>/<compress_decompress xclbin> -dfl <compressed files.list>
To validate multiple files (compress and decompress) :
./build/xil_lz4 -xbin ./build/xclbin_<xsa_name>_<TARGET mode>/<compress_decompress xclbin> -l <files.list>
<files.list>
: Contains various file names with current path- Note: Default arguments are set in Makefile
The usage of the generated executable is as follows:
Usage: application.exe -[-h-c-d-t-cfl-dfl-l-xbin-B-id] --help, -h Print Help Options --compress, -c Compress --decompress, -d Decompress --test, -t Xilinx compress & Decompress --compress_list, -cfl Compress List of Input Files --decompress_list, -dfl Decompress List of compressed Input Files --test_list, -l Xilinx Compress & Decompress on Input Files --max_cr, -mcr Maximum CR Default: [10] --xclbin, -xbin XCLBIN --device_id, -id Device ID Default: [0] --block_size, -B Compress Block Size [0-64: 1-256: 2-1024: 3-4096] Default: [0]