Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
gpu_neural_model.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <span>
5#include <string_view>
6
9
10namespace pulp::gpu_audio {
11
17 void* state = nullptr;
20 bool (*prepare)(void* state) noexcept = nullptr;
24 void (*process)(void* state, const float* input, float* output,
25 std::uint32_t frames) noexcept = nullptr;
27 void (*reset)(void* state) noexcept = nullptr;
28};
29
33 std::string_view model_id{};
36 std::string_view architecture{};
37 std::string_view model_version{};
38 std::string_view artifact_id{};
40 std::string_view artifact_sha256{};
41 std::string_view license{};
42 std::string_view runtime{};
43 std::uint64_t artifact_size_bytes = 0;
44 std::uint32_t sample_rate_hz = 0;
47 bool redistributable = false;
48 bool local_research = false;
49};
50
57 std::uint32_t tcn_kernel_size = 0;
58 std::uint32_t tcn_dilation = 0;
60 std::uint32_t recurrent_hidden_size = 0;
62 std::uint32_t ssm_state_size = 0;
63};
64
81
93
97 explicit operator bool() const noexcept {
98 return model != nullptr && error == GpuNeuralModelError::None;
99 }
100};
101
106
107} // namespace pulp::gpu_audio
Definition flow_pans.hpp:19
GpuNeuralModelError
Definition gpu_neural_model.hpp:82
@ InvalidManifest
Definition gpu_neural_model.hpp:85
@ None
Definition gpu_neural_model.hpp:83
@ UnsupportedFamily
Definition gpu_neural_model.hpp:84
@ UnsupportedBackend
A GPU session was requested for a family without a GPU kernel.
Definition gpu_neural_model.hpp:90
@ InvalidBlockSize
Definition gpu_neural_model.hpp:86
@ AllocationFailed
Definition gpu_neural_model.hpp:91
@ ShapeMismatch
Definition gpu_neural_model.hpp:88
@ MissingKernels
Definition gpu_neural_model.hpp:87
GpuNeuralModelResult make_gpu_neural_model(const GpuNeuralModelRequest &request) noexcept
Host thread only.
@ None
Definition gpu_audio_capability.hpp:75
NeuralFamily
Architecture family of a neural model hosted by GpuNeuralRealtimeNode.
Definition gpu_neural_realtime_node.hpp:16
@ Unknown
Definition gpu_neural_realtime_node.hpp:17
std::shared_ptr< GpuNeuralModel > GpuNeuralModelHandle
Definition gpu_neural_realtime_node.hpp:31
One channel's CPU model step, supplied and owned by the caller.
Definition gpu_neural_model.hpp:16
void * state
Definition gpu_neural_model.hpp:17
void(* reset)(void *state) noexcept
Restarts the causal state; called off the audio thread.
Definition gpu_neural_model.hpp:27
bool(* prepare)(void *state) noexcept
Host thread, before processing starts: clear the causal state.
Definition gpu_neural_model.hpp:20
void(* process)(void *state, const float *input, float *output, std::uint32_t frames) noexcept
Runs on the audio thread (Inline shadow, CPU-only families) or on the shadow thread (Worker).
Definition gpu_neural_model.hpp:24
Provenance and compatibility metadata for a model artifact.
Definition gpu_neural_model.hpp:32
std::string_view architecture
Free-form, except that a Tcn model whose architecture is "nam.tcn" carries its own topology and needs...
Definition gpu_neural_model.hpp:36
std::string_view artifact_sha256
Lower- or upper-case hex SHA-256 of the artifact.
Definition gpu_neural_model.hpp:40
bool local_research
Definition gpu_neural_model.hpp:48
std::uint64_t artifact_size_bytes
Definition gpu_neural_model.hpp:43
std::string_view license
Definition gpu_neural_model.hpp:41
bool redistributable
A shipped model must be redistributable unless built for local research.
Definition gpu_neural_model.hpp:47
std::string_view artifact_id
Definition gpu_neural_model.hpp:38
std::string_view model_id
Definition gpu_neural_model.hpp:33
std::string_view runtime
Definition gpu_neural_model.hpp:42
std::string_view model_version
Definition gpu_neural_model.hpp:37
std::uint32_t sample_rate_hz
Definition gpu_neural_model.hpp:44
Definition gpu_neural_model.hpp:65
std::uint32_t gpu_max_inflight
GPU blocks in flight; at most the session's slots.
Definition gpu_neural_model.hpp:79
const GpuWaveNetSession::Config * wavenet_gpu
WaveNet only: run the GPU path with these session settings (copied).
Definition gpu_neural_model.hpp:75
GpuNeuralModelShape shape
Definition gpu_neural_model.hpp:68
NeuralFamily family
Definition gpu_neural_model.hpp:66
std::span< const GpuNeuralCpuKernel > channel_kernels
One kernel per audio channel.
Definition gpu_neural_model.hpp:71
GpuNeuralModelManifest manifest
Definition gpu_neural_model.hpp:67
std::uint32_t block_size
Definition gpu_neural_model.hpp:69
Definition gpu_neural_model.hpp:94
GpuNeuralModelError error
Definition gpu_neural_model.hpp:96
GpuNeuralModelHandle model
Definition gpu_neural_model.hpp:95
The family's state shape: one layer per family (a single scalar TCN layer, one LSTM/GRU layer,...
Definition gpu_neural_model.hpp:55
std::uint32_t ssm_state_size
Ssm: a diagonal state space.
Definition gpu_neural_model.hpp:62
std::uint32_t tcn_dilation
Definition gpu_neural_model.hpp:58
std::uint32_t tcn_kernel_size
Tcn: one scalar dilated causal layer.
Definition gpu_neural_model.hpp:57
std::uint32_t recurrent_hidden_size
Lstm, Gru: one scalar-input layer.
Definition gpu_neural_model.hpp:60
Definition gpu_wavenet.hpp:123