1use kime_model::Model;
4use kime_tensor::{Buckets, Executor, HostTensor, Result};
5
6use crate::{CudaBackend, Precision};
7
8pub fn executor(
15 model: &Model,
16 ordinal: usize,
17 precision: Precision,
18) -> Result<Executor<CudaBackend>> {
19 let t = &model.tensors;
20 let host: Vec<HostTensor<'_>> = (0..t.entries().len())
21 .map(|i| {
22 let v = t.view(i);
23 HostTensor { dtype: v.dtype, shape: v.shape, bytes: v.bytes }
24 })
25 .collect();
26 let plan = model.graph.plan(&model.spec);
27 let vocab = model.spec.encoder.vocab;
28 Executor::new(
29 CudaBackend::new(ordinal, precision)?,
30 &host,
31 plan,
32 &Buckets::default(),
33 "compat",
34 vocab,
35 3,
36 )
37}