Skip to content

hpdps-group/PRISM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PRISM: An Efficient GPU-Based Lossy Compression Framework for Progressive Data Retrieval with Multi-Level Interpolation

PRISM is an error-controlled lossy compressor that supports progressive data retrieval for floating-point data (both single- and double-precision).

PRISM offers several key features:

  1. 🚀 Progressive decompression: a single compressed file natively supports decompression at multiple precision levels.
  2. 🧩Incremental Loading: allows the decompressed data to be incrementally reconstructed during retrieval to satisfy diverse error requirements.
  3. 📊High compression ratio: achieves one of the best compression ratios among state-of-the-art (SOTA) GPU-based lossy compressors for floating-point data.
  4. High throughput: delivers 2–19x higher compression/decompression throughput (~100 GB/s) compared to other progressive compressors.

(C) 2025 by Institute of Computing Technology, Chinese Academy of Sciences.

Developers: Bing Lu, Zedong Liu

Contributors: Dingwen Tao (Supervisor), Guangming Tan

Environment Requirements

  • Linux OS with NVIDIA GPUs
  • Git >= 2.15
  • CMake >= 3.23
  • CUDA Toolkit >= 11.0
  • GCC >= 7.3.0

Compile and Use PRISM

You can compile and install PRISM with the following commands.

git clone https://github.com/BingluCS/PRISM.git
cd PRISM
mkdir build && cd build
cmake ..
make -j

After installation, you will see executable binary generated in PRISM/build/

Usage

Details on how to use PRISM can be found below.

Options:
  -i <path> : Path to binary input file containing the original data
  -x <path> : Path to decompressed binary output file (optional)
  -z <path> : Path to compressed binary output/input file (optional)
  -f : single precision (float type)
  -d : double precision (double type)
  -1 <nx> : Dimensions for 1D array a[nx]
  -2 <nx> <ny> : Dimensions for 2D array a[ny][nx]
  -3 <nx> <ny> <nz> : Dimensions for 3D array a[nz][ny][nx]
  -4 <nx> <ny> <nz> <nw> : Dimensions for 4D array a[nw][nz][ny][nx]
  -A [errorBound] : Absolute error bound
  -R [errorBound] : Relative error bound
  --report [time,cr] : output the compression ratio/time
  -prog : Enable progressive compression/decompression
  -errors -<nums> <error_1> <error_2> ... : Perform progressive decompression multiple times with gradually decreasing error bounds
Examples:
  ./prism -i [oriFilePath] -f -3 [dim_z] [dim_y] [dim_x] -R [errorBound] -z [cmpFilePath] -x [decFilePath] --report time,cr
  ./prism -i [oriFilePath] -d -3 [dim_z] [dim_y] [dim_x] -R [errorBound] -z [cmpFilePath] -x [decFilePath] -prog -errors -2 1e-1 1e-2

Example Commands:

  • non-progressive mode

    ./prism -i Miranda/density.d64 -d -3 384 384 256 -R 1E-6 -z -x --report time,cr
    
  • progressive mode

    ./prism -i Miranda/density.d64 -d -3 384 384 256 -R 1E-6 -z -x -prog -errors -5 1e-2 1e-3 1e-4 1e-5 1e-6 --report time,cr
    

Citation

If you use PRISM in your research or software, please cite our work:

@inproceedings{lu2026prism,
  title={PRISM: An Efficient GPU-Based Lossy Compression Framework for Progressive Data Retrieval with Multi-Level Interpolation},
  author={Lu, Bing and Liu, Zedong and Zhao, Hairui and Luo, Dejun and Huang, Wenjing and Gu, Yida and Liu, Jinyang and Tan, Guangming and Tao, Dingwen},
  booktitle={Proceedings of the 31st {ACM} {SIGPLAN} Annual Symposium on Principles and Practice of Parallel Programming, PPoPP 2026, Sydney, Australia, January 31-February 4, 2026},
  year={2026},
  DOI={}
}

About

An Efficient GPU-Based Lossy Compression Framework for Progressive Data Retrieval

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •