pub struct CsrMatrix<T: GpuFloat> { /* private fields */ }Expand description
A sparse matrix in Compressed Sparse Row (CSR) format, stored on GPU.
The matrix has shape (rows, cols) with nnz non-zero elements.
All index and value arrays reside in device (GPU) memory.
Implementations§
Source§impl<T: GpuFloat> CsrMatrix<T>
impl<T: GpuFloat> CsrMatrix<T>
Sourcepub fn from_host(
rows: u32,
cols: u32,
row_ptr: &[i32],
col_idx: &[i32],
values: &[T],
) -> SparseResult<Self>
pub fn from_host( rows: u32, cols: u32, row_ptr: &[i32], col_idx: &[i32], values: &[T], ) -> SparseResult<Self>
Creates a CSR matrix from host-side arrays, uploading to GPU.
§Arguments
rows– Number of rows.cols– Number of columns.row_ptr– Row pointer array of lengthrows + 1.col_idx– Column indices of lengthnnz.values– Non-zero values of lengthnnz.
§Errors
Returns SparseError::InvalidFormat if array lengths are inconsistent.
Returns SparseError::ZeroNnz if values is empty.
Returns SparseError::Cuda on GPU memory allocation failure.
Sourcepub fn from_device(
rows: u32,
cols: u32,
nnz: u32,
row_ptr: DeviceBuffer<i32>,
col_idx: DeviceBuffer<i32>,
values: DeviceBuffer<T>,
) -> SparseResult<Self>
pub fn from_device( rows: u32, cols: u32, nnz: u32, row_ptr: DeviceBuffer<i32>, col_idx: DeviceBuffer<i32>, values: DeviceBuffer<T>, ) -> SparseResult<Self>
Creates a CSR matrix from pre-allocated device buffers.
No validation of contents is performed; only lengths are checked.
§Errors
Returns SparseError::InvalidFormat if buffer lengths are inconsistent.
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 CSR arrays from GPU to host memory.
§Errors
Returns SparseError::Cuda on transfer failure.
Sourcepub fn is_valid(&self) -> bool
pub fn is_valid(&self) -> bool
Checks whether the matrix metadata is structurally valid.
This checks buffer lengths but does NOT download data to verify
content (e.g. sorted column indices). For full validation, use
to_host and check on the CPU.
Sourcepub fn row_ptr(&self) -> &DeviceBuffer<i32>
pub fn row_ptr(&self) -> &DeviceBuffer<i32>
Returns a reference to the row pointer 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.
Sourcepub fn values_mut(&mut self) -> &mut DeviceBuffer<T>
pub fn values_mut(&mut self) -> &mut DeviceBuffer<T>
Returns a mutable reference to the values device buffer.
Sourcepub fn avg_nnz_per_row(&self) -> f64
pub fn avg_nnz_per_row(&self) -> f64
Average number of non-zeros per row.
Sourcepub fn to_coo(&self) -> SparseResult<CooMatrix<T>>
pub fn to_coo(&self) -> SparseResult<CooMatrix<T>>
Converts this CSR matrix to COO format on the host.
Downloads data to host, expands row pointers to row indices, then uploads the COO matrix back to GPU.
§Errors
Returns SparseError::Cuda on transfer failure.
Sourcepub fn to_csc(&self) -> SparseResult<CscMatrix<T>>
pub fn to_csc(&self) -> SparseResult<CscMatrix<T>>
Converts this CSR matrix to CSC format on the host.
Downloads data, transposes the structure, then uploads.
§Errors
Returns SparseError::Cuda on transfer failure.