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

Get​Format

Obtain the matrix format

Yes

Yes

Check

Check the matrix for structure and value validity

Yes

No

Allocate​CSR

Allocate CSR matrix

Yes

Yes

Allocate​BCSR

Allocate BCSR matrix

Yes

Yes

Allocate​MCSR

Allocate MCSR matrix

Yes

Yes

Allocate​COO

Allocate COO matrix

Yes

Yes

Allocate​DIA

Allocate DIA matrix

Yes

Yes

Allocate​ELL

Allocate ELL matrix

Yes

Yes

Allocate​HYB

Allocate HYB matrix

Yes

Yes

Allocate​DENSE

Allocate DENSE matrix

Yes

Yes

Set​Data​Ptr​CSR

Initialize matrix with externally allocated CSR data

Yes

Yes

Set​Data​Ptr​MCSR

Initialize matrix with externally allocated MCSR data

Yes

Yes

Set​Data​Ptr​COO

Initialize matrix with externally allocated COO data

Yes

Yes

Set​Data​Ptr​DIA

Initialize matrix with externally allocated DIA data

Yes

Yes

Set​Data​Ptr​ELL

Initialize matrix with externally allocated ELL data

Yes

Yes

Set​Data​Ptr​DENSE

Initialize matrix with externally allocated DENSE data

Yes

Yes

Leave​Data​Ptr​CSR

Direct Memory access

Yes

Yes

Leave​Data​Ptr​MCSR

Direct Memory access

Yes

Yes

Leave​Data​Ptr​COO

Direct Memory access

Yes

Yes

Leave​Data​Ptr​DIA

Direct Memory access

Yes

Yes

Leave​Data​Ptr​ELL

Direct Memory access

Yes

Yes

Leave​Data​Ptr​DENSE

Direct Memory access

Yes

Yes

Zeros

Set all matrix entries to zero

Yes

Yes

Scale

Scale all matrix non-zeros

Yes

Yes

Scale​Diagonal

Scale matrix diagonal

Yes

Yes

Scale​Off​Diagonal

Scale matrix off-diagonal entries

Yes

Yes

Add​Scalar

Add scalar to all matrix non-zeros

Yes

Yes

Add​Scalar​Diagonal

Add scalar to matrix diagonal

Yes

Yes

Add​Scalar​Off​Diagonal

Add scalar to matrix off-diagonal entries

Yes

Yes

Extract​Sub​Matrix

Extract sub-matrix

Yes

Yes

Extract​Sub​Matrices

Extract array of non-overlapping sub-matrices

Yes

Yes

Extract​Diagonal

Extract matrix diagonal

Yes

Yes

Extract​Inverse​Diagonal

Extract inverse matrix diagonal

Yes

Yes

Extract​L

Extract lower triangular matrix

Yes

Yes

Extract​U

Extract upper triangular matrix

Yes

Yes

Permute

(Forward) permute the matrix

Yes

Yes

Permute​Backward

(Backward) permute the matrix

Yes

Yes

CMK

Create CMK permutation vector

Yes

No

RCMK

Create reverse CMK permutation vector

Yes

No

Connectivity​Order

Create connectivity (increasing nnz per row) permutation vector

Yes

No

Multi​Coloring

Create multi-coloring decomposition of the matrix

Yes

No

Maximal​Independent​Set

Create maximal independent set decomposition of the matrix

Yes

No

Zero​Block​Permutation

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

Yes

No

ILU0Factorize

Create ILU(0) factorization

Yes

No

LUFactorize

Create LU factorization

Yes

No

ILUTFactorize

Create ILU(t,m) factorization

Yes

No

ILUp​Factorize

Create ILU(p) factorization

Yes

No

ICFactorize

Create IC factorization

Yes

No

QRDecompose

Create QR decomposition

Yes

No

Read​File​MTX

Read matrix from matrix market file

Yes

No

Write​File​MTX

Write matrix to matrix market file

Yes

No

Read​File​CSR

Read matrix from binary file

Yes

No

Write​File​CSR

Write matrix to binary file

Yes

No

Copy​From

Copy matrix (values and structure) from another LocalMatrix

Yes

Yes

Copy​From​Async

Copy matrix asynchronously

Yes

Yes

Clone​From

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

Yes

Yes

Update​Values​CSR

Update CSR matrix values (structure remains identical)

Yes

Yes

Copy​From​CSR

Copy (import) CSR matrix

Yes

Yes

Copy​To​CSR

Copy (export) CSR matrix

Yes

Yes

Copy​From​COO

Copy (import) COO matrix

Yes

Yes

Copy​To​COO

Copy (export) COO matrix

Yes

Yes

Copy​From​Host​CSR

Allocate and copy (import) a CSR matrix from host

Yes

No

Convert​To​CSR

Convert a matrix to CSR format

Yes

No

Convert​To​MCSR

Convert a matrix to MCSR format

Yes

No

Convert​To​BCSR

Convert a matrix to BCSR format

Yes

No

Convert​To​COO

Convert a matrix to COO format

Yes

Yes

Convert​To​ELL

Convert a matrix to ELL format

Yes

Yes

Convert​To​DIA

Convert a matrix to DIA format

Yes

Yes

Convert​To​HYB

Convert a matrix to HYB format

Yes

Yes

Convert​To​DENSE

Convert a matrix to DENSE format

Yes

No

Convert​To

Convert a matrix

Yes

Symbolic​Power

Perform symbolic power computation (structure only)

Yes

No

Matrix​Add

Matrix addition

Yes

No

Matrix​Mult

Multiply two matrices

Yes

No

Diagonal​Matrix​Mult

Multiply matrix with diagonal matrix (stored in LocalVector)

Yes

Yes

Diagonal​Matrix​Mult​L

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

Yes

Yes

Diagonal​Matrix​Mult​R

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

Yes

Yes

Gershgorin

Compute the spectrum approximation with Gershgorin circles theorem

Yes

No

Compess

Delete all entries where abs(a_ij) <= drop_off

Yes

Yes

Transpose

Transpose the matrix

Yes

No

Sort

Sort the matrix indices

Yes

No

Key

Compute a unique matrix key

Yes

No

Replace​Column​Vector

Replace a column vector of a matrix

Yes

No

Replace​Row​Vector

Replace a row vector of a matrix

Yes

No

Extract​Column​Vector

Extract a column vector of a matrix

Yes

No

Extract​Row​Vector

Extract a row vector of a matrix

Yes

No

LocalVector function

Comment

Host

HIP

Get​Size

Obtain vector size

Yes

Yes

Check

Check vector for valid entries

Yes

No

Allocate

Allocate vector

Yes

Yes

Sync

Synchronize

Yes

Yes

Set​Data​Ptr

Initialize vector with external data

Yes

Yes

Leave​Data​Ptr

Direct Memory Access

Yes

Yes

Zeros

Set vector entries to zero

Yes

Yes

Ones

Set vector entries to one

Yes

Yes

Set​Values

Set vector entries to scalar

Yes

Yes

Set​Random​Uniform

Initialize vector with uniformly distributed random numbers

Yes

No

Set​Random​Normal

Initialize vector with normally distributed random numbers

Yes

No

Read​File​ASCII

Read vector for ASCII file

Yes

No

Write​File​ASCII

Write vector to ASCII file

Yes

No

Read​File​Binary

Read vector from binary file

Yes

No

Write​File​Binary

Write vector to binary file

Yes

No

Copy​From

Copy vector (values) from another LocalVector

Yes

Yes

Copy​From​Async

Copy vector asynchronously

Yes

Yes

Copy​From​Float

Copy vector from another LocalVector<float>

Yes

Yes

Copy​From​Double

Copy vector from another LocalVector<double>

Yes

Yes

Copy​From​Permute

Copy vector under specified (forward) permutation

Yes

Yes

Copy​From​Permute​Backward

Copy vector under specified (backward) permutation

Yes

Yes

Clone​From

Clone vector (values and backend descriptor) from another LocalVector

Yes

Yes

Copy​From​Data

Copy (import) vector from array

Yes

Yes

Copy​To​Data

Copy (export) vector to array

Yes

Yes

Permute

(Foward) permute vector in-place

Yes

Yes

Permute​Backward

(Backward) permute vector in-place

Yes

Yes

Add​Scale

y = a * x + y

Yes

Yes

Scale​Add

y = x + a * y

Yes

Yes

Scale​Add​Scale

y = b * x + a * y

Yes

Yes

Scale​Add2

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

Yes

Yes

Scale

x = a * x

Yes

Yes

Exclusive​Scan

Compute exclusive sum

Yes

No

Dot

Compute dot product

Yes

Yes

Dot​Non​Conj

Compute non-conjugated dot product

Yes

Yes

Norm

Compute L2 norm

Yes

Yes

Reduce

Obtain the sum of all vector entries

Yes

Yes

Asum

Obtain the absolute sum of all vector entries

Yes

Yes

Amax

Obtain the absolute maximum entry of the vector

Yes

Yes

Point​Wise​Mult

Perform point wise multiplication of two vectors

Yes

Yes

Power

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

CG

Building

Yes

Yes

CG

Solving

Yes

Yes

FCG

Building

Yes

Yes

FCG

Solving

Yes

Yes

CR

Building

Yes

Yes

CR

Solving

Yes

Yes

Bi​CGStab

Building

Yes

Yes

Bi​CGStab

Solving

Yes

Yes

Bi​CGStab(l)

Building

Yes

Yes

Bi​CGStab(l)

Solving

Yes

Yes

QMRCGStab

Building

Yes

Yes

QMRCGStab

Solving

Yes

Yes

GMRES

Building

Yes

Yes

GMRES

Solving

Yes

Yes

FGMRES

Building

Yes

Yes

FGMRES

Solving

Yes

Yes

Chebyshev

Building

Yes

Yes

Chebyshev

Solving

Yes

Yes

Mixed-Precision

Building

Yes

Yes

Mixed-Precision

Solving

Yes

Yes

Fixed-Point Iteration

Building

Yes

Yes

Fixed-Point Iteration

Solving

Yes

Yes

AMG (Plain Aggregation)

Building

Yes

No

AMG (Plain Aggregation)

Solving

Yes

Yes

AMG (Smoothed Aggregation)

Building

Yes

No

AMG (Smoothed Aggregation)

Solving

Yes

Yes

AMG (Ruge Stueben)

Building

Yes

No

AMG (Ruge Stueben)

Solving

Yes

Yes

AMG (Pairwise Aggregation)

Building

Yes

No

AMG (Pairwise Aggregation)

Solving

Yes

Yes

LU

Building

Yes

No

LU

Solving

Yes

No

QR

Building

Yes

No

QR

Solving

Yes

No

Inversion

Building

Yes

No

Inversion

Solving

Yes

Yes

Preconditioner

Functionality

Host

HIP

Jacobi

Building

Yes

Yes

Jacobi

Solving

Yes

Yes

Block​Jacobi

Building

Yes

Yes

Block​Jacobi

Solving

Yes

Yes

Multi​Colored​ILU(0,1)

Building

Yes

Yes

Multi​Colored​ILU(0,1)

Solving

Yes

Yes

Multi​Colored​ILU(>0, >1)

Building

Yes

No

Multi​Colored​ILU(>0, >1)

Solving

Yes

Yes

Multi​Elimination(I)LU

Building

Yes

No

Multi​Elimination(I)LU

Solving

Yes

Yes

ILU(0)

Building

Yes

Yes

ILU(0)

Solving

Yes

Yes

ILU(>0)

Building

Yes

No

ILU(>0)

Solving

Yes

No

ILUT

Building

Yes

No

ILUT

Solving

Yes

No

IC(0)

Building

Yes

No

IC(0)

Solving

Yes

No

FSAI

Building

Yes

No

FSAI

Solving

Yes

Yes

SPAI

Building

Yes

No

SPAI

Solving

Yes

Yes

Chebyshev

Building

Yes

No

Chebyshev

Solving

Yes

Yes

Multi​Colored(S)GS

Building

Yes

No

Multi​Colored(S)GS

Solving

Yes

Yes

(S)GS

Building

Yes

No

(S)GS

Solving

Yes

No

(R)AS

Building

Yes

Yes

(R)AS

Solving

Yes

Yes

Block​Preconditioner

Building

Yes

Yes

Block​Preconditioner

Solving

Yes

Yes

Saddle​Point

Building

Yes

No

Saddle​Point

Solving

Yes

Yes