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
27#include "backend/types.h"
28#include "stage/fusion.h"
29#include <cstddef>
30#include <vector>
31
32namespace fz {
33
34class Stage;
35class MemoryPool;
36
51
54 const std::vector<Stage*>* stages;
55 const void* d_input;
56 size_t input_bytes;
57 void* d_output;
59 fz::stream_t stream;
63 std::vector<FusedSideOutput>* side_outputs = nullptr;
64};
65
67struct FusedImpl {
68 const char* name;
73 bool (*matches)(const std::vector<Stage*>& group);
75 size_t (*run)(const FusedRunContext& ctx);
76};
77
81 const std::vector<Stage*>& group, bool include_experimental = false);
82
83} // 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:67
bool auto_enabled
Definition fusion_registry.h:71
size_t(* run)(const FusedRunContext &ctx)
Run the fused compress; return the archive length written to d_output.
Definition fusion_registry.h:75
bool(* matches)(const std::vector< Stage * > &group)
True if this impl handles group exactly (types + relevant config).
Definition fusion_registry.h:73
Everything a fused runner needs to compress one group in place.
Definition fusion_registry.h:53
const void * d_input
the group's input buffer
Definition fusion_registry.h:55
MemoryPool * pool
pool for the runner's scratch
Definition fusion_registry.h:58
void * d_output
the group's MAIN output buffer (tail port 0, >= worst case)
Definition fusion_registry.h:57
const std::vector< Stage * > * stages
group stages, producer→consumer
Definition fusion_registry.h:54
fz::stream_t stream
Definition fusion_registry.h:59
std::vector< FusedSideOutput > * side_outputs
Definition fusion_registry.h:63
size_t input_bytes
bytes of d_input
Definition fusion_registry.h:56
Definition fusion_registry.h:43
void * d_ptr
pre-allocated buffer for the port
Definition fusion_registry.h:46
size_t size
OUT: bytes the runner wrote (DAG sets the buffer size from this)
Definition fusion_registry.h:48
FusedAuxOutputDecl declaration
semantic identity/sizing rule, if declared
Definition fusion_registry.h:49
int output_index
which of the producer's output ports this is
Definition fusion_registry.h:45
Stage * producer
the group member that owns this output port
Definition fusion_registry.h:44
size_t capacity
its allocated size in bytes
Definition fusion_registry.h:47
Backend-neutral GPU type aliases.