Skip to main content

CsrMatrix

Struct CsrMatrix 

Source
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>

Source

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 length rows + 1.
  • col_idx – Column indices of length nnz.
  • values – Non-zero values of length nnz.
§Errors

Returns SparseError::InvalidFormat if array lengths are inconsistent. Returns SparseError::ZeroNnz if values is empty. Returns SparseError::Cuda on GPU memory allocation failure.

Source

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.

Source

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.

Source

pub fn rows(&self) -> u32

Returns the number of rows.

Source

pub fn cols(&self) -> u32

Returns the number of columns.

Source

pub fn nnz(&self) -> u32

Returns the number of non-zero elements.

Source

pub fn density(&self) -> f64

Returns the density of the matrix (nnz / (rows * cols)).

Source

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.

Source

pub fn row_ptr(&self) -> &DeviceBuffer<i32>

Returns a reference to the row pointer device buffer.

Source

pub fn col_idx(&self) -> &DeviceBuffer<i32>

Returns a reference to the column index device buffer.

Source

pub fn values(&self) -> &DeviceBuffer<T>

Returns a reference to the values device buffer.

Source

pub fn values_mut(&mut self) -> &mut DeviceBuffer<T>

Returns a mutable reference to the values device buffer.

Source

pub fn avg_nnz_per_row(&self) -> f64

Average number of non-zeros per row.

Source

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.

Source

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.

Auto Trait Implementations§

§

impl<T> Freeze for CsrMatrix<T>

§

impl<T> RefUnwindSafe for CsrMatrix<T>
where T: RefUnwindSafe,

§

impl<T> Send for CsrMatrix<T>

§

impl<T> Sync for CsrMatrix<T>

§

impl<T> Unpin for CsrMatrix<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for CsrMatrix<T>

§

impl<T> UnwindSafe for CsrMatrix<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more