pub trait AccelProvider: Send + Sync {
// Required methods
fn upload(&self, host: &HostTensorView<'_>) -> Result<GpuTensorHandle>;
fn download(&self, h: &GpuTensorHandle) -> Result<HostTensorOwned>;
fn free(&self, h: &GpuTensorHandle) -> Result<()>;
fn device_info(&self) -> String;
// Provided methods
fn elem_add(
&self,
_a: &GpuTensorHandle,
_b: &GpuTensorHandle,
) -> Result<GpuTensorHandle> { ... }
fn elem_mul(
&self,
_a: &GpuTensorHandle,
_b: &GpuTensorHandle,
) -> Result<GpuTensorHandle> { ... }
fn elem_sub(
&self,
_a: &GpuTensorHandle,
_b: &GpuTensorHandle,
) -> Result<GpuTensorHandle> { ... }
fn elem_div(
&self,
_a: &GpuTensorHandle,
_b: &GpuTensorHandle,
) -> Result<GpuTensorHandle> { ... }
fn matmul(
&self,
_a: &GpuTensorHandle,
_b: &GpuTensorHandle,
) -> Result<GpuTensorHandle> { ... }
}Expand description
Device/provider interface that backends implement and register into the runtime layer