pub struct GpuArrayOps;Expand description
GPU array operations.
add_arrays/multiply_arrays/matrix_multiply dispatch to a real
oxicuda-backed GPU (via sklears_core::gpu) when built with the gpu
feature and device_id names an actual present device; otherwise (no
gpu feature, or no such device on this host) they transparently fall
back to the CPU implementation below – same pattern as
sklears-svm’s DeviceNotAvailable skip. apply_activation/
reduce_sum/reduce_max remain CPU-only: there is no oxicuda-primitives
elementwise/reduction kernel wired for them yet (deferred 2026-07-06, see
TODO.md).
Implementations§
Source§impl GpuArrayOps
impl GpuArrayOps
Sourcepub fn add_arrays(
a: &[f32],
b: &[f32],
device_id: u32,
) -> Result<Vec<f32>, GpuError>
pub fn add_arrays( a: &[f32], b: &[f32], device_id: u32, ) -> Result<Vec<f32>, GpuError>
Add two arrays, on GPU if device_id names a present device and this
crate was built with the gpu feature, on CPU otherwise.
Sourcepub fn multiply_arrays(
a: &[f32],
b: &[f32],
device_id: u32,
) -> Result<Vec<f32>, GpuError>
pub fn multiply_arrays( a: &[f32], b: &[f32], device_id: u32, ) -> Result<Vec<f32>, GpuError>
Multiply two arrays elementwise, on GPU if device_id names a
present device and this crate was built with the gpu feature, on
CPU otherwise.
Sourcepub fn matrix_multiply(
a: &[f32],
b: &[f32],
m: usize,
n: usize,
k: usize,
device_id: u32,
) -> Result<Vec<f32>, GpuError>
pub fn matrix_multiply( a: &[f32], b: &[f32], m: usize, n: usize, k: usize, device_id: u32, ) -> Result<Vec<f32>, GpuError>
Matrix multiplication (a is m x k, b is k x n, row-major), on
GPU if device_id names a present device and this crate was built
with the gpu feature, on CPU otherwise.
Sourcepub fn apply_activation(
input: &[f32],
activation: ActivationFunction,
_device_id: u32,
) -> Result<Vec<f32>, GpuError>
pub fn apply_activation( input: &[f32], activation: ActivationFunction, _device_id: u32, ) -> Result<Vec<f32>, GpuError>
Apply activation function.
CPU-only: no oxicuda elementwise kernel is wired for activation
functions yet (deferred 2026-07-06, see TODO.md). device_id is
accepted for API symmetry with the other ops but unused.
Auto Trait Implementations§
impl Freeze for GpuArrayOps
impl RefUnwindSafe for GpuArrayOps
impl Send for GpuArrayOps
impl Sync for GpuArrayOps
impl Unpin for GpuArrayOps
impl UnsafeUnpin for GpuArrayOps
impl UnwindSafe for GpuArrayOps
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more