MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ execute()

template<ComputeData InputType = std::vector<Kakshya::DataVariant>, ComputeData OutputType = InputType>
virtual output_type MayaFlux::Yantra::GpuExecutionContext< InputType, OutputType >::execute ( const input_type input,
const ExecutionContext ctx 
)
inlinevirtual

Dispatch to GPU and reconstruct a typed output Datum.

Routes to dispatch_core_chained for CHAINED mode; all other modes use dispatch_core. Both paths are defined in GpuDispatchCore.cpp.

Parameters
inputInput Datum to process.
ctxExecutionContext; CHAINED mode requires 'pass_count' and 'pc_updater' in execution_metadata.
Exceptions
std::runtime_errorIf GPU initialisation fails.

Reimplemented in MayaFlux::Yantra::ShaderExecutionContext< InputType, OutputType >.

Definition at line 60 of file GpuExecutionContext.hpp.

61 {
62 if (!ensure_gpu_ready()) {
63 error<std::runtime_error>(
66 std::source_location::current(),
67 "GpuExecutionContext: GPU initialisation failed");
68 }
69
70 auto [ch_copies, structure_info] = extract_inputs(input);
71
72 const GpuChannelResult raw = (ctx.mode == ExecutionMode::CHAINED)
73 ? dispatch_core_chained(ch_copies, structure_info, ctx)
74 : dispatch_core(ch_copies, structure_info);
75
76 return collect_gpu_outputs(raw, ch_copies, structure_info);
77 }
GpuChannelResult dispatch_core(const std::vector< std::vector< double > > &channels, const DataStructureInfo &structure_info)
Full single-pass dispatch.
bool ensure_gpu_ready()
Ensure GPU resources are initialised.
GpuChannelResult dispatch_core_chained(const std::vector< std::vector< double > > &channels, const DataStructureInfo &structure_info, const ExecutionContext &ctx)
Multi-pass (chained) dispatch.
virtual output_type collect_gpu_outputs(const GpuChannelResult &raw, const std::vector< std::vector< double > > &channels, const DataStructureInfo &structure_info)
Reconstruct Datum<OutputType> from a GpuChannelResult.
virtual std::pair< std::vector< std::vector< double > >, DataStructureInfo > extract_inputs(const input_type &input)
Extract double channels and structure metadata from the input Datum.
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Yantra
DSP algorithms, computational units, matrix operations, Grammar.
@ CHAINED
Part of a sequential chain.

References MayaFlux::Yantra::ExecutionContext::mode.