GENIE
|
#include <DeviceBitPackingCodec.h>
Classes | |
struct | DeviceIntegratedBlockPacker |
struct | DeviceNoDeltaBlockPacker |
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__ uint32_t * | decodeArraySequential (uint32_t *d_in, size_t, uint32_t *d_out, size_t &nvalue) |
__device__ uint32_t * | decodeArrayParallel (uint32_t *d_in, size_t, uint32_t *d_out, size_t &capacity) |
std::string | name () const |
__device__ __host__ int | decodeArrayParallel_maxBlocks () |
__device__ __host__ int | decodeArrayParallel_minEffectiveLength () |
__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) |
Static Public Member Functions | |
__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 block bit sizes are stored as 4 values uint8_t at the beginning of each block.
Based on BlockPacker from Daniel Lemire.
By default does not use inegrated delta encoding.
Support decoding from withing a CUDA kernel.
Definition at line 37 of file DeviceBitPackingCodec.h.
|
virtual |
Implements genie::compression::DeviceIntegerCODEC.
Definition at line 61 of file DeviceBitPackingCodec.cu.
__device__ uint32_t * genie::compression::DeviceBitPackingCodec::decodeArrayParallel | ( | uint32_t * | d_in, |
size_t | , | ||
uint32_t * | d_out, | ||
size_t & | capacity | ||
) |
Definition at line 144 of file DeviceBitPackingCodec.cu.
|
inlinevirtual |
Maximal uncompressed (or compressed) size of the array the codec is able to process
Reimplemented from genie::compression::DeviceIntegerCODEC.
Definition at line 118 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 116 of file DeviceBitPackingCodec.h.
|
inlinevirtual |
Minimal effective lenth of the compression
Reimplemented from genie::compression::DeviceIntegerCODEC.
Definition at line 117 of file DeviceBitPackingCodec.h.
|
inlinevirtual |
Number of decompressed values extracted by a single thread
Reimplemented from genie::compression::DeviceIntegerCODEC.
Definition at line 120 of file DeviceBitPackingCodec.h.
|
inlinevirtual |
Maximal number of threads per single block
Reimplemented from genie::compression::DeviceIntegerCODEC.
Definition at line 119 of file DeviceBitPackingCodec.h.
__device__ uint32_t * genie::compression::DeviceBitPackingCodec::decodeArraySequential | ( | uint32_t * | d_in, |
size_t | , | ||
uint32_t * | d_out, | ||
size_t & | nvalue | ||
) |
Definition at line 102 of file DeviceBitPackingCodec.cu.
|
inlinestatic |
Definition at line 103 of file DeviceBitPackingCodec.h.
|
virtual |
Implements genie::compression::DeviceIntegerCODEC.
Definition at line 16 of file DeviceBitPackingCodec.cu.
|
inlinevirtual |
Reimplemented from genie::compression::DeviceIntegerCODEC.
Definition at line 114 of file DeviceBitPackingCodec.h.
|
static |
Definition at line 42 of file DeviceBitPackingCodec.h.
|
static |
Definition at line 41 of file DeviceBitPackingCodec.h.
|
static |
Definition at line 40 of file DeviceBitPackingCodec.h.