Make WASI-NN classes send and/or sync (#5077)
* Make send and remove wrapper around WasiNnCtx· This removes the wrapper around WasiNnCtx and no longer requires borrow_mut(). Once send/sync changes in OpenVINO crate are merged in it will allow·use by frameworks that requires this trait. * Bump openvino to compatible version. * BackendExecutionContext should be Send and Sync * Fix rust format issues. * Update Cargo.lock for openvino * Audit changes to openvino crates.
This commit is contained in:
committed by
GitHub
parent
2702619427
commit
f082756643
@@ -4,20 +4,19 @@ use crate::api::{Backend, BackendError, BackendExecutionContext, BackendGraph};
|
||||
use crate::openvino::OpenvinoBackend;
|
||||
use crate::r#impl::UsageError;
|
||||
use crate::witx::types::{Graph, GraphEncoding, GraphExecutionContext};
|
||||
use std::cell::RefCell;
|
||||
use std::collections::HashMap;
|
||||
use std::hash::Hash;
|
||||
use thiserror::Error;
|
||||
use wiggle::GuestError;
|
||||
|
||||
/// Capture the state necessary for calling into the backend ML libraries.
|
||||
pub struct Ctx {
|
||||
pub struct WasiNnCtx {
|
||||
pub(crate) backends: HashMap<u8, Box<dyn Backend>>,
|
||||
pub(crate) graphs: Table<Graph, Box<dyn BackendGraph>>,
|
||||
pub(crate) executions: Table<GraphExecutionContext, Box<dyn BackendExecutionContext>>,
|
||||
}
|
||||
|
||||
impl Ctx {
|
||||
impl WasiNnCtx {
|
||||
/// Make a new context from the default state.
|
||||
pub fn new() -> WasiNnResult<Self> {
|
||||
let mut backends = HashMap::new();
|
||||
@@ -35,20 +34,6 @@ impl Ctx {
|
||||
}
|
||||
}
|
||||
|
||||
/// This struct solely wraps [Ctx] in a `RefCell`.
|
||||
pub struct WasiNnCtx {
|
||||
pub(crate) ctx: RefCell<Ctx>,
|
||||
}
|
||||
|
||||
impl WasiNnCtx {
|
||||
/// Make a new `WasiNnCtx` with the default settings.
|
||||
pub fn new() -> WasiNnResult<Self> {
|
||||
Ok(Self {
|
||||
ctx: RefCell::new(Ctx::new()?),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/// Possible errors while interacting with [WasiNnCtx].
|
||||
#[derive(Debug, Error)]
|
||||
pub enum WasiNnError {
|
||||
|
||||
Reference in New Issue
Block a user