16static constexpr int kBlockThreads = 32;
17static constexpr int kChunk = 16;
18static constexpr int kDecmpChunk = 32;
19static constexpr int kBlockElems = kBlockThreads * kChunk;
22static constexpr int kDecoupledMaxGsize = 1024;
33static constexpr int kWarpsPerBlock = 8;
35inline size_t adm_num_blocks(
size_t gsize) {
36 return (gsize +
static_cast<size_t>(kWarpsPerBlock) - 1)
37 /
static_cast<size_t>(kWarpsPerBlock);
41static constexpr int kShift = 1;
44static constexpr int kMaxSignalBytesU16 = 2;
45static constexpr int kMaxSignalBytesU32 = 4;
49inline size_t adm_gsize(
size_t n) {
50 return (n +
static_cast<size_t>(kBlockElems) - 1) / kBlockElems;
53inline size_t adm_flags_bytes(
size_t gsize) {
54 return (gsize + 7) / 8;
57inline size_t adm_flags_words(
size_t gsize) {
58 return (adm_flags_bytes(gsize) +
sizeof(uint32_t) - 1) /
sizeof(uint32_t);
67 int* d_output_lengths;
69 uint32_t* d_block_flags;
71 uint8_t* d_concat_signals;
72 uint8_t* d_bit_signals;
75 int* d_block_resolved;
78 unsigned int* d_overflow_flag;
84 const uint16_t* d_input,
size_t num_elements,
85 uint8_t* d_output,
size_t& output_size,
86 const AdmScratch& s, fz::stream_t stream);
89 const uint8_t* d_input,
size_t input_size,
90 uint16_t* d_output,
size_t num_elements,
91 const AdmScratch& s, fz::stream_t stream);
93size_t get_max_u16_payload_bytes(
size_t num_elements);
98 const uint32_t* d_input,
size_t num_elements,
99 uint8_t* d_output,
size_t& output_size,
100 const AdmScratch& s, fz::stream_t stream);
103 const uint8_t* d_input,
size_t input_size,
104 uint32_t* d_output,
size_t num_elements,
105 const AdmScratch& s, fz::stream_t stream);
107size_t get_max_u32_payload_bytes(
size_t num_elements);
Definition algorithms.h:48
Backend-neutral GPU type aliases.