/cusz-I

CUSZ-I: High-Fidelity Error-Bounded Lossy Compression for Scientific Data on GPUs

Primary LanguageC++OtherNOASSERTION

Research Paper Artifacts
cuSZ-I: High-Fidelity Error-Bounded Lossy Compression for Scientific Data on GPUs

The research paper artifacts serve the reproducting purpose. The artifacts are developed by the paper authors, Jinyang Liu, Jiannan Tian, and Shixun Wu.

build from source code

  • NVIDIA GPU with CUDA 11.3 onward
  • cmake 3.18 onward
  • C++17 enabled compiler, GCC 9 onward

To build cuSZ-I (cuSZ)

# Example architectures (";" to separate multiple SM versions)
# "80" <- A100; "86" <- A4000; RTX 30 series
# Please also refer to https://github.com/szcompressor/cuSZ/wiki/Build-and-Install for more detailed SM version listing
# Install to [/path/to/install/dir]

git clone https://github.com/Meso272/cusz-I.git cusz-interp
cd cusz-interp && mkdir build && cd build

cmake .. \
    -DPSZ_BACKEND=cuda \
    -DPSZ_BUILD_EXAMPLES=on \
    -DCMAKE_CUDA_ARCHITECTURES="70;80;86" \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_COLOR_DIAGNOSTICS=on \
#    -DCMAKE_INSTALL_PREFIX=[/path/to/install/dir]
make -j
# make install # uncomment `-DCMAKE_INSTALL_PREFIX=...` to install to system PATH
# `ctest` to perform testing

To build cuZFP

git clone https://github.com/LLNL/zfp.git
cd zfp && mkdir build && cd build
cmake .. \
    -DZFP_WITH_CUDA=on \
    -DCMAKE_CUDA_ARCHITECTURES="80;86" \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=[/path/to/install/dir]
make -j
make install

To build cuSZp

git clone https://github.com/szcompressor/cuSZp.git
cd cuSZp && mkdir build && cd build
cmake .. \
    -DCMAKE_CUDA_ARCHITECTURES="80;86" \
    -DCMAKE_BUILD_TYPE=Release
    -DCMAKE_INSTALL_PREFIX=[/path/to/install/dir]
make -j
make install
Detailed lookup: CUDA GPU architectures (SM version) and representative GPUs.

NVIDIA CUDA architectures and names and representative GPUs are listed below. More details can be found at CUDA GPUs.

SM id arch. grade/segment GPU product example
60 Pascal HPC/ML P100
70 Volta HPC/ML V100
75 Turing consumer/professional RTX 20?0, Quadro RTX ?000
80 Ampere HPC/ML A100
86 Ampere consumer/professional RTX 30?0, RTX A?000
89 * Ada consumer/professional RTX 40?0, RTX ?000
90 * Hopper HPC/ML H100

* as of CUDA 11.8

data source

All mentioned data in the research paper but RTM data are available on

  • SDRB: Miranda, Nyx, QMCPack, S3D
  • JHTDB: Turbulence

run

Note that cusz has been changed for the artifacts by

  • changing the binary name to cuszi, and
  • using spline as the default predictor (whereas lorenzo is the default for cusz)
# run cusz-interpolation using spline predictor
cuszi -t f32 -m r2r -e [ErrorBound] -i [/PATH/TO/DATA] -l [X]x[Y]x[Z] -z --report time
cuszi -i [/PATH/TO/DATA].cusza -x --report time --compare ${CESM}
# run cusz-lorenzo
cuszi -t f32 -m r2r -e [ErrorBound] -i [/PATH/TO/DATA] -l [X]x[Y]x[Z] -z --report time --predictor lorenzo
cuszi -i [/PATH/TO/DATA].cusza -x --report time --compare ${CESM}
# run FZ-GPU
./fz-gpu [/PATH/TO/DATA] [X] [Y] [Z] [ErrorBound]
# run cuSZp (draft)
./cuSZp_gpu_f32_api [/PATH/TO/DATA] REL [ErrorBound]
# run cuzfp (draft)
./zfp -f -i [/PATH/TO/DATA] -3 [Z] [Y] [X] -r [Rate] -x cuda

acknowledgements

This R&D is supported by the Exascale Computing Project (ECP), Project Number: 17-SC-20-SC, a collaborative effort of two DOE organizations – the Office of Science and the National Nuclear Security Administration, responsible for the planning and preparation of a capable exascale ecosystem. This repository is based upon work supported by the U.S. Department of Energy, Office of Science, under contract DE-AC02-06CH11357, and also supported by the National Science Foundation under Grants CCF-1617488, CCF-1619253, OAC-2003709, OAC-1948447/2034169, and OAC-2003624/2042084.

acknowledgement