PERNIX is a high-throughput floating-point number compression library for CPUs. It provides SIMD-optimized implementations of quantization and bit-packing algorithms to reduce transfer bandwidth requirements for scientific applications.
Compression of floating-point numbers
- implemented in C++, easy-to-use C/C++ and Fortran API
- optimized for various SIMD instruction sets (AVX2, AVX-512)
- block-based: 512-bit blocks similar to compression on FPGA (Wu, T. Kenter, R. Schade, T. D. Kühne and C. Plessl, 2023 IEEE 31st Annual International Symposium on Field-Programmable Custom Computing Machines (FCCM), 2023, pp. 162-173)
- clone repository
git clone https://github.com/pc2/pernix - Build with cmake:
cmake -E make_directory "build"cmake -E chdir "build" cmake -DCMAKE_BUILD_TYPE=Release -DPERNIX_ENABLE_TESTS=off ../cmake --build "build" --config Release
libpernix.sowill be inbuild/src
Bindings and examples can be found in the subdirectory bindings.