GZIP is an Open Source data compression library which provides high compression ratio.

It applies two levels of compression:

  • Byte Level (Limpel Ziev LZ Based Compression Scheme) 
  • Bit Level (Huffman Entropy)

Traditionally the CPU based solutions are limited to MB/s speed but there is a high demand for accelerated GZIP which provides throughput in terms of GB/s. This application provides GZIP and ZLIB compression and decompression using Alveo U50 platform.

Vendor: AMD

Platform: On-Premise

Size: 1.14 GB

Container Version: gzip-u50-2020.1-v1.0

This product is free to deploy from AMD

Performance

Below throughput numbers are tested using the silesia file set. (http://sun.aei.polsl.pl/~sdeor/index.php?page=silesia  )
The below overall speed is calculated using the multiple file list on multiple core.

 

Speed/File
Single Core

Total Cores

Overall Speed
(Multiple Files)

Compress

688.5 MB/s

8

5.3 GB/s

Decompress

678.4 MB/s

7

4.7 GB/s

Deployment Options

This application is containerized and can be easily run in a few minutes in the cloud, or on-premises.

On Premises

Alveo U50
View & Buy Product

  • Xilinx Runtime: 2020.1
  • Target Platform: xilinx_u50_gen13x16_xdma_201920_3

Getting Started

Follow the instructions based on your deployment method.

1. Host Setup

The Xilinx Runtime (XRT) host application is supported on Ubuntu 16.04 /18.04 and CentOS 7.x.  with sudo access, use the following command to download and run the setup script:

1.1 Clone GitHub Repository for Xilinx Base Runtime

git clone https://github.com/Xilinx/Xilinx_Base_Runtime.git

cd Xilinx_Base_Runtime

1.2 Run the Host Setup Script

./host_setup.sh -v 2020.1

Note:

  • Please wait for the installation to complete.  During this time you may need press [Y] to continue the host setup.
  • If you choose to flash the FPGA, you will need to cold reboot the local machine after the installation is completed to load the new image on the FPGA.
  • The script for host setup can be used to setup other versions XRT and shell. Please check  https://github.com/Xilinx/Xilinx_Base_Runtime for more details.

2. Install Docker (If not installed already)

With sudo access, use the following command to run the utility script to install docker.

2.1 Go to Xilinx_Base_Runtime utilities directory

cd Xilinx_Base_Runtime/utilities

2.2 Run the Docker installation script

./docker_install.sh

3. Application Execution

Enter the following commands in a terminal window to run the application:

3.1 Setup Environment Variables by script from Xilinx_Base_Runtime

source Xilinx_Base_Runtime/utilities/xilinx_docker_setup.sh

3.2 Pull the Docker Image

docker pull xilinx/data_compression:gzip-u50-2020.1-v1.0

3.3 Run the Docker Image

docker run $XILINX_DOCKER_DEVICES -it xilinx/data_compression:gzip-u50-2020.1-v1.0

Description of command arguments:

  • $XILINX_DOCKER_DEVICES - Variables set by the host setup script

3.4 Run GZIP

xgzip -c <input_file>

xgzip -d <compressed_file>

sample commands:

[For Compression]

[For Decompression]

wget http://sun.aei.polsl.pl/~sdeor/corpus/nci.bz2

xgzip -c nci.bz2

For Compression

xgzip -d nci.bz2.gz

For Decompression

xgzip -t nci.bz2

Test or Validate a file

4. Results

Once the compression or decompression is done, the output file will be generated in the same folder path will be same as input path folder.

  • File compressed with GZIP the output file format will be: <file_name>.gz
  • File compressed with ZLIB the output file format will be: <file_name>.xz
  • File extension after decompression will be: <compress_file>.raw