Benchmark¶
Datasets¶
Benchmark evaluation of compression performance is of reference Silesia Corpus.
Compression Performance¶
The following table presents compression ratio (CR), compression kernel throughput, kernel clock frequency met and resource utilization when executed on Alveo U200 and is measured on Silesia Corpus compression benchmark.
Architecture | Block Size | Compression Ratio | Throughput | FMax | LUT | BRAM | URAM |
---|---|---|---|---|---|---|---|
Zstd Compress Quad Core | 32KB | 2.68 | 1.17 GB/s | 284MHz | 40K | 79 | 37 |
GZip/Zlib 32KBMemory Mapped | 32KB | 2.70 | 2 GB/s | 300MHz | 57K | 135 | 64 |
GZip 32KB Compress Stream | 32KB | 2.70 | 2 GB/s | 300MHz | 54K | 141 | 64 |
Zlib 32KB Compress Stream | 32KB | 2.70 | 2 GB/s | 300MHz | 54K | 128 | 64 |
GZip Fixed 32KB Compress Stream | 32KB | 2.31 | 2 GB/s | 300MHz | 35K | 45 | 64 |
Zlib Fixed 32KB Compress Stream | 32KB | 2.31 | 2 GB/s | 300MHz | 35.7K | 39 | 64 |
GZip 16KB Compress Stream | 16KB | 2.62 | 2 GB/s | 282MHz | 58K | 164 | 48 |
Zlib 16KB Compress Stream | 16KB | 2.62 | 2 GB/s | 300MHz | 58K | 160 | 48 |
GZip 8KB Compress Stream | 8KB | 2.50 | 2 GB/s | 300MHz | 57.5K | 100 | 48 |
Zlib 8KB Compress Stream | 8KB | 2.50 | 2 GB/s | 300MHz | 57.4K | 96 | 48 |
LZ4 Streaming | 64KB | 2.13 | 290 MB/s | 300MHz | 3K | 5 | 6 |
Snappy Streaming | 64KB | 2.13 | 290 MB/s | 300MHz | 3K | 4 | 6 |
- The amount of resources used indicate that we still have room on Alveo U200 to go for more compute units which can further improve the throughput.
De-Compression Performance¶
The following table presents decompression kernel throughput achieved with single and 8 engines, kernel clock frequency met and resource utilization when executed on Alveo U200.
Architecture | Throughput | FMax | LUT | BRAM | URAM |
---|---|---|---|---|---|
LZ4 Streaming | 1.8 GB/s | 300MHz | 5.5K | 0 | 4 |
Snappy Streaming | 1.97 GB/s | 300MHz | 6.5K | 0 | 4 |
GZip/Zlib Streaming | 518 MB/s | 283MHz | 6.7K | 8 | 0 |
ZStd Streaming | 658.86 MB/s | 234MHz | 22K | 32 | 3 |
ZStd Full File Streaming | 658.86 MB/s | 234MHz | 22K | 32 | 3 |
- GZip/Zlib Streaming: Full standard support (Dynamic Huffman, Fixed Huffman and Stored Blocks supported).
- ZStd Streaming: Full Standard support with limited Window Size upto 128KB.
Test Overview¶
Here are benchmarks of the Vitis Data Compression Library using the Vitis environment.
Vitis Data Compression Library¶
- Download code
These data_compression benchmarks can be downloaded from vitis libraries master
branch.
git clone https://github.com/Xilinx/Vitis_Libraries.git cd Vitis_Libraries git checkout master cd data_compression
- Setup environment
Specifying the corresponding Vitis, XRT, and path to the platform repository by running following commands.
source <Vitis_Intstalled_Path>/installs/lin64/Vitis/2021.2/settings64.sh source <Vitis_Installed_Path>/xbb/xrt/packages/setup.sh export PLATFORM_REPO_PATHS=/opt/xilinx/platforms export LD_LIBRARY_PATH=$XILINX_VITIS/lib/lnx64.o/Default/:$LD_LIBRARY_PATH
- Build Instructions
Execute the following commands to compile and test run the applications.
$ make run TARGET=hw hw: run on actual hardware
By default, the target device is set as Alveo U200. In order to target a different
device, use the DEVICE
argument. For example:
make run TARGET=hw DEVICE=<new_device.xpfm>
Note
Build instructions explained in this section are common for all the applications to run on actual hardware. The generated executable names may differ.