pub struct DeviceCsrMatrix<T: FvmScalar, B: AcceleratorBackend> {
pub row_offsets: B::Buffer<u32>,
pub column_indices: B::Buffer<u32>,
pub values: B::Buffer<T>,
pub row_count: usize,
pub column_count: usize,
pub workspace: Option<B::Buffer<u8>>,
}Expand description
A validated CSR matrix with device-resident structure and values.
Fields§
§row_offsets: B::Buffer<u32>Zero-based row offsets, with row_count + 1 entries.
column_indices: B::Buffer<u32>Zero-based column indices.
values: B::Buffer<T>Nonzero values in row-major CSR order.
row_count: usizeNumber of represented rows.
column_count: usizeRequired input vector length.
workspace: Option<B::Buffer<u8>>Reusable implementation-specific SpMV scratch allocation.
Implementations§
Source§impl<T: FvmScalar, B: AcceleratorBackend> DeviceCsrMatrix<T, B>
impl<T: FvmScalar, B: AcceleratorBackend> DeviceCsrMatrix<T, B>
Sourcepub fn from_pattern(
backend: &B,
pattern: &CsrPattern,
values: &[T],
) -> Result<Self, AcceleratorError>
pub fn from_pattern( backend: &B, pattern: &CsrPattern, values: &[T], ) -> Result<Self, AcceleratorError>
Build a square matrix from a symbolic closure-DOF pattern.
Sourcepub fn from_global_pattern(
backend: &B,
pattern: &GlobalCsrPattern,
values: &[T],
) -> Result<Self, AcceleratorError>
pub fn from_global_pattern( backend: &B, pattern: &GlobalCsrPattern, values: &[T], ) -> Result<Self, AcceleratorError>
Build a compact-row matrix from a globally numbered pattern.
Output rows follow pattern.rows; input columns retain their global
numbers, so column_count is one greater than the largest column.
Source§impl<T: FvmScalar> DeviceCsrMatrix<T, CpuBackend>
impl<T: FvmScalar> DeviceCsrMatrix<T, CpuBackend>
Sourcepub fn spmv(
&self,
alpha: T,
x: &<CpuBackend as AcceleratorBackend>::Buffer<T>,
beta: T,
y: &mut <CpuBackend as AcceleratorBackend>::Buffer<T>,
) -> Result<(), AcceleratorError>
pub fn spmv( &self, alpha: T, x: &<CpuBackend as AcceleratorBackend>::Buffer<T>, beta: T, y: &mut <CpuBackend as AcceleratorBackend>::Buffer<T>, ) -> Result<(), AcceleratorError>
Compute y = alpha * A * x + beta * y in deterministic row order.
Auto Trait Implementations§
impl<T, B> Freeze for DeviceCsrMatrix<T, B>where
<B as AcceleratorBackend>::Buffer<u32>: Freeze,
<B as AcceleratorBackend>::Buffer<T>: Freeze,
<B as AcceleratorBackend>::Buffer<u8>: Freeze,
impl<T, B> RefUnwindSafe for DeviceCsrMatrix<T, B>where
<B as AcceleratorBackend>::Buffer<u32>: RefUnwindSafe,
<B as AcceleratorBackend>::Buffer<T>: RefUnwindSafe,
<B as AcceleratorBackend>::Buffer<u8>: RefUnwindSafe,
impl<T, B> Send for DeviceCsrMatrix<T, B>
impl<T, B> Sync for DeviceCsrMatrix<T, B>
impl<T, B> Unpin for DeviceCsrMatrix<T, B>where
<B as AcceleratorBackend>::Buffer<u32>: Unpin,
<B as AcceleratorBackend>::Buffer<T>: Unpin,
<B as AcceleratorBackend>::Buffer<u8>: Unpin,
impl<T, B> UnsafeUnpin for DeviceCsrMatrix<T, B>where
<B as AcceleratorBackend>::Buffer<u32>: UnsafeUnpin,
<B as AcceleratorBackend>::Buffer<T>: UnsafeUnpin,
<B as AcceleratorBackend>::Buffer<u8>: UnsafeUnpin,
impl<T, B> UnwindSafe for DeviceCsrMatrix<T, B>where
<B as AcceleratorBackend>::Buffer<u32>: UnwindSafe,
<B as AcceleratorBackend>::Buffer<T>: UnwindSafe,
<B as AcceleratorBackend>::Buffer<u8>: UnwindSafe,
Blanket Implementations§
Source§impl<T> AccumulatePathExt for T
impl<T> AccumulatePathExt for T
fn accumulate_path<O, I>(path: I) -> Owhere
O: Orientation,
I: IntoIterator<Item = O>,
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
Mutably borrows from an owned value. Read more