use async_cuda::runtime::Future;
use crate::engine::Engine;
use crate::ffi::memory::HostBuffer;
use crate::ffi::sync::runtime::Runtime as InnerRuntime;
type Result<T> = std::result::Result<T, crate::error::Error>;
pub struct Runtime {
inner: InnerRuntime,
}
impl Runtime {
pub async fn new() -> Self {
let inner = Future::new(InnerRuntime::new).await;
Self { inner }
}
pub async fn deserialize_engine_from_plan(self, plan: &HostBuffer) -> Result<Engine> {
Future::new(move || {
self.inner
.deserialize_engine_from_plan(plan)
.map(Engine::from_inner)
})
.await
}
pub async fn deserialize_engine(self, buffer: &[u8]) -> Result<Engine> {
Future::new(move || {
self.inner
.deserialize_engine(buffer)
.map(Engine::from_inner)
})
.await
}
}