Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Omni-Homomorphic Compression (oHC)

oHC is an efficient CPU and GPU implementation of the omni-homomorphic compression approach described in the following paper:

Alex Fallin and Martin Burtscher. "Omni-Homomorphic Compression for Large Scientific Datasets." Proceedings of the 44th IEEE International Performance Computing and Communications Conference. November 2025. [slides] [PDF]

If you use oHC in your research, please cite this publication.

Compilation

The code can be compiled as follows:

make {serial, openmp, gpu, all}

This will make both the oHC implementation and the base compressor used in our experiments (PFPL). To target a specific GPU architecture, replace NV_SM in the Makefile with the appropriate Compute Capability.

Execution

The base compressor takes the following arguments:

bin/f32/{serial, openmp, gpu}/PFPL_{abs, noa}_compress_{ser, omp, cuda} input_file_name compressed_output error_bound
bin/f32/{serial, openmp, gpu}/PFPL_{abs, noa}_decompress_{ser, omp, cuda} compressed_file_name decompressed_output

The index generator is launched using:

bin/f32/{serial, openmp, gpu}/oHC_index_generator_{ser, omp, cuda} decompressed_input 16kB_chunks_per_oHC_chunk index_name

The chunk query and homomorphic average examples can be executed using:

bin/f32/{serial, openmp, gpu}/oHC_chunk_query index_name
bin/f32/{serial, openmp, gpu}/oHC_homomorphic_mean_{ser, omp, cuda} original_input_size_bytes index_name

Lastly, the decompressor can be run using:

bin/f32/{serial, openmp, gpu}/oHC_{abs, noa}_decompress_{ser, omp, cuda} compressed_file_name decompressed_file_name oHC_index_file num_req_chunks req_chunk_1 [req_chunk_2 ... req_chunk_n]

Note: the decompressor must match the compressor (e.g., if the PFPL ABS compressor is used, you must use the oHC ABS decompressor to get correct results). The code reports the median runtime and throughput.

Input graphs

oHC expects IEEE 754-formatted single-precision floating-point data as input. For the experiments in our paper, we used scientific inputs from the SDRBench repository.

This work has been supported by the Department of Energy under Award DE-SC0022223.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages