How to reproduce benchmarks
These are example command lines as used on the Ryzen 3900X / RTX 2070 system. Please adapt to your system as needed.
Build system requirements
Hardware:
- For ndzip-gpu and 3rd-party GPU compressors: Nvidia GPU with Compute Capability >= 7.x
- For ndzip (the CPU variant): CPU with AVX2 support
Software:
- Linux (tested on x86_64 and POWER9)
- CMake >= 3.10
- Clang >= 10.0.0
- Boost >= 1.66
- liblzma ~= 5.2.5
Build and install hipSYCL
This is a custom version to support kernel profiling.
git clone https://github.com/fknorr/hipSYCL --branch rt-profiling
cd hipSYCL
cmake -B build -DCMAKE_INSTALL_PREFIX=../hipSYCL-rt-profiling -DHIPSYCL_WITH_CUDA_BACKEND=YES -DCMAKE_BUILD_TYPE=Release
cmake --build build --target install -j
Build benchmark binary
git clone git@github.com:fknorr/ndzip.git --tag sc21-revision
cd ndzip
git submodule update --init --recursive
cmake -B build -DCMAKE_PREFIX_PATH='../hipSYCL-rt-profiling/lib/cmake' -DHIPSYCL_PLATFORM=cuda -DCMAKE_CUDA_ARCHITECTURES=75 -DHIPSYCL_GPU_ARCH=sm_75 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CUDA_COMPILER=$(which clang++) -DCMAKE_CUDA_FLAGS="-U__FLOAT128__ -U__SIZEOF_FLOAT128__" -DCMAKE_CXX_FLAGS="-U__FLOAT128__ -U__SIZEOF_FLOAT128__ -march=native"
cmake --build build --target benchmark -j
See which compressors are active in the benchmark binary:
build/benchmark --help
The following compressors are relevant for the paper.
GPU compressors (for all evaluated systems):
- ndzip-gpu
- mpc
- gfc
- nvcomp-lz4
- nvcomp-cascaded
- cudpp-compress
CPU compressors (for the Ryzen 3900X / RTX 2070 system reference benchmark)
- ndzip (not ndzip-mt)
- zfp (not zfp-mt)
- fpzip
- fpc (not pfpc)
- lzma
If any of those is missing, make sure all library prerequisites are present and Git submodules are checked out.
Run benchmarks
Download benchmark datasests and run
build/benchmark path/to/scidata.csv -r 5 -a (list of algoritms) > bench.csv
Collect logs for kernel runtime distribution
NDZIP_VERBOSE=1 build/benchmark path/to/scidata.csv -r 5 -a (list of algoritms) > runtimes.log
Then proceed with the CSV files as shown here.