Commit 1525aeea authored by William F Godoy's avatar William F Godoy
Browse files

Initial integration with MGARD

Simple 2D test passing
parent b0b8a512
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -103,6 +103,8 @@
    MACRO(float)                                                               \
    MACRO(double)

#define ADIOS2_FOREACH_MGARD_TYPE_1ARG(MACRO) MACRO(double)

#define ADIOS2_FOREACH_ATTRIBUTE_TYPE_1ARG(MACRO)                              \
    MACRO(std::string)                                                         \
    MACRO(char)                                                                \
+2 −0
Original line number Diff line number Diff line
@@ -47,6 +47,8 @@ add_library(adios2
  toolkit/format/bp3/operation/BP3Zfp.tcc
  toolkit/format/bp3/operation/BP3SZ.cpp
  toolkit/format/bp3/operation/BP3SZ.tcc
  toolkit/format/bp3/operation/BP3MGARD.cpp
  toolkit/format/bp3/operation/BP3MGARD.tcc

  toolkit/profiling/iochrono/Timer.cpp

+17 −0
Original line number Diff line number Diff line
@@ -32,6 +32,10 @@
#include "adios2/operator/compress/CompressSZ.h"
#endif

#ifdef ADIOS2_HAVE_MGARD
#include "adios2/operator/compress/CompressMGARD.h"
#endif

// callbacks
#include "adios2/operator/callback/Signature1.h"
#include "adios2/operator/callback/Signature2.h"
@@ -187,6 +191,19 @@ Operator &ADIOS::DefineOperator(const std::string name, const std::string type,
        throw std::invalid_argument(
            "ERROR: this version of ADIOS2 didn't compile with the "
            "SZ library (minimum v2.0.2.0), in call to DefineOperator\n");
#endif
    }
    else if (typeLowerCase == "mgard")
    {
#ifdef ADIOS2_HAVE_MGARD
        auto itPair = m_Operators.emplace(
            name,
            std::make_shared<compress::CompressMGARD>(parameters, m_DebugMode));
        operatorPtr = itPair.first->second;
#else
        throw std::invalid_argument(
            "ERROR: this version of ADIOS2 didn't compile with the "
            "MGARD library (minimum v0.0.0.1), in call to DefineOperator\n");
#endif
    }
    else
+7 −3
Original line number Diff line number Diff line
@@ -83,10 +83,14 @@ size_t CompressMGARD::Compress(const void *dataIn, const Dims &dimensions,
    double tolerance = std::stod(itTolerance->second);

    int sizeOut = 0;
    mgard_compress(mgardType, const_cast<void *>(dataIn), &sizeOut, r[0], r[1],
                   &tolerance);
    unsigned char *dataOutPtr =
        mgard_compress(mgardType, const_cast<void *>(dataIn), &sizeOut, r[0],
                       r[1], &tolerance);

    return static_cast<size_t>(sizeOut);
    const size_t sizeOutT = static_cast<size_t>(sizeOut);
    std::memcpy(bufferOut, dataOutPtr, sizeOutT);

    return sizeOutT;
}

size_t CompressMGARD::Decompress(const void *bufferIn, const size_t sizeIn,
+6 −8
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include "adios2/ADIOSTypes.h"            //PathSeparator
#include "adios2/helper/adiosFunctions.h" //CreateDirectory, StringToTimeUnit,

#include "adios2/toolkit/format/bp3/operation/BP3MGARD.h"
#include "adios2/toolkit/format/bp3/operation/BP3SZ.h"
#include "adios2/toolkit/format/bp3/operation/BP3Zfp.h"

@@ -25,15 +26,12 @@ namespace format
{

const std::set<std::string> BP3Base::m_TransformTypes = {
    {"unknown", "none", "identity", "sz", "zfp"}};
    {"unknown", "none", "identity", "sz", "zfp", "mgard"}};

const std::map<int, std::string> BP3Base::m_TransformTypesToNames = {
    {transform_unknown, "unknown"},
    {transform_none, "none"},
    {transform_identity, "identity"},
    {transform_sz, "sz"},
    {transform_zfp, "zfp"}
    //{transform_mgard, "mgard"},
    {transform_unknown, "unknown"},   {transform_none, "none"},
    {transform_identity, "identity"}, {transform_sz, "sz"},
    {transform_zfp, "zfp"},           {transform_mgard, "mgard"},
    // {transform_zlib, "zlib"},
    //    {transform_bzip2, "bzip2"},
    //    {transform_szip, "szip"},
@@ -813,7 +811,7 @@ BP3Base::SetBP3Operation(const std::string type) const noexcept
    }
    else if (type == "mgard")
    {
        // TODO
        bp3Op = std::make_shared<BP3MGARD>();
    }
    else if (type == "bzip2")
    {
Loading