pub struct CooMatrix<T: GpuFloat> { /* private fields */ }Expand description
A sparse matrix in Coordinate (COO) format, stored on GPU.
The matrix has shape (rows, cols) with nnz non-zero elements.
Each non-zero is represented by its row index, column index, and value.
Implementations§
Source§impl<T: GpuFloat> CooMatrix<T>
impl<T: GpuFloat> CooMatrix<T>
Sourcepub fn from_host(
rows: u32,
cols: u32,
row_idx: &[i32],
col_idx: &[i32],
values: &[T],
) -> SparseResult<Self>
pub fn from_host( rows: u32, cols: u32, row_idx: &[i32], col_idx: &[i32], values: &[T], ) -> SparseResult<Self>
Creates a COO matrix from host-side arrays, uploading to GPU.
The triplets are assumed to be unsorted unless the caller knows
otherwise (use with_sorted to override).
§Arguments
rows– Number of rows.cols– Number of columns.row_idx– Row indices of lengthnnz.col_idx– Column indices of lengthnnz.values– Non-zero values of lengthnnz.
§Errors
Returns SparseError::InvalidFormat if array lengths are inconsistent.
Sourcepub fn from_device(
rows: u32,
cols: u32,
nnz: u32,
row_idx: DeviceBuffer<i32>,
col_idx: DeviceBuffer<i32>,
values: DeviceBuffer<T>,
) -> SparseResult<Self>
pub fn from_device( rows: u32, cols: u32, nnz: u32, row_idx: DeviceBuffer<i32>, col_idx: DeviceBuffer<i32>, values: DeviceBuffer<T>, ) -> SparseResult<Self>
Creates a COO matrix from pre-allocated device buffers.
This is the unchecked escape hatch: only buffer lengths are
validated. The contents of row_idx/col_idx are not range
checked against rows/cols. Passing indices outside
[0, rows)/[0, cols) will cause out-of-bounds device memory
access in downstream operations (e.g. to_csr,
to_csc, or SpMV/SpMM kernels). Callers are
responsible for ensuring indices are in range before calling this
constructor; prefer from_host when the data
originates on the host, as it validates the full range.
§Errors
Returns SparseError::InvalidFormat if buffer lengths are inconsistent.
Sourcepub fn with_sorted(self, sorted: bool) -> Self
pub fn with_sorted(self, sorted: bool) -> Self
Mark the COO matrix as sorted by (row, col).
This is a hint for conversion routines; the caller is responsible for ensuring correctness.
Sourcepub fn to_host(&self) -> SparseResult<(Vec<i32>, Vec<i32>, Vec<T>)>
pub fn to_host(&self) -> SparseResult<(Vec<i32>, Vec<i32>, Vec<T>)>
Downloads the COO arrays from GPU to host memory.
§Errors
Returns SparseError::Cuda on transfer failure.
Sourcepub fn to_csr(&self) -> SparseResult<CsrMatrix<T>>
pub fn to_csr(&self) -> SparseResult<CsrMatrix<T>>
Converts this COO matrix to CSR format.
Downloads to host, builds row pointers via histogram, then uploads.
§Errors
Returns SparseError::Cuda on transfer failure. Returns
SparseError::InvalidFormat if any downloaded row or column
index is out of range (this can happen for matrices constructed
via the unchecked from_device constructor).
Sourcepub fn to_csc(&self) -> SparseResult<CscMatrix<T>>
pub fn to_csc(&self) -> SparseResult<CscMatrix<T>>
Converts this COO matrix to CSC format.
Downloads to host, builds column pointers, then uploads.
§Errors
Returns SparseError::Cuda on transfer failure. Returns
SparseError::InvalidFormat if any downloaded row or column
index is out of range (this can happen for matrices constructed
via the unchecked from_device constructor).
Sourcepub fn row_idx(&self) -> &DeviceBuffer<i32>
pub fn row_idx(&self) -> &DeviceBuffer<i32>
Returns a reference to the row index device buffer.
Sourcepub fn col_idx(&self) -> &DeviceBuffer<i32>
pub fn col_idx(&self) -> &DeviceBuffer<i32>
Returns a reference to the column index device buffer.
Sourcepub fn values(&self) -> &DeviceBuffer<T>
pub fn values(&self) -> &DeviceBuffer<T>
Returns a reference to the values device buffer.