Skip to content

Functionality table

Nico edited this page Jun 17, 2020 · 4 revisions

Exported functions

rocALUTION functionality table

Backend

Function name Comment
init_rocalution Initialize rocALUTION platform
stop_rocalution Stop rocALUTION platform
info_rocalution Print rocALUTION platform information
set_device_rocalution Set rocALUTION device
set_omp_threads_rocalution Set number of OpenMP threads
set_omp_affinity_rocalution Set OpenMP thread affinity
set_omp_threshold_rocalution Set OpenMP size threshold
disable_accelerator_rocalution Disable accelerator usage
rocalution_time Obtain current time in microseconds

Matrix Formats

Format Host HIP
CSR Yes Yes
COO Yes Yes
ELL Yes Yes
DIA Yes Yes
HYB Yes Yes
DENSE Yes Yes
BCSR Yes Yes

All matrix conversions are performed via the CSR format (either as a source or a destination - e.g. DIA cannot be directly converted to ELL).

Solvers

Solver 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
BiCGStab - Building Yes Yes
BiCGStab - Solving Yes Yes
BiCGStab(l) - Building Yes Yes
BiCGStab(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

Preconditioners

Solver Host HIP
Jacobi - Building Yes Yes
Jacobi - Solving Yes Yes
MultiColoredILU(0,1) - Building Yes Yes
MultiColoredILU(0,1) - Solving Yes Yes
MultiColoredILU(>0, >1) - Building Yes No
MultiColoredILU(>0, >1) - Solving Yes Yes
MultiElimination(I)LU - Building Yes No
MultiElimination(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
MultiColored(S)GS - Building Yes No
MultiColored(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
BlockPreconditioner - Building Yes Yes
BlockPreconditioner - Solving Yes Yes
SaddlePoint - Building Yes No
SaddlePoint - Solving Yes Yes

Basic rocALUTION object functionality

All listed routines are available for all rocALUTION objects.

Routine Comment
MoveToAccelerator Move the object to the accelerator backend
MoveToHost Move the object to the host backend
MoveToAcceleratorAsync Move the object to the accelerator backend asynchronously
MoveToHostAsync Move the object to the host backend asynchronously
Sync Sync
CloneBackend Clone the backend descriptor from another object
Info Print object information
Clear Clear the object

Operator functionality

All listed routines are available for all rocALUTION operators.

Routine Comment
GetM Obtain the number of rows in the operator
GetN Obtain the number of columns in the operator
GetNnz Obtain the number of non-zeros in the operator
GetLocalM Obtain the number of rows in the local operator
GetLocalN Obtain the number of columns in the local operator
GetLocalNnz Obtain the number of non-zeros in the local operator
GetGhostM Obtain the number of rows in the ghost operator
GetGhostN Obtain the number of columns in the ghost operator
GetGhostNnz Obtain the number of non-zeros in the ghost operator
Apply Apply the operator
ApplyAdd Apply and add the operator

LocalMatrix and LocalVector functionality

All matrix operations (except SpMV) require a CSR matrix. Note that 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 level 2 will be printed.

Comment Host HIP
LocalMatrix
GetFormat Obtain the matrix format Yes Yes
Check Check the matrix for structure and value validity Yes No
AllocateCSR Allocate CSR matrix Yes Yes
AllocateBCSR Allocate BCSR matrix Yes Yes
AllocateMCSR Allocate MCSR matrix Yes Yes
AllocateCOO Allocate COO matrix Yes Yes
AllocateDIA Allocate DIA matrix Yes Yes
AllocateELL Allocate ELL matrix Yes Yes
AllocateHYB Allocate HYB matrix Yes Yes
AllocateDENSE Allocate DENSE matrix Yes Yes
SetDataPtrCSR Initialize matrix with externally allocated CSR data Yes Yes
SetDataPtrMCSR Initialize matrix with externally allocated MCSR data Yes Yes
SetDataPtrCOO Initialize matrix with externally allocated COO data Yes Yes
SetDataPtrDIA Initialize matrix with externally allocated DIA data Yes Yes
SetDataPtrELL Initialize matrix with externally allocated ELL data Yes Yes
SetDataPtrDENSE Initialize matrix with externally allocated DENSE data Yes Yes
LeaveDataPtrCSR Direct Memory access Yes Yes
LeaveDataPtrMCSR Direct Memory access Yes Yes
LeaveDataPtrCOO Direct Memory access Yes Yes
LeaveDataPtrDIA Direct Memory access Yes Yes
LeaveDataPtrELL Direct Memory access Yes Yes
LeaveDataPtrDENSE Direct Memory access Yes Yes
Zeros Set all matrix entries to zero Yes Yes
Scale Scale all matrix non-zeros Yes Yes
ScaleDiagonal Scale matrix diagonal Yes Yes
ScaleOffDiagonal Scale matrix off-diagonal entries Yes Yes
AddScalar Add scalar to all matrix non-zeros Yes Yes
AddScalarDiagonal Add scalar to matrix diagonal Yes Yes
AddScalarOffDiagonal Add scalar to matrix off-diagonal entries Yes Yes
ExtractSubMatrix Extract sub-matrix Yes Yes
ExtractSubMatrices Extract array of non-overlapping sub-matrices Yes Yes
ExtractDiagonal Extract matrix diagonal Yes Yes
ExtractInverseDiagonal Extract inverse matrix diagonal Yes Yes
ExtractL Extract lower triangular matrix Yes Yes
ExtractU Extract upper triangular matrix Yes Yes
Permute (Forward) permute the matrix Yes Yes
PermuteBackward (Backward) permute the matrix Yes Yes
CMK Create CMK permutation vector Yes No
RCMK Create reverse CMK permutation vector Yes No
ConnectivityOrder Create connectivity (increasing nnz per row) permutation vector Yes No
MultiColoring Create multi-coloring decomposition of the matrix Yes No
MaximalIndependentSet Create maximal independent set decomposition of the matrix Yes No
ZeroBlockPermutation Create permutation where zero diagonal entries are mapped to the last block Yes No
ILU0Factorize Create ILU(0) factorization Yes Yes
LUFactorize Create LU factorization Yes No
ILUTFactorize Create ILU(t,m) factorization Yes No
ILUpFactorize Create ILU(p) factorization Yes No
ICFactorize Create IC factorization Yes Yes
QRDecompose Create QR decomposition Yes No
ReadFileMTX Read matrix from matrix market file Yes No
WriteFileMTX Write matrix to matrix market file Yes No
ReadFileCSR Read matrix from binary file Yes No
WriteFileCSR Write matrix to binary file Yes No
CopyFrom Copy matrix (values and structure) from another LocalMatrix Yes Yes
CopyFromAsync Copy matrix asynchronously Yes Yes
CloneFrom Clone an entire matrix (values, structure and backend) from another LocalMatrix Yes Yes
UpdateValuesCSR Update CSR matrix values (structure remains identical) Yes Yes
CopyFromCSR Copy (import) CSR matrix Yes Yes
CopyToCSR Copy (export) CSR matrix Yes Yes
CopyFromCOO Copy (import) COO matrix Yes Yes
CopyToCOO Copy (export) COO matrix Yes Yes
CopyFromHostCSR Allocate and copy (import) a CSR matrix from host Yes No
ConvertToCSR Convert a matrix to CSR format Yes Yes
ConvertToMCSR Convert a matrix to MCSR format Yes No
ConvertToBCSR Convert a matrix to BCSR format Yes Yes
ConvertToCOO Convert a matrix to COO format Yes Yes
ConvertToELL Convert a matrix to ELL format Yes Yes
ConvertToDIA Convert a matrix to DIA format Yes Yes
ConvertToHYB Convert a matrix to HYB format Yes Yes
ConvertToDENSE Convert a matrix to DENSE format Yes Yes
ConvertTo Convert a matrix Yes
SymbolicPower Perform symbolic power computation (structure only) Yes No
MatrixAdd Matrix addition Yes Yes
MatrixMult Multiply two matrices Yes Yes
DiagonalMatrixMult Multiply matrix with diagonal matrix (stored in LocalVector) Yes Yes
DiagonalMatrixMultL Multiply matrix with diagonal matrix (stored in LocalVector) from left Yes Yes
DiagonalMatrixMultR Multiply matrix with diagonal matrix (stored in LocalVector) from right Yes Yes
Gershgorin Compute the spectrum approximation with Gershgorin circles theorem Yes No
Compress Delete all entries where abs(a_ij) <= drop_off Yes Yes
Transpose Transpose the matrix Yes Yes
Sort Sort the matrix indices Yes No
Key Compute a unique matrix key Yes No
ReplaceColumnVector Replace a column vector of a matrix Yes No
ReplaceRowVector Replace a row vector of a matrix Yes No
ExtractColumnVector Extract a column vector of a matrix Yes No
ExtractRowVector Extract a row vector of a matrix Yes No
LocalVector
GetSize Obtain vector size Yes Yes
Check Check vector for valid entries Yes No
Allocate Allocate vector Yes Yes
Sync Sync Yes Yes
SetDataPtr Initialize vector with external data Yes Yes
LeaveDataPtr Direct Memory Access Yes Yes
Zeros Set vector entries to zero Yes Yes
Ones Set vector entries to one Yes Yes
SetValues Set vector entries to scalar Yes Yes
SetRandomUniform Initialize vector with uniformly distributed random numbers Yes No
SetRandomNorm Initialize vector with normally distributed random numbers Yes No
ReadFileASCII Read vector for ASCII file Yes No
WriteFileASCII Write vector to ASCII file Yes No
ReadFileBinary Read vector from binary file Yes No
WriteFileBinary Write vector to binary file Yes No
CopyFrom Copy vector (values) from another LocalVector Yes Yes
CopyFromAsync Copy vector asynchronously Yes Yes
CopyFromFloat Copy vector from another LocalVector Yes Yes
CopyFromDouble Copy vector from another LocalVector Yes Yes
CopyFromPermute Copy vector under specified (forward) permutation Yes Yes
CopyFromPermuteBackward Copy vector under specified (backward) permutation Yes Yes
CloneFrom Clone vector (values and backend descriptor) from another LocalVector Yes Yes
CopyFromData Copy (import) vector from array Yes Yes
CopyToData Copy (export) vector to array Yes Yes
Permute (Foward) permute vector in-place Yes Yes
PermuteBackward (Backward) permute vector in-place Yes Yes
AddScale y = a * x + y Yes Yes
ScaleAdd y = x + a * y Yes Yes
ScaleAddScale y = b * x + a * y Yes Yes
ScaleAdd2 z = a * x + b * y + c * z Yes Yes
Scale x = a * x Yes Yes
ExclusiveScan Compute exclusive sum Yes No
Dot Compute dot product Yes Yes
DotNonConj 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
PointWiseMult Perform point wise multiplication of two vectors Yes Yes
Power Compute vector power Yes Yes

ParallelManager functionality (MPI required)

Comment
SetMPICommunicator Set MPI communicator
GetGlobalSize Get global size
GetLocalSize Get local size
GetNumReceivers Get number of receivers
GetNumSenders Get number of senders
GetNumProcs Get number of processes
SetGlobalSize Set global size
SetLocalSize Set local size
SetBoundaryIndex Set boundary indices
SetReceivers Set number of receivers, array of receiver process number and start offsets
SetSenders Set number of senders, array of sender process number and start offsets
Status Check status
ReadFileASCII Read ParallelManager from ASCII file
WriteFileASCII Write ParallelManager to ASCII file