FZGPUModules 2.0
GPU-accelerated modular compression pipelines
Loading...
Searching...
No Matches
bitplane_rze_kernels.h
Go to the documentation of this file.
1#pragma once
2
20#include <cuda_runtime.h>
21#include <cstddef>
22#include <cstdint>
23
24namespace fz {
25namespace bitplane_rze {
26
34enum : int {
35 BPRZE_HDR_HEADER = 0,
36 BPRZE_HDR_BITFLAG = 1,
37 BPRZE_HDR_STARTPOS = 2,
38 BPRZE_HDR_BITSTREAM = 3,
39 BPRZE_HDR_END = 4,
40};
41
42constexpr size_t kBitplaneRzeHeaderBytes = 128;
43
44struct ArchiveHeader {
45 size_t original_len;
46 uint32_t entry[BPRZE_HDR_END + 1];
47 uint8_t padding[kBitplaneRzeHeaderBytes - sizeof(size_t) -
48 sizeof(uint32_t) * (BPRZE_HDR_END + 1)];
49};
50static_assert(sizeof(ArchiveHeader) == kBitplaneRzeHeaderBytes,
51 "ArchiveHeader must be exactly 128 bytes");
52
54struct Config {
55 size_t data_len;
56 size_t pad_len;
57 size_t data_bytes;
58 size_t chunk_size;
59 size_t grid_x;
60};
61
63Config configure(size_t data_len);
64
68size_t maxArchiveBytes(size_t data_len);
69
84 const uint16_t* d_in, const Config& cfg,
85 uint32_t* d_offset_counter, uint32_t* d_bitflag, uint32_t* d_start_pos,
86 uint8_t* d_comp_out, uint32_t* d_comp_len, cudaStream_t stream);
87
94 const uint8_t* d_bitstream, const uint32_t* d_bitflag,
95 const uint32_t* d_start_pos, uint16_t* d_out, const Config& cfg,
96 cudaStream_t stream);
97
98} // namespace bitplane_rze
99} // namespace fz
void launchEncode(const uint16_t *d_in, const Config &cfg, uint32_t *d_offset_counter, uint32_t *d_bitflag, uint32_t *d_start_pos, uint8_t *d_comp_out, uint32_t *d_comp_len, cudaStream_t stream)
void launchDecode(const uint8_t *d_bitstream, const uint32_t *d_bitflag, const uint32_t *d_start_pos, uint16_t *d_out, const Config &cfg, cudaStream_t stream)
Definition fzm_format.h:25
Sizes derived from the (unpadded) uint16 symbol count.
Definition bitplane_rze_kernels.h:54
size_t data_bytes
Padded byte count (= pad_len * 2).
Definition bitplane_rze_kernels.h:57
size_t grid_x
Number of CUDA blocks (data_bytes / 4096).
Definition bitplane_rze_kernels.h:59
size_t chunk_size
Number of uint32 bitflag words (data_bytes / 512).
Definition bitplane_rze_kernels.h:58
size_t pad_len
Symbol count padded up to a 4096-byte multiple.
Definition bitplane_rze_kernels.h:56
size_t data_len
User-visible uint16 symbol count.
Definition bitplane_rze_kernels.h:55