rocALUTION Documentation¶
rocALUTION is a sparse linear algebra library with focus on exploring fine-grained parallelism on top of AMD’s Radeon Open Compute ROCm runtime and toolchains, targeting modern CPU and GPU platforms. Based on C++ and HIP, it provides a portable, generic and flexible design that allows seamless integration with other scientific software packages.
In the following, three separate chapters are available:
User Manual: This is the manual of rocALUTION. It can be seen as a starting guide for new users but also a reference book for more experienced users.
Design Documentation: The Design Document is targeted to advanced users / developers that want to understand, modify or extend the functionality of the rocALUTION library. To embed rocALUTION into your project, it is not required to read the Design Document.
API: This is a list of API functions provided by rocALUTION.
Contents:
- Design Documentation
- User Manual
- Introduction
- Building and Installing
- Basics
- Single-node Computation
- Multi-node Computation
- Solvers
- Code Structure
- Iterative Linear Solvers
- Building and Solving Phase
- Clear Function and Destructor
- Numerical Update
- Fixed-Point Iteration
- Krylov Subspace Solvers
- Chebyshev Iteration Scheme
- Mixed-Precision Defect Correction Scheme
- MultiGrid Solvers
- Unsmoothed Aggregation AMG
- Smoothed Aggregation AMG
- Ruge-Stueben AMG
- Pairwise AMG
- Direct Linear Solvers
- Preconditioners
rocalution::Preconditioner- Code Structure
- Jacobi Method
- (Symmetric) Gauss-Seidel / (S)SOR Method
- Incomplete Factorizations
- AI Chebyshev
- FSAI
- SPAI
- TNS
- MultiColored Preconditioners
- Multi-Elimination Incomplete LU
- Diagonal Preconditioner for Saddle-Point Problems
- (Restricted) Additive Schwarz Preconditioner
- Block-Jacobi (MPI) Preconditioner
- Block Preconditioner
- Variable Preconditioner
- Backends
- Remarks
- Supported Targets
- API
- Host Utility Functions
- Backend Manager
- Base Rocalution
- Operator
- Vector
rocalution::VectorCopyFrom()CopyFrom()CloneFrom()CloneFrom()GetSize()GetLocalSize()GetGhostSize()Check()Clear()Zeros()Ones()SetValues()SetRandomUniform()SetRandomNormal()ReadFileASCII()WriteFileASCII()ReadFileBinary()WriteFileBinary()CopyFromAsync()CopyFromFloat()CopyFromDouble()CopyFrom()AddScale()AddScale()ScaleAdd()ScaleAdd()ScaleAddScale()ScaleAddScale()ScaleAddScale()ScaleAddScale()ScaleAdd2()ScaleAdd2()Scale()Dot()Dot()DotNonConj()DotNonConj()Norm()Reduce()Asum()Amax()PointWiseMult()PointWiseMult()PointWiseMult()PointWiseMult()Power()
- Local Matrix
rocalution::LocalMatrixAllocateCSR()AllocateBCSR()AllocateMCSR()AllocateCOO()AllocateDIA()AllocateELL()AllocateHYB()AllocateDENSE()SetDataPtrCOO()SetDataPtrCSR()SetDataPtrBCSR()SetDataPtrMCSR()SetDataPtrELL()SetDataPtrDIA()SetDataPtrDENSE()LeaveDataPtrCOO()LeaveDataPtrCSR()LeaveDataPtrBCSR()LeaveDataPtrMCSR()LeaveDataPtrELL()LeaveDataPtrDIA()LeaveDataPtrDENSE()Info()GetFormat()GetBlockDimension()GetM()GetN()GetNnz()Check()Clear()Zeros()Scale()ScaleDiagonal()ScaleOffDiagonal()AddScalar()AddScalarDiagonal()AddScalarOffDiagonal()ExtractSubMatrix()ExtractSubMatrices()ExtractDiagonal()ExtractInverseDiagonal()ExtractU()ExtractL()Permute()PermuteBackward()CMK()RCMK()ConnectivityOrder()MultiColoring()MaximalIndependentSet()ZeroBlockPermutation()ILU0Factorize()LUFactorize()ILUTFactorize()ILUpFactorize()LUAnalyse()LUAnalyseClear()LUSolve()ICFactorize()LLAnalyse()LLAnalyseClear()LLSolve()LLSolve()LAnalyse()LAnalyseClear()LSolve()UAnalyse()UAnalyseClear()USolve()Householder()QRDecompose()QRSolve()Invert()ReadFileMTX()WriteFileMTX()ReadFileCSR()WriteFileCSR()MoveToAccelerator()MoveToAcceleratorAsync()MoveToHost()MoveToHostAsync()Sync()CopyFrom()CopyFromAsync()CloneFrom()UpdateValuesCSR()CopyFromCSR()CopyToCSR()CopyFromCOO()CopyToCOO()CopyFromHostCSR()CreateFromMap()CreateFromMap()ConvertToCSR()ConvertToMCSR()ConvertToBCSR()ConvertToCOO()ConvertToELL()ConvertToDIA()ConvertToHYB()ConvertToDENSE()ConvertTo()Apply()ApplyAdd()SymbolicPower()MatrixAdd()MatrixMult()DiagonalMatrixMult()DiagonalMatrixMultL()DiagonalMatrixMultR()Gershgorin()Compress()Transpose()Transpose()Sort()Key()ReplaceColumnVector()ReplaceRowVector()ExtractColumnVector()ExtractRowVector()AMGConnect()AMGAggregate()AMGPMISAggregate()AMGSmoothedAggregation()AMGSmoothedAggregation()AMGAggregation()AMGAggregation()RSCoarsening()RSPMISCoarsening()RSDirectInterpolation()RSDirectInterpolation()RSExtPIInterpolation()RSExtPIInterpolation()RugeStueben()FSAI()SPAI()InitialPairwiseAggregation()InitialPairwiseAggregation()FurtherPairwiseAggregation()FurtherPairwiseAggregation()CoarsenOperator()
- Local Stencil
- Global Matrix
rocalution::GlobalMatrixGlobalMatrix()GetM()GetN()GetNnz()GetLocalM()GetLocalN()GetLocalNnz()GetGhostM()GetGhostN()GetGhostNnz()MoveToAccelerator()MoveToHost()Info()Check()AllocateCSR()AllocateCOO()Clear()SetParallelManager()SetDataPtrCSR()SetDataPtrCOO()SetLocalDataPtrCSR()SetLocalDataPtrCOO()SetGhostDataPtrCSR()SetGhostDataPtrCOO()LeaveDataPtrCSR()LeaveDataPtrCOO()LeaveLocalDataPtrCSR()LeaveLocalDataPtrCOO()LeaveGhostDataPtrCSR()LeaveGhostDataPtrCOO()CloneFrom()CopyFrom()ConvertToCSR()ConvertToMCSR()ConvertToBCSR()ConvertToCOO()ConvertToELL()ConvertToDIA()ConvertToHYB()ConvertToDENSE()ConvertTo()Apply()ApplyAdd()ReadFileMTX()WriteFileMTX()ReadFileCSR()WriteFileCSR()Sort()ExtractInverseDiagonal()Scale()InitialPairwiseAggregation()FurtherPairwiseAggregation()CoarsenOperator()
- Local Vector
rocalution::LocalVectoroperator[]()operator[]()MoveToAccelerator()MoveToAcceleratorAsync()MoveToHost()MoveToHostAsync()Sync()Info()GetSize()Check()Allocate()SetDataPtr()LeaveDataPtr()Clear()Zeros()Ones()SetValues()SetRandomUniform()SetRandomNormal()ReadFileASCII()WriteFileASCII()ReadFileBinary()WriteFileBinary()CopyFrom()CopyFromAsync()CopyFromFloat()CopyFromDouble()CopyFrom()CopyFromPermute()CopyFromPermuteBackward()CloneFrom()CopyFromData()CopyToData()Permute()PermuteBackward()Restriction()Prolongation()AddScale()ScaleAdd()ScaleAddScale()ScaleAddScale()ScaleAdd2()Scale()Dot()DotNonConj()Norm()Reduce()Asum()Amax()PointWiseMult()PointWiseMult()Power()SetIndexArray()GetIndexValues()GetIndexValues()SetIndexValues()SetIndexValues()GetContinuousValues()SetContinuousValues()ExtractCoarseMapping()ExtractCoarseBoundary()
- Global Vector
rocalution::GlobalVectorGlobalVector()MoveToAccelerator()MoveToHost()Info()Check()GetSize()GetLocalSize()GetGhostSize()Allocate()Clear()SetParallelManager()Zeros()Ones()SetValues()SetRandomUniform()SetRandomNormal()CloneFrom()operator[]()operator[]()SetDataPtr()LeaveDataPtr()CopyFrom()ReadFileASCII()WriteFileASCII()ReadFileBinary()WriteFileBinary()AddScale()ScaleAdd()ScaleAdd2()ScaleAddScale()Scale()Dot()DotNonConj()Norm()Reduce()Asum()Amax()PointWiseMult()PointWiseMult()Power()Restriction()Prolongation()
- Base Classes
- Parallel Manager
rocalution::ParallelManagerSetMPICommunicator()Clear()GetRank()GetGlobalSize()GetGlobalNrow()GetGlobalNcol()GetLocalSize()GetLocalNrow()GetLocalNcol()GetNumReceivers()GetNumSenders()GetNumProcs()SetGlobalSize()SetGlobalNrow()SetGlobalNcol()SetLocalSize()SetLocalNrow()SetLocalNcol()SetBoundaryIndex()SetReceivers()SetSenders()LocalToGlobal()GlobalToLocal()Status()ReadFileASCII()WriteFileASCII()
- Solvers
- Preconditioners
rocalution::Preconditionerrocalution::AIChebyshevrocalution::FSAIrocalution::SPAIrocalution::TNSrocalution::ASrocalution::RASrocalution::BlockJacobirocalution::BlockPreconditionerrocalution::Jacobirocalution::GSrocalution::SGSrocalution::ILUrocalution::ILUTrocalution::ICrocalution::VariablePreconditionerrocalution::MultiColoredrocalution::MultiColoredSGSrocalution::MultiColoredGSrocalution::MultiColoredILUrocalution::MultiEliminationrocalution::DiagJacobiSaddlePointPrecond