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 |
[†] |
|
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.