use std::sync::Arc;
use cudarc::driver::{CudaFunction, CudaModule};
use crate::error::Result;
pub struct KaioModule {
inner: Arc<CudaModule>,
}
impl KaioModule {
pub(crate) fn from_raw(inner: Arc<CudaModule>) -> Self {
Self { inner }
}
pub fn function(&self, name: &str) -> Result<KaioFunction> {
let func = self.inner.load_function(name)?;
Ok(KaioFunction { inner: func })
}
}
pub struct KaioFunction {
inner: CudaFunction,
}
impl KaioFunction {
pub fn inner(&self) -> &CudaFunction {
&self.inner
}
}