FZGPUModules 2.0
GPU-accelerated modular compression pipelines
Loading...
Searching...
No Matches
fusion_registry.h
Go to the documentation of this file.
1#pragma once
2
3/*
4 * ADVANCED API — no source-compatibility promise. The types here (CompressionDAG,
5 * DAGNode, BufferInfo, the fusion planner/registry) are pipeline internals exposed
6 * for advanced/experimental use; they may change or be removed in any release.
7 * Most users only need <fzgpumodules.h> / pipeline/compressor.h. See the API tiers
8 * in docs/api_reference.md.
9 */
10
28#include "backend/types.h"
29#include "stage/fusion.h"
30#include <cstddef>
31#include <string>
32#include <vector>
33
34namespace fz {
35
36class Stage;
37class MemoryPool;
38
53
60 const void* d_ptr;
61 size_t size;
62};
63
66 const std::vector<Stage*>* stages;
67 const void* d_input;
68 size_t input_bytes;
69 void* d_output;
70 size_t output_capacity = 0;
72 fz::stream_t stream;
76 std::vector<FusedSideOutput>* side_outputs = nullptr;
79 const std::vector<FusedSideInput>* side_inputs = nullptr;
82 std::string* execution_path = nullptr;
83};
84
86struct FusedImpl {
87 const char* name;
92 bool (*matches)(const std::vector<Stage*>& group);
94 size_t (*run)(const FusedRunContext& ctx);
95};
96
100 const std::vector<Stage*>& group, bool include_experimental = false);
101
102} // namespace fz
Definition mempool.h:82
Definition stage.h:31
Definition dag.h:24
const FusedImpl * findFusedImpl(const std::vector< Stage * > &group, bool include_experimental=false)
Definition fusion.h:131
A registered fused implementation and its matcher.
Definition fusion_registry.h:86
bool auto_enabled
Definition fusion_registry.h:90
size_t(* run)(const FusedRunContext &ctx)
Run the fused compress; return the archive length written to d_output.
Definition fusion_registry.h:94
bool(* matches)(const std::vector< Stage * > &group)
True if this strategy handles the group's declarations and geometry.
Definition fusion_registry.h:92
Everything a fused runner needs to compress one group in place.
Definition fusion_registry.h:65
const void * d_input
the group's input buffer
Definition fusion_registry.h:67
MemoryPool * pool
pool for the runner's scratch
Definition fusion_registry.h:71
void * d_output
the group's MAIN output buffer (tail port 0, >= worst case)
Definition fusion_registry.h:69
const std::vector< Stage * > * stages
group stages, producer→consumer
Definition fusion_registry.h:66
fz::stream_t stream
Definition fusion_registry.h:72
size_t output_capacity
allocated bytes available at d_output
Definition fusion_registry.h:70
std::vector< FusedSideOutput > * side_outputs
Definition fusion_registry.h:76
size_t input_bytes
bytes of d_input
Definition fusion_registry.h:68
const std::vector< FusedSideInput > * side_inputs
Definition fusion_registry.h:79
std::string * execution_path
Definition fusion_registry.h:82
Definition fusion_registry.h:57
size_t size
bytes available at d_ptr
Definition fusion_registry.h:61
const void * d_ptr
externally produced/device-resident input
Definition fusion_registry.h:60
Stage * consumer
group member that owns this input
Definition fusion_registry.h:58
int input_index
position in that stage's inverse input list
Definition fusion_registry.h:59
Definition fusion_registry.h:45
void * d_ptr
pre-allocated buffer for the port
Definition fusion_registry.h:48
size_t size
OUT: bytes the runner wrote (DAG sets the buffer size from this)
Definition fusion_registry.h:50
FusedAuxOutputDecl declaration
semantic identity/sizing rule, if declared
Definition fusion_registry.h:51
int output_index
which of the producer's output ports this is
Definition fusion_registry.h:47
Stage * producer
the group member that owns this output port
Definition fusion_registry.h:46
size_t capacity
its allocated size in bytes
Definition fusion_registry.h:49
Backend-neutral GPU type aliases.