Functionality Table#
The following tables give an overview whether a rocALUTION routine is implemented on host backend, accelerator backend, or both.
LocalMatrix and LocalVector classes#
All matrix operations (except SpMV) require a CSR matrix.
Note
If the input matrix is not a CSR matrix, an internal conversion will be performed to CSR format, followed by a back conversion to the previous format after the operation. In this case, a warning message on verbosity level 2 will be printed.
LocalMatrix function 
Comment 
Host 
HIP 

Obtain the matrix format 
Yes 
Yes 

Check the matrix for structure and value validity 
Yes 
No 

Allocate CSR matrix 
Yes 
Yes 

Allocate BCSR matrix 
Yes 
Yes 

Allocate MCSR matrix 
Yes 
Yes 

Allocate COO matrix 
Yes 
Yes 

Allocate DIA matrix 
Yes 
Yes 

Allocate ELL matrix 
Yes 
Yes 

Allocate HYB matrix 
Yes 
Yes 

Allocate DENSE matrix 
Yes 
Yes 

Initialize matrix with externally allocated CSR data 
Yes 
Yes 

Initialize matrix with externally allocated MCSR data 
Yes 
Yes 

Initialize matrix with externally allocated COO data 
Yes 
Yes 

Initialize matrix with externally allocated DIA data 
Yes 
Yes 

Initialize matrix with externally allocated ELL data 
Yes 
Yes 

Initialize matrix with externally allocated DENSE data 
Yes 
Yes 

Direct Memory access 
Yes 
Yes 

Direct Memory access 
Yes 
Yes 

Direct Memory access 
Yes 
Yes 

Direct Memory access 
Yes 
Yes 

Direct Memory access 
Yes 
Yes 

Direct Memory access 
Yes 
Yes 

Set all matrix entries to zero 
Yes 
Yes 

Scale all matrix nonzeros 
Yes 
Yes 

Scale matrix diagonal 
Yes 
Yes 

Scale matrix offdiagonal entries 
Yes 
Yes 

Add scalar to all matrix nonzeros 
Yes 
Yes 

Add scalar to matrix diagonal 
Yes 
Yes 

Add scalar to matrix offdiagonal entries 
Yes 
Yes 

Extract submatrix 
Yes 
Yes 

Extract array of nonoverlapping submatrices 
Yes 
Yes 

Extract matrix diagonal 
Yes 
Yes 

Extract inverse matrix diagonal 
Yes 
Yes 

Extract lower triangular matrix 
Yes 
Yes 

Extract upper triangular matrix 
Yes 
Yes 

(Forward) permute the matrix 
Yes 
Yes 

(Backward) permute the matrix 
Yes 
Yes 

Create CMK permutation vector 
Yes 
No 

Create reverse CMK permutation vector 
Yes 
No 

Create connectivity (increasing nnz per row) permutation vector 
Yes 
No 

Create multicoloring decomposition of the matrix 
Yes 
No 

Create maximal independent set decomposition of the matrix 
Yes 
No 

Create permutation where zero diagonal entries are mapped to the last block 
Yes 
No 

Create ILU(0) factorization 
Yes 
No 

Create LU factorization 
Yes 
No 

Create ILU(t,m) factorization 
Yes 
No 

Create ILU(p) factorization 
Yes 
No 

Create IC factorization 
Yes 
No 

Create QR decomposition 
Yes 
No 

Read matrix from matrix market file 
Yes 
No 

Write matrix to matrix market file 
Yes 
No 

Read matrix from binary file 
Yes 
No 

Write matrix to binary file 
Yes 
No 

Copy matrix (values and structure) from another LocalMatrix 
Yes 
Yes 

Copy matrix asynchronously 
Yes 
Yes 

Clone an entire matrix (values, structure and backend) from another LocalMatrix 
Yes 
Yes 

Update CSR matrix values (structure remains identical) 
Yes 
Yes 

Copy (import) CSR matrix 
Yes 
Yes 

Copy (export) CSR matrix 
Yes 
Yes 

Copy (import) COO matrix 
Yes 
Yes 

Copy (export) COO matrix 
Yes 
Yes 

Allocate and copy (import) a CSR matrix from host 
Yes 
No 

Convert a matrix to CSR format 
Yes 
No 

Convert a matrix to MCSR format 
Yes 
No 

Convert a matrix to BCSR format 
Yes 
No 

Convert a matrix to COO format 
Yes 
Yes 

Convert a matrix to ELL format 
Yes 
Yes 

Convert a matrix to DIA format 
Yes 
Yes 

Convert a matrix to HYB format 
Yes 
Yes 

Convert a matrix to DENSE format 
Yes 
No 

Convert a matrix 
Yes 

Perform symbolic power computation (structure only) 
Yes 
No 

Matrix addition 
Yes 
No 

Multiply two matrices 
Yes 
No 

Multiply matrix with diagonal matrix (stored in LocalVector) 
Yes 
Yes 

Multiply matrix with diagonal matrix (stored in LocalVector) from left 
Yes 
Yes 

Multiply matrix with diagonal matrix (stored in LocalVector) from right 
Yes 
Yes 

Compute the spectrum approximation with Gershgorin circles theorem 
Yes 
No 

Delete all entries where abs(a_ij) <= drop_off 
Yes 
Yes 

Transpose the matrix 
Yes 
No 

Sort the matrix indices 
Yes 
No 

Compute a unique matrix key 
Yes 
No 

Replace a column vector of a matrix 
Yes 
No 

Replace a row vector of a matrix 
Yes 
No 

Extract a column vector of a matrix 
Yes 
No 

Extract a row vector of a matrix 
Yes 
No 
LocalVector function 
Comment 
Host 
HIP 

Obtain vector size 
Yes 
Yes 

Check vector for valid entries 
Yes 
No 

Allocate vector 
Yes 
Yes 

Synchronize 
Yes 
Yes 

Initialize vector with external data 
Yes 
Yes 

Direct Memory Access 
Yes 
Yes 

Set vector entries to zero 
Yes 
Yes 

Set vector entries to one 
Yes 
Yes 

Set vector entries to scalar 
Yes 
Yes 

Initialize vector with uniformly distributed random numbers 
Yes 
No 


Initialize vector with normally distributed random numbers 
Yes 
No 
Read vector for ASCII file 
Yes 
No 

Write vector to ASCII file 
Yes 
No 

Read vector from binary file 
Yes 
No 

Write vector to binary file 
Yes 
No 

Copy vector (values) from another LocalVector 
Yes 
Yes 

Copy vector asynchronously 
Yes 
Yes 

Copy vector from another LocalVector<float> 
Yes 
Yes 

Copy vector from another LocalVector<double> 
Yes 
Yes 

Copy vector under specified (forward) permutation 
Yes 
Yes 

Copy vector under specified (backward) permutation 
Yes 
Yes 

Clone vector (values and backend descriptor) from another LocalVector 
Yes 
Yes 

Copy (import) vector from array 
Yes 
Yes 

Copy (export) vector to array 
Yes 
Yes 

(Foward) permute vector inplace 
Yes 
Yes 

(Backward) permute vector inplace 
Yes 
Yes 

y = a * x + y 
Yes 
Yes 

y = x + a * y 
Yes 
Yes 

y = b * x + a * y 
Yes 
Yes 

z = a * x + b * y + c * z 
Yes 
Yes 

x = a * x 
Yes 
Yes 


Compute exclusive sum 
Yes 
No 
Compute dot product 
Yes 
Yes 

Compute nonconjugated dot product 
Yes 
Yes 

Compute L2 norm 
Yes 
Yes 

Obtain the sum of all vector entries 
Yes 
Yes 

Obtain the absolute sum of all vector entries 
Yes 
Yes 

Obtain the absolute maximum entry of the vector 
Yes 
Yes 

Perform point wise multiplication of two vectors 
Yes 
Yes 

Compute vector power 
Yes 
Yes 
Solver and Preconditioner classes#
Note
The building phase of the iterative solver also depends on the selected preconditioner.
Solver 
Functionality 
Host 
HIP 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
No 

Building 
Yes 
No 

Solving 
Yes 
No 

Building 
Yes 
No 

Solving 
Yes 
Yes 
Preconditioner 
Functionality 
Host 
HIP 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
No 

Building 
Yes 
No 

Solving 
Yes 
No 

Building 
Yes 
No 

Solving 
Yes 
No 

Building 
Yes 
No 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
No 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
Yes 

Solving 
Yes 
Yes 

Building 
Yes 
No 

Solving 
Yes 
Yes 