ruda-kernel 0.1.0

Ruda Rust kernel DSL and device tensor operations.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use alloc::{vec, vec::Vec};
use ruda_core::ir::Visibility;
use ruda::runtime::server::KernelArguments;
use ruda_compiler::cpp::shared::MslComputeKernel;

pub fn bindings(
    repr: &MslComputeKernel,
    args: &KernelArguments,
) -> (Vec<Visibility>, Option<Visibility>, bool) {
    let mut bindings: Vec<Visibility> = vec![];
    // must be in the same order as the compilation order: inputs, outputs and named
    for b in repr.buffers.iter() {
        bindings.push(b.vis);
    }
    let info = (!args.info.data.is_empty()).then_some(Visibility::Read);
    let uniform = args.info.dynamic_metadata_offset >= args.info.data.len();
    (bindings, info, uniform)
}