pub(crate) mod accounting;
pub mod allocations;
pub(crate) mod capabilities;
pub(crate) mod copy;
pub mod cuda_graph;
pub(crate) mod cuda_graph_replay;
pub mod dispatch;
pub(crate) mod dispatch_phase_probe;
pub(crate) mod host_dispatch;
pub(crate) mod host_memory;
pub(crate) mod launch;
pub(crate) mod launch_params;
pub(crate) mod module_cache;
pub(crate) mod ordering;
pub(crate) mod output_range;
pub(crate) mod plan;
pub(crate) mod ptx_target;
pub(crate) mod resident;
pub(crate) mod resident_dispatch;
pub(crate) mod resident_dispatch_support;
pub(crate) mod resident_io;
pub(crate) mod resident_readback_fusion;
pub(crate) mod resident_upload_fusion;
pub(crate) mod staging_reserve;
pub mod stream_ordered_pool;
pub(crate) mod telemetry;
fn required_input<'a>(
inputs: &'a [&[u8]],
input_index: usize,
binding_name: &str,
context: &'static str,
prefix: &str,
input_kind: &str,
fix: &str,
) -> Result<&'a [u8], vyre_driver::BackendError> {
inputs
.get(input_index)
.copied()
.ok_or_else(|| vyre_driver::BackendError::InvalidProgram {
fix: format!(
"Fix: {prefix} {context} expected {input_kind} index {input_index} for `{binding_name}` but only {} {input_kind}(s) were supplied. {fix}",
inputs.len()
),
})
}
macro_rules! define_required_input {
($name:ident, $prefix:literal, $input_kind:literal, $fix:literal) => {
fn $name<'a>(
inputs: &'a [&[u8]],
input_index: usize,
binding_name: &str,
context: &'static str,
) -> Result<&'a [u8], vyre_driver::BackendError> {
super::required_input(
inputs,
input_index,
binding_name,
context,
$prefix,
$input_kind,
$fix,
)
}
};
}
pub(crate) use define_required_input;
pub(crate) use allocations::*;
pub(crate) use module_cache::ModuleCacheKey;
pub(crate) use plan::CudaDispatchPlan;
pub(crate) use resident::{resident_bindings_from_handles, ResidentUseGuard};
pub(crate) use resident_dispatch_support::CudaResidentDispatchStep;
pub use cuda_graph::CachedCudaGraph;
pub use dispatch::CudaBackend;
pub use module_cache::CudaPtxSourceCacheSnapshot;
pub use resident::CudaResidentBuffer;
pub use stream_ordered_pool::CudaStreamOrderedPool;
pub use telemetry::CudaTelemetrySnapshot;