|
FZGPUModules 2.0
GPU-accelerated modular compression pipelines
|
Chunk-cooperative fusion geometry — single source of truth. More...
Go to the source code of this file.
Classes | |
| struct | fz::fused::chunk::Geom< Bytes > |
| Per-chunk-size derived geometry, instantiated once per supported size. More... | |
Namespaces | |
| namespace | fz |
Variables | |
| constexpr int | fz::fused::chunk::kSupportedChunkBytes [] = {4096, 8192, 16384} |
Chunk-cooperative fusion geometry — single source of truth.
Deliberately dependency-free (no backend/runtime headers): it is included by the device harness (chunk_fusion.cuh), the host launcher (chunk_fusion.h/.cu), AND the runtime-generated NVRTC source. The NVRTC device compile must NOT pull host runtime types (backend/types.h names cudaStream_t etc., which NVRTC does not provide), so the constants live here, apart from the launcher declarations.
Chunk size is a per-instantiation template parameter (see chunk_fused_body/ chunk_inverse_pfpl_body in chunk_fusion.cuh), not a single fixed constant — every supported size gets its own compiled kernel, the same way the RRE-family coders already dispatch word_size/chunk_size combinations via a switch over pre-instantiated template kernels. TEMP_BYTES and TPB stay plain constants: both are chunk-size-independent (TEMP_BYTES is sized for the largest supported chunk and reused unscaled for smaller ones, matching the convention already used by RZE/RRE's own RZE_TEMP/RRE_TEMP; see lc_chunk_components.cuh).
|
constexpr |
Chunk sizes the chunk-cooperative fusion harness is instantiated for. Must each be a power of 2 >= 4096 (matches lc_chunk_components.cuh's own d_RZE/d_RRE/... static_assert) and a multiple of 1024 * element_width for whatever Bitshuffle element width composes with them (4-byte codes here, so a multiple of 4096 — see BitshuffleStage::getRequiredInputAlignment()). Extending this set requires no harness redesign: add the value here, add a dispatch case in chunk_fusion.cu's per-size switches, and widen each participating stage's getFusionSpec() gate to accept it.