pub struct GpuDevice {
pub adapter_name: String,
pub backend: String,
/* private fields */
}Expand description
GPU device handle. wgpu picks the right backend — Vulkan, Metal, DX12. One codepath, every vendor.
Fields§
§adapter_name: String§backend: StringImplementations§
Source§impl GpuDevice
impl GpuDevice
Sourcepub fn gpu() -> Result<Self>
pub fn gpu() -> Result<Self>
Discover the best GPU and initialize it. wgpu auto-selects the backend: Vulkan on Linux (AMD/NVIDIA/Intel), Metal on macOS, DX12 on Windows.
Source§impl GpuDevice
impl GpuDevice
pub fn add(&self, a: &GpuBuffer, b: &GpuBuffer) -> Result<GpuBuffer>
pub fn sub(&self, a: &GpuBuffer, b: &GpuBuffer) -> Result<GpuBuffer>
pub fn mul(&self, a: &GpuBuffer, b: &GpuBuffer) -> Result<GpuBuffer>
pub fn relu(&self, a: &GpuBuffer) -> Result<GpuBuffer>
pub fn sigmoid(&self, a: &GpuBuffer) -> Result<GpuBuffer>
pub fn swish(&self, a: &GpuBuffer) -> Result<GpuBuffer>
pub fn tanh_act(&self, a: &GpuBuffer) -> Result<GpuBuffer>
pub fn scale(&self, a: &GpuBuffer, s: f32) -> Result<GpuBuffer>
Sourcepub fn relu_backward(
&self,
grad_out: &GpuBuffer,
input: &GpuBuffer,
) -> Result<GpuBuffer>
pub fn relu_backward( &self, grad_out: &GpuBuffer, input: &GpuBuffer, ) -> Result<GpuBuffer>
ReLU backward: grad_a = grad_out * (input > 0)
Sourcepub fn sigmoid_backward(
&self,
grad_out: &GpuBuffer,
output: &GpuBuffer,
) -> Result<GpuBuffer>
pub fn sigmoid_backward( &self, grad_out: &GpuBuffer, output: &GpuBuffer, ) -> Result<GpuBuffer>
Sigmoid backward: grad_a = grad_out * output * (1 - output)
Source§impl GpuDevice
impl GpuDevice
Sourcepub fn matmul(
&self,
a: &GpuBuffer,
b: &GpuBuffer,
m: u32,
n: u32,
k: u32,
) -> Result<GpuBuffer>
pub fn matmul( &self, a: &GpuBuffer, b: &GpuBuffer, m: u32, n: u32, k: u32, ) -> Result<GpuBuffer>
Matrix multiply: A(m,k) x B(k,n) = C(m,n). Row-major layout.
Sourcepub fn batch_matmul(
&self,
a: &GpuBuffer,
b: &GpuBuffer,
batch: u32,
m: u32,
n: u32,
k: u32,
) -> Result<GpuBuffer>
pub fn batch_matmul( &self, a: &GpuBuffer, b: &GpuBuffer, batch: u32, m: u32, n: u32, k: u32, ) -> Result<GpuBuffer>
Batched matmul: A[batch,m,k] x B[batch,k,n] = C[batch,m,n].
Sourcepub fn conv2d(
&self,
input: &GpuBuffer,
weight: &GpuBuffer,
bias: Option<&GpuBuffer>,
batch: u32,
in_c: u32,
in_h: u32,
in_w: u32,
out_c: u32,
kh: u32,
kw: u32,
stride: (u32, u32),
padding: (u32, u32),
dilation: (u32, u32),
groups: u32,
) -> Result<GpuBuffer>
pub fn conv2d( &self, input: &GpuBuffer, weight: &GpuBuffer, bias: Option<&GpuBuffer>, batch: u32, in_c: u32, in_h: u32, in_w: u32, out_c: u32, kh: u32, kw: u32, stride: (u32, u32), padding: (u32, u32), dilation: (u32, u32), groups: u32, ) -> Result<GpuBuffer>
Conv2d: input[N,C_in,H,W] * weight[C_out,C_in/groups,kH,kW] + bias[C_out]. NCHW layout. Returns output[N,C_out,out_H,out_W].
Sourcepub fn conv_transpose2d(
&self,
input: &GpuBuffer,
weight: &GpuBuffer,
bias: Option<&GpuBuffer>,
batch: u32,
in_c: u32,
in_h: u32,
in_w: u32,
out_c: u32,
kh: u32,
kw: u32,
stride: (u32, u32),
padding: (u32, u32),
output_padding: (u32, u32),
dilation: (u32, u32),
groups: u32,
) -> Result<GpuBuffer>
pub fn conv_transpose2d( &self, input: &GpuBuffer, weight: &GpuBuffer, bias: Option<&GpuBuffer>, batch: u32, in_c: u32, in_h: u32, in_w: u32, out_c: u32, kh: u32, kw: u32, stride: (u32, u32), padding: (u32, u32), output_padding: (u32, u32), dilation: (u32, u32), groups: u32, ) -> Result<GpuBuffer>
Transposed conv2d (deconvolution): input[N,C_in,H,W] -> output[N,C_out,out_H,out_W]. Weight layout: [C_in, C_out/groups, kH, kW].
Source§impl GpuDevice
impl GpuDevice
Source§impl GpuDevice
impl GpuDevice
Sourcepub fn softmax(
&self,
input: &GpuBuffer,
rows: u32,
cols: u32,
) -> Result<GpuBuffer>
pub fn softmax( &self, input: &GpuBuffer, rows: u32, cols: u32, ) -> Result<GpuBuffer>
Softmax along the last dimension. Input shape: [rows, cols].