Giter Site home page Giter Site logo

jasonruonanwang / mgard Goto Github PK

View Code? Open in Web Editor NEW

This project forked from codarcode/mgard

0.0 1.0 0.0 11.12 MB

MGARD: MultiGrid Adaptive Reduction of Data

License: Apache License 2.0

C++ 87.64% CMake 1.13% Shell 0.29% Cuda 10.63% Python 0.28% C 0.02%

mgard's Introduction

MGARD build status format status

MGARD (MultiGrid Adaptive Reduction of Data) is a technique for multilevel lossy compression 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.

Building and Installing

To build and install MGARD, run the following from the root of the repository. You will need CMake and Protobuf.

$ cmake -S . -B build -D CMAKE_INSTALL_PREFIX=<location to install MGARD>
$ cmake --build build
$ cmake --install build

MGARD-X Portable version

Detailed instructions for using MGARD-X portable version for both GPUs and CPUs can be found in here.

MGARD-GPU [Deprecated]

Detailed instructions for using MGARD-GPU with NVIDIA GPU acceleration can be found in here.

Documentation

To build the documentation, run cmake with -D MGARD_ENABLE_DOCS=ON. You will need Doxygen. The documentation will be installed to ${CMAKE_INSTALL_PREFIX}/share/doc/MGARD/ by default. Open index.html with a browser to read.

Benchmarks

To build the benchmarks, run cmake with -D MGARD_ENABLE_BENCHMARKS=ON. You will need Google Benchmark. You can then run the benchmarks with build/bin/benchmarks.

Including and Linking

The API consists of a header file compress.hpp providing declarations for function templates mgard::compress and mgard::decompress. See the header for documentation of these templates.

To use MGARD in your project, you will need to tell your compiler where to find the MGARD headers (by default, ${CMAKE_INSTALL_PREFIX}/include/mgard/) and library (by default, ${CMAKE_INSTALL_PREFIX}/lib/). If you're using CMake, you can call find_package(mgard) and add a dependency to the mgard::mgard imported target. See the examples directory for a basic example.

Command Line Interface

To build the command line interface, run cmake with -D MGARD_ENABLE_CLI=ON. You will need TCLAP. A convenience executable called mgard will be built and installed to ${CMAKE_INSTALL_PREFIX}/bin/ by default. You can get help with the CLI by running the following commands.

$ mgard --help
$ man mgard

This executable is an experimental part of the API.

References

MGARD's theoretical foundation and software implementation are discussed in the following papers. Reference [2] covers the simplest case and is a natural starting point. Reference [6] covers the design and implementation on GPU heterogeneous systems.

  1. Ben Whitney. Multilevel Techniques for Compression and Reduction of Scientific Data. PhD thesis, Brown University, 2018.
  2. Mark Ainsworth, Ozan Tugluk, Ben Whitney, and Scott Klasky. Multilevel Techniques for Compression and Reduction of Scientific Data—The Univariate Case. Computing and Visualization in Science 19, 65–76, 2018.
  3. Mark Ainsworth, Ozan Tugluk, Ben Whitney, and Scott Klasky. Multilevel Techniques for Compression and Reduction of Scientific Data—The Multivariate Case. SIAM Journal on Scientific Computing 41 (2), A1278–A1303, 2019.
  4. Mark Ainsworth, Ozan Tugluk, Ben Whitney, and Scott Klasky. Multilevel Techniques for Compression and Reduction of Scientific Data—Quantitative Control of Accuracy in Derived Quantities. SIAM Journal on Scientific Computing 41 (4), A2146–A2171, 2019.
  5. Mark Ainsworth, Ozan Tugluk, Ben Whitney, and Scott Klasky. Multilevel Techniques for Compression and Reduction of Scientific Data—The Unstructured Case. SIAM Journal on Scientific Computing, 42 (2), A1402–A1427, 2020.
  6. Jieyang Chen et al. Accelerating Multigrid-based Hierarchical Scientific Data Refactoring on GPUs. 35th IEEE International Parallel & Distributed Processing Symposium, May 17–21, 2021.

mgard's People

Contributors

ben-e-whitney avatar jieyangchen7 avatar jychoi-hpc avatar kmorel avatar nathompson avatar qliu21 avatar robertu94 avatar tugluk avatar williamfgc avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.