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