GENIE
genie::compression::DeviceBitPackingPrefixedCodec Class Reference

#include <DeviceBitPackingCodec.h>

Inheritance diagram for genie::compression::DeviceBitPackingPrefixedCodec:
genie::compression::DeviceIntegerCODEC

Public Member Functions

void encodeArray (uint32_t *in, const size_t length, uint32_t *out, size_t &nvalue)
 
const uint32_t * decodeArray (const uint32_t *in, const size_t, uint32_t *out, size_t &nvalue)
 
__device__ const uint32_t * decodeArraySequential (const uint32_t *d_in, const size_t, uint32_t *d_out, size_t &nvalue)
 
__device__ const uint32_t * decodeArrayParallel (const uint32_t *d_in, const size_t comprLength, uint32_t *d_out, size_t &capacity)
 
std::string name () const
 
__device__ __host__ int decodeArrayParallel_maxBlocks ()
 
__device__ __host__ int decodeArrayParallel_lengthPerBlock ()
 
__device__ __host__ int decodeArrayParallel_threadsPerBlock ()
 
__device__ __host__ int decodeArrayParallel_threadLoad ()
 
- Public Member Functions inherited from genie::compression::DeviceIntegerCODEC
__device__ __host__ DeviceIntegerCODEC ()
 
__device__ const uint32_t * decodeArraySequential (const uint32_t *d_in, const size_t length, uint32_t *d_out, size_t &nvalue)
 
__device__ const uint32_t * decodeArrayParallel (const uint32_t *d_in, const size_t length, uint32_t *d_out, size_t &nvalue)
 
virtual __device__ __host__ int decodeArrayParallel_minEffectiveLength ()
 

Static Public Member Functions

static uint32_t maxbits (const uint32_t *in, uint32_t &)
 
static void packblockwithoutmask (uint32_t *in, uint32_t *out, const uint32_t bit, uint32_t &)
 
__device__ static __host__ void unpackblock (const uint32_t *in, uint32_t *out, const uint32_t bit, uint32_t &)
 
__device__ static __host__ bool divisibleby (size_t a, uint32_t x)
 

Static Public Attributes

static const uint32_t MiniBlockSize = 32
 
static const uint32_t HowManyMiniBlocks = 4
 
static const uint32_t BlockSize = MiniBlockSize
 

Detailed Description

This class defines an integer codec for binary packing of blocks of 32 integers. The uncompressed length is stored as first uint32_t value. The block bit sizes are stored as subsequent values of type uint8_t for all the blocks.

Based on BlockPacker from Daniel Lemire.

No integrated delta.

Support decoding from withing a CUDA kernel.

Definition at line 135 of file DeviceBitPackingCodec.h.

Member Function Documentation

◆ decodeArray()

const uint32_t* genie::compression::DeviceBitPackingPrefixedCodec::decodeArray ( const uint32_t *  in,
const size_t  ,
uint32_t *  out,
size_t &  nvalue 
)
inlinevirtual

Implements genie::compression::DeviceIntegerCODEC.

Definition at line 173 of file DeviceBitPackingCodec.h.

◆ decodeArrayParallel()

__device__ const uint32_t* genie::compression::DeviceBitPackingPrefixedCodec::decodeArrayParallel ( const uint32_t *  d_in,
const size_t  comprLength,
uint32_t *  d_out,
size_t &  capacity 
)
inline

Definition at line 185 of file DeviceBitPackingCodec.h.

◆ decodeArrayParallel_lengthPerBlock()

__device__ __host__ int genie::compression::DeviceBitPackingPrefixedCodec::decodeArrayParallel_lengthPerBlock ( )
inlinevirtual

Maximal uncompressed (or compressed) size of the array the codec is able to process

Reimplemented from genie::compression::DeviceIntegerCODEC.

Definition at line 263 of file DeviceBitPackingCodec.h.

◆ decodeArrayParallel_maxBlocks()

__device__ __host__ int genie::compression::DeviceBitPackingPrefixedCodec::decodeArrayParallel_maxBlocks ( )
inlinevirtual

The amount of CUDA blocks this codec is able to operate on at the same time

Reimplemented from genie::compression::DeviceIntegerCODEC.

Definition at line 262 of file DeviceBitPackingCodec.h.

◆ decodeArrayParallel_threadLoad()

__device__ __host__ int genie::compression::DeviceBitPackingPrefixedCodec::decodeArrayParallel_threadLoad ( )
inlinevirtual

Number of decompressed values extracted by a single thread

Reimplemented from genie::compression::DeviceIntegerCODEC.

Definition at line 265 of file DeviceBitPackingCodec.h.

◆ decodeArrayParallel_threadsPerBlock()

__device__ __host__ int genie::compression::DeviceBitPackingPrefixedCodec::decodeArrayParallel_threadsPerBlock ( )
inlinevirtual

Maximal number of threads per single block

Reimplemented from genie::compression::DeviceIntegerCODEC.

Definition at line 264 of file DeviceBitPackingCodec.h.

◆ decodeArraySequential()

__device__ const uint32_t* genie::compression::DeviceBitPackingPrefixedCodec::decodeArraySequential ( const uint32_t *  d_in,
const size_t  ,
uint32_t *  d_out,
size_t &  nvalue 
)
inline

Definition at line 179 of file DeviceBitPackingCodec.h.

◆ divisibleby()

__device__ static __host__ bool genie::compression::DeviceBitPackingPrefixedCodec::divisibleby ( size_t  a,
uint32_t  x 
)
inlinestatic

Definition at line 162 of file DeviceBitPackingCodec.h.

◆ encodeArray()

void genie::compression::DeviceBitPackingPrefixedCodec::encodeArray ( uint32_t *  in,
const size_t  length,
uint32_t *  out,
size_t &  nvalue 
)
inlinevirtual

Implements genie::compression::DeviceIntegerCODEC.

Definition at line 167 of file DeviceBitPackingCodec.h.

◆ maxbits()

static uint32_t genie::compression::DeviceBitPackingPrefixedCodec::maxbits ( const uint32_t *  in,
uint32_t &   
)
inlinestatic

Definition at line 143 of file DeviceBitPackingCodec.h.

◆ name()

std::string genie::compression::DeviceBitPackingPrefixedCodec::name ( ) const
inlinevirtual

Reimplemented from genie::compression::DeviceIntegerCODEC.

Definition at line 259 of file DeviceBitPackingCodec.h.

◆ packblockwithoutmask()

static void genie::compression::DeviceBitPackingPrefixedCodec::packblockwithoutmask ( uint32_t *  in,
uint32_t *  out,
const uint32_t  bit,
uint32_t &   
)
inlinestatic

Definition at line 152 of file DeviceBitPackingCodec.h.

◆ unpackblock()

__device__ static __host__ void genie::compression::DeviceBitPackingPrefixedCodec::unpackblock ( const uint32_t *  in,
uint32_t *  out,
const uint32_t  bit,
uint32_t &   
)
inlinestatic

Definition at line 157 of file DeviceBitPackingCodec.h.

Member Data Documentation

◆ BlockSize

const uint32_t genie::compression::DeviceBitPackingPrefixedCodec::BlockSize = MiniBlockSize
static

Definition at line 140 of file DeviceBitPackingCodec.h.

◆ HowManyMiniBlocks

const uint32_t genie::compression::DeviceBitPackingPrefixedCodec::HowManyMiniBlocks = 4
static

Definition at line 139 of file DeviceBitPackingCodec.h.

◆ MiniBlockSize

const uint32_t genie::compression::DeviceBitPackingPrefixedCodec::MiniBlockSize = 32
static

Definition at line 138 of file DeviceBitPackingCodec.h.


The documentation for this class was generated from the following file: