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 283MHz 40K 80 37
GZip/Zlib 32KBMemory Mapped 32KB 2.70 2 GB/s 300MHz 60K 135 64
GZip 32KB Compress Stream 32KB 2.70 2 GB/s 293MHz 54K 131 64
Zlib 32KB Compress Stream 32KB 2.70 2 GB/s 300MHz 54K 127 64
GZip Fixed 32KB Compress Stream 32KB 2.31 2 GB/s 300MHz 34.5K 43 64
Zlib Fixed 32KB Compress Stream 32KB 2.31 2 GB/s 300MHz 34.7K 39 64
GZip 16KB Compress Stream 16KB 2.62 2 GB/s 298MHz 58K 165 48
Zlib 16KB Compress Stream 16KB 2.62 2 GB/s 294MHz 58K 160 48
GZip 8KB Compress Stream 8KB 2.50 2 GB/s 300MHz 57.2K 101 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 294MHz 5.4K 0 4
Snappy Streaming 1.97 GB/s 274MHz 6.4K 0 4
GZip/Zlib Streaming 518 MB/s 273MHz 6.9K 8 0
ZStd Streaming 658.86 MB/s 271MHz 19.6K 32 3
ZStd Full File Streaming 658.86 MB/s 271MHz 19.6K 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.1/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.