1 #ifndef DEVICE_SERIAL_CODEC_H_ 2 #define DEVICE_SERIAL_CODEC_H_ 11 #define GPUGENIE_CODEC_SERIAL_THREADBLOCK_SIZE (256) 14 #define GPUGENIE_CODEC_SERIAL_THREAD_LOAD (4) 17 #define GPUGENIE_CODEC_SERIAL_MAX_UNCOMPR_LENGTH (GPUGENIE_CODEC_VARINT_THREAD_LOAD * \ 18 GPUGENIE_CODEC_VARINT_THREADBLOCK_SIZE) 27 template <
class Codec1,
class Codec2>
34 assert(
codec1.decodeArrayParallel_lengthPerBlock() ==
codec2.decodeArrayParallel_lengthPerBlock());
35 assert(
codec1.decodeArrayParallel_threadsPerBlock() ==
codec2.decodeArrayParallel_threadsPerBlock());
36 assert(
codec1.decodeArrayParallel_threadLoad() ==
codec2.decodeArrayParallel_threadLoad());
37 assert(
codec1.decodeArrayParallel_maxBlocks() ==
codec2.decodeArrayParallel_maxBlocks());
44 encodeArray(uint32_t *in,
const size_t length, uint32_t *out,
size_t &nvalue);
47 decodeArray(
const uint32_t *in,
const size_t length, uint32_t *out,
size_t &nvalue);
57 std::ostringstream convert;
58 convert <<
"Serial(" << codec1.name() <<
"-" << codec2.name() <<
")";
62 __device__ __host__
int 64 return max(codec1.decodeArrayParallel_minEffectiveLength(),
65 codec2.decodeArrayParallel_minEffectiveLength());
68 __device__ __host__
int 70 return codec1.decodeArrayParallel_maxBlocks();
73 __device__ __host__
int 75 return codec1.decodeArrayParallel_lengthPerBlock();
78 __device__ __host__
int 80 return codec1.decodeArrayParallel_threadsPerBlock();
83 __device__ __host__
int 85 return codec1.decodeArrayParallel_threadLoad();
__device__ __host__ int decodeArrayParallel_threadLoad()
void encodeArray(uint32_t *in, const size_t length, uint32_t *out, size_t &nvalue)
This is the top-level namespace of the project.
__device__ __host__ int decodeArrayParallel_maxBlocks()
__device__ uint32_t * decodeArrayParallel(uint32_t *d_in, size_t length, uint32_t *d_out, size_t &nvalue)
__device__ uint32_t * decodeArraySequential(uint32_t *d_in, size_t length, uint32_t *d_out, size_t &nvalue)
__device__ __host__ int decodeArrayParallel_lengthPerBlock()
__device__ __host__ DeviceSerialCodec()
const uint32_t * decodeArray(const uint32_t *in, const size_t length, uint32_t *out, size_t &nvalue)
__device__ __host__ int decodeArrayParallel_threadsPerBlock()
__device__ __host__ int decodeArrayParallel_minEffectiveLength()