Unverified Commit b11a685d authored by Eisenhauer, Greg's avatar Eisenhauer, Greg Committed by GitHub
Browse files

Merge pull request #5020 from ornladios-robot/backport-to-release_212-5015

Backport #5015 to release_212
parents c79b0ab4 c5dcb403
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -92,6 +92,8 @@ size_t CompressMGARD::Operate(const char *dataIn, const Dims &blockStart, const
    double tolerance = 0.0;
    double s = 0.0;
    auto errorBoundType = mgard_x::error_bound_type::REL;
    mgard_x::Config config;
    config.lossless = mgard_x::lossless_type::Huffman_Zstd;

    // input size under this bound will not compress
    size_t thresholdSize = 100000;
@@ -135,6 +137,24 @@ size_t CompressMGARD::Operate(const char *dataIn, const Dims &blockStart, const
            errorBoundType = mgard_x::error_bound_type::REL;
        }
    }
    if (auto itLosslessType = m_Parameters.find("lossless_type");
        itLosslessType != m_Parameters.end())
    {
        if (itLosslessType->second == "huffman")
        {
            config.lossless = mgard_x::lossless_type::Huffman;
        }
        else if (itLosslessType->second == "huffman_zstd")
        {
            config.lossless = mgard_x::lossless_type::Huffman_Zstd;
        }
        else
        {
            helper::Throw<std::invalid_argument>(
                "Operator", "CompressMGARD", "Operate",
                "MGARD only supports huffman/huffman_zstd lossless types");
        }
    }

    // let mgard know the output buffer size
    size_t sizeOut = helper::GetTotalSize(blockCount, helper::GetDataTypeSize(type));
@@ -147,9 +167,6 @@ size_t CompressMGARD::Operate(const char *dataIn, const Dims &blockStart, const
        return 0;
    }

    mgard_x::Config config;
    config.lossless = mgard_x::lossless_type::Huffman_Zstd;

    PutParameter(bufferOut, bufferOutOffset, true);
    void *compressedData = bufferOut + bufferOutOffset;
    mgard_x::compress(mgardDim, mgardType, mgardCount, tolerance, s, errorBoundType, dataIn,
+21 −4
Original line number Diff line number Diff line
@@ -86,6 +86,8 @@ size_t CompressMGARDComplex::Operate(const char *dataIn, const Dims &blockStart,
    double tolerance = 0.0;
    double s = 0.0;
    auto errorBoundType = mgard_x::error_bound_type::REL;
    mgard_x::Config config;
    config.lossless = mgard_x::lossless_type::Huffman_Zstd;

    // input size under this bound will not compress
    size_t thresholdSize = 100000;
@@ -129,6 +131,24 @@ size_t CompressMGARDComplex::Operate(const char *dataIn, const Dims &blockStart,
            errorBoundType = mgard_x::error_bound_type::REL;
        }
    }
    if (auto itLosslessType = m_Parameters.find("lossless_type");
        itLosslessType != m_Parameters.end())
    {
        if (itLosslessType->second == "huffman")
        {
            config.lossless = mgard_x::lossless_type::Huffman;
        }
        else if (itLosslessType->second == "huffman_zstd")
        {
            config.lossless = mgard_x::lossless_type::Huffman_Zstd;
        }
        else
        {
            helper::Throw<std::invalid_argument>(
                "Operator", "CompressMGARD", "Operate",
                "MGARD only supports huffman/huffman_zstd lossless types");
        }
    }

    // Calculate sizes
    const size_t totalElements = helper::GetTotalSize(blockCount, 1); // Number of complex elements
@@ -143,9 +163,6 @@ size_t CompressMGARDComplex::Operate(const char *dataIn, const Dims &blockStart,
        return 0;
    }

    mgard_x::Config config;
    config.lossless = mgard_x::lossless_type::Huffman_Zstd;

    // Check for device parameter
    auto itDevice = m_Parameters.find("device");
    if (itDevice != m_Parameters.end())