FZGPUModules 2.0
GPU-accelerated modular compression pipelines
Loading...
Searching...
No Matches
lorenzo_quant.h File Reference

Fused Lorenzo predictor and quantizer stage. More...

#include "stage/stage.h"
#include "fzm_format.h"
#include <cuda_runtime.h>
#include <array>
#include <cstdint>
#include <cmath>
#include <cstring>

Go to the source code of this file.

Classes

struct  fz::LorenzoQuantConfig
 
class  fz::LorenzoQuantStage< TInput, TCode >
 
struct  fz::LorenzoQuantStage< TInput, TCode >::Config
 

Enumerations

enum class  fz::ErrorBoundMode : uint8_t { ABS = 0 , REL = 1 , NOA = 2 }
 

Functions

template<typename TInput , typename TCode >
void fz::launchLorenzoKernel2D (const TInput *d_input, size_t nx, size_t ny, TInput ebx2_r, TCode quant_radius, TCode *d_codes, TInput *d_outlier_errors, uint32_t *d_outlier_indices, uint32_t *d_outlier_count, size_t max_outliers, bool zigzag_codes, cudaStream_t stream)
 2-D forward Lorenzo kernel launcher. nx is the fast (x) dimension.
 
template<typename TInput , typename TCode >
void fz::launchLorenzoInverseKernel2D (const TCode *d_codes, const TInput *d_outlier_errors, const uint32_t *d_outlier_indices, const uint32_t *d_outlier_count, size_t nx, size_t ny, size_t max_outliers, TInput ebx2, TCode quant_radius, TInput *d_output, bool zigzag_codes, cudaStream_t stream, MemoryPool *pool)
 2-D inverse Lorenzo kernel launcher.
 
template<typename TInput , typename TCode >
void fz::launchLorenzoKernel3D (const TInput *d_input, size_t nx, size_t ny, size_t nz, TInput ebx2_r, TCode quant_radius, TCode *d_codes, TInput *d_outlier_errors, uint32_t *d_outlier_indices, uint32_t *d_outlier_count, size_t max_outliers, bool zigzag_codes, cudaStream_t stream)
 3-D forward Lorenzo kernel launcher.
 
template<typename TInput , typename TCode >
void fz::launchLorenzoInverseKernel3D (const TCode *d_codes, const TInput *d_outlier_errors, const uint32_t *d_outlier_indices, const uint32_t *d_outlier_count, size_t nx, size_t ny, size_t nz, size_t max_outliers, TInput ebx2, TCode quant_radius, TInput *d_output, bool zigzag_codes, cudaStream_t stream, MemoryPool *pool)
 3-D inverse Lorenzo kernel launcher.
 

Detailed Description

Fused Lorenzo predictor and quantizer stage.

Enumeration Type Documentation

◆ ErrorBoundMode

enum class fz::ErrorBoundMode : uint8_t
strong

Interpretation of the user-specified error bound.

  • ABS|x_orig - x_recon| <= eb (default).
  • REL — point-wise relative (PFPL): |error| / |x_orig| <= eb. For Lorenzo this is a global approximation: abs_eb = eb × max(|data|). Values much smaller than max(|data|) may exceed the per-element ratio. For an exact per-element REL bound use QuantizerStage with REL mode.
  • NOA — norm-of-absolute / value-range relative (PFPL): abs_eb = eb × (max(data) - min(data)). Equivalent to what most other compressors call "relative".
Enumerator
ABS 

Absolute error bound.

REL 

Global-approximate point-wise relative bound.

NOA 

Value-range relative bound (norm-of-absolute).