Benchmark Results

Datasets

Benchmark evaluation of compression performance is of reference Silesia Corpus.

Compression Performance

The following table presents compression ratio (CR), compression kernel throughput achieved with single and 8 engines, kernel clock frequency met and resource utilization when executed on Alveo U200.

Reported compression ratio is measured on Silesia Corpus compression benchmark.

Architecture Compression Ratio Throughput FMax LUT BRAM URAM
LZ4 Streaming (Single Engine and Datawidth: 8bit) 2.13 290 MB/s 300MHz 3.2K 5 6
Snappy Streaming (Single Engine and Datawidth: 8bit) 2.13 290 MB/s 300MHz 3.1K 4 6
LZ4 Memory Mapped (8 Engines with Data Movers) 2.13 2.2 GB/s 295MHz 47K 56 48
Snappy Memory Mapped (8 Engines with Data Movers) 2.13 2.2 GB/s 300MHz 47K 48 48
GZip/Zlib Memory Mapped (Dynamic Huffman, 8 Engines with Data Movers) 2.67 2 GB/s 285MHz 53.8K 75 72
GZip/Zlib Compress Stream (Dynamic Huffman, 8 Engines with Data Movers) 2.67 2 GB/s 285MHz 49.7K 67 72
GZip/Zlib Fixed Huffman File Compress Stream 2.25 2 GB/s 285MHz 34.6K 48 64
[*]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 (Single Engine and Datawidth: 64bit) 1.8 GB/s 300MHz 7.2K 0 4
Snappy Streaming (Single Engine and Datawidth: 64bit) 1.97 GB/s 300MHz 8.8K 0 4
GZip/Zlib Streaming (High Throughput, Datawidth: 64bit) 450 MB/s 252MHz 11.3K 6 3
ZStd Streaming (Single Engine and Datawidth: 32bit) 463 MB/s 232MHz 18K 52 4
ZStd Full File Streaming (Single Engine with Datawidth: 32bit) 463 MB/s 232MHz 22K 52 4
[†]
  1. 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.
  2. GZip/Zlib Streaming: Full standard support (Dynamic Huffman, Fixed Huffman and Stored Blocks supported).
  3. 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/2020.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.