GENIE
|
#include <DeviceBitPackingCodec.h>
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 () |
![]() | |
__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 |
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.
|
inlinevirtual |
Implements genie::compression::DeviceIntegerCODEC.
Definition at line 173 of file DeviceBitPackingCodec.h.
|
inline |
Definition at line 185 of file DeviceBitPackingCodec.h.
|
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.
|
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.
|
inlinevirtual |
Number of decompressed values extracted by a single thread
Reimplemented from genie::compression::DeviceIntegerCODEC.
Definition at line 265 of file DeviceBitPackingCodec.h.
|
inlinevirtual |
Maximal number of threads per single block
Reimplemented from genie::compression::DeviceIntegerCODEC.
Definition at line 264 of file DeviceBitPackingCodec.h.
|
inline |
Definition at line 179 of file DeviceBitPackingCodec.h.
|
inlinestatic |
Definition at line 162 of file DeviceBitPackingCodec.h.
|
inlinevirtual |
Implements genie::compression::DeviceIntegerCODEC.
Definition at line 167 of file DeviceBitPackingCodec.h.
|
inlinestatic |
Definition at line 143 of file DeviceBitPackingCodec.h.
|
inlinevirtual |
Reimplemented from genie::compression::DeviceIntegerCODEC.
Definition at line 259 of file DeviceBitPackingCodec.h.
|
inlinestatic |
Definition at line 152 of file DeviceBitPackingCodec.h.
|
inlinestatic |
Definition at line 157 of file DeviceBitPackingCodec.h.
|
static |
Definition at line 140 of file DeviceBitPackingCodec.h.
|
static |
Definition at line 139 of file DeviceBitPackingCodec.h.
|
static |
Definition at line 138 of file DeviceBitPackingCodec.h.