Skip to content

Repository files navigation

build status format status

MGARD (MultiGrid Adaptive Reduction of Data) is a technique for multilevel lossy compression and refactoring of scientific data based on the theory of multigrid methods. We encourage you to make a GitHub issue if you run into any problems using MGARD, have any questions or suggestions, etc.

MGARD framework consists of the following modules. Please see the detailed instructions for each module to build and install MGARD.

MGARD-CPU: MGARD compression implementation for CPUs

MGARD-CPU is designed for running compression on CPUs. See the detailed user guide here. In addition, MGARD-CPU can be configured to preserve region-of-interest (RoI user guide) and linear quantity-of-interest (QoI user guide) during data compression.

MGARD-X: Accelerated and portable compression

MGARD-X is designed for portable compression on NVIDIA GPUs, AMD GPUs, and CPUs. See the detailed user guide here. In addition, MGARD-X can be configured to preserve region-of-interest (ROI user guide) and linear quantity-of-interest (QoI user guide) during data compression.

MGARD$\text{-}\lambda$: Preserving Non-Linear Quantity-of-Interest

MGARD$\text{-}\lambda$ is specifically designed for preserving non-linear quantity-of-interest during data compression. This is an experimental part of MGARD. Currently, it only supports certain QoIs derived from XGC 5D data. See theory in here and example in here.

MDR/MDR-X: Fine-grain progressive data reconstruction

MDR and MDR-X are designed to enable fine-grain data refactoring and progressive data reconstruction. See the detailed user guide here.

Self-describing format for compressed and refactored data

Data produced by MGARD, MGARD-X, and MDR-X are designed to follow a unified self-describing format. See format details in here.

Version history

Detailed release notes (features added, changes, and bug fixes) are linked below for each version.

  • MGARD 1.7.0 (Sep. 2026) — Delivered HP-MDR, a high-performance MDR-X refactoring and reconstruction pipeline; introduced BlockMGARD, a block-based hybrid hierarchy compression pipeline with region-of-interest support; deprecated and removed the legacy standalone MGARD-CUDA backend in favor of MGARD-X; added new rANS and BlockDelta lossless backends and a portable warp-cooperative LZ4 implementation; added Blackwell (sm_120) GPU build support; numerous performance improvements and bug fixes.
  • MGARD 1.6.0 (Aug. 2025) — Redesigned the compression/decompression pipeline for higher end-to-end throughput; improved OpenMP and Huffman CPU performance and ZSTD linking; removed the prefetch option (now always enabled) and the coordinate-normalization build option; fixed issues with LZ4 compression, thread safety, MDR-X L2 error control, ADIOS2 integration, and HIP builds.
  • MGARD 1.5.2 (Sep. 2023) — Added compression status reporting to the high-level API, an ADIOS2 operator build example, autotuning for Huffman kernels, asynchronous LZ4/Zstd compression, a pipeline optimized for compressing time-series data, and improved memory-usage estimation; fixed bugs in Huffman codebook generation, the domain decomposer, reduced-memory-footprint mode, and MDR-X reconstruction.
  • MGARD 1.5.0 (Apr. 2023) — Added the MGARD$\text{-}\lambda$ pipeline for preserving non-linear QoIs in XGC data and the MGARD-RoI pipeline for region-of-interest preservation; added a GPU pipeline for out-of-core, large-scale compression; added Apple Silicon (ARM) support; fixed issues with CUDA (older versions and 12+), the NVIDIA HPC SDK, MDR-X compilation, and linear quantization overflow.
  • MGARD 1.4.0 (Jan. 2023) — Added multi-device support for compression/decompression, RuntimeX, and Array; added workspace pre-allocation, a new OpenMP backend, block-based domain decomposition, and high-level MDR-X APIs; modularized the compression and refactoring workflows; reduced build time via optional autotuning; fixed bugs affecting GCC 9, Huffman encoding synchronization, Xcode, and the SYCL backend.
  • MGARD 1.3.0 (Sep. 2022) — Introduced MGARD-X: portable compression for CPU (serial and multi-threaded), NVIDIA GPUs, AMD GPUs, and Intel GPUs, with a self-describing format, automatic domain decomposition, multi-GPU parallel compression, and high-/low-level APIs. Introduced MDR-X for portable multi-precision data refactoring on CPU and GPU.
  • MGARD 1.0.0 (Sep. 2021) — Improved CPU compression/decompression speed (iterator optimizations, index precomputation, memory-access-pattern improvements); added OpenMP parallelization; added a self-describing command-line executable and high-level APIs; added support pluggable lossless compressors; fixed several multilevel-decomposition bugs.
  • MGARD 0.1.0 (Sep. 2020) — Added initial support for unstructured data; restructured code for extensibility; added Nvidia GPU support for 2D/3D; added Huffman entropy encoding and ZSTD integration; added FP64 support; added continuous integration (Travis CI).
  • MGARD 0.0.0.2 (Sep. 2019) — Initial public release. Lossy compression with preservation of $L_\infty$, $L_2$ and S-norm on primary data, and linear QoIs; added FP32 support.

Publications

The following works either contribute to the MGARD framework and/or extend and apply MGARD for various applications, systems, and use cases.

MGARD Foundations

Preserving Quantities of Interest (QoIs)

Progressive Retrieval

Parallelization and GPU Acceleration

System Optimizations

About

MGARD: MultiGrid Adaptive Reduction of Data

Topics

Resources

Stars

49 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages