Functionality table#
The following tables list the rocALUTION routines along with the information about the implementation location i.e. 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 is 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 is 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 non-zeros | Yes | Yes | |
| Scale matrix diagonal | Yes | Yes | |
| Scale matrix off-diagonal entries | Yes | Yes | |
| Add scalar to all matrix non-zeros | Yes | Yes | |
| Add scalar to matrix diagonal | Yes | Yes | |
| Add scalar to matrix off-diagonal entries | Yes | Yes | |
| Extract sub-matrix | Yes | Yes | |
| Extract array of non-overlapping sub-matrices | 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 multi-coloring 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 in-place | Yes | Yes | |
| (Backward) permute vector in-place | 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 non-conjugated 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 |