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
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
VectorVector::CopyFrom()Vector::CopyFrom()Vector::CloneFrom()Vector::CloneFrom()Vector::GetSize()Vector::GetLocalSize()Vector::GetGhostSize()Vector::Check()Vector::Clear()Vector::Zeros()Vector::Ones()Vector::SetValues()Vector::SetRandomUniform()Vector::SetRandomNormal()Vector::ReadFileASCII()Vector::WriteFileASCII()Vector::ReadFileBinary()Vector::WriteFileBinary()Vector::CopyFromAsync()Vector::CopyFromFloat()Vector::CopyFromDouble()Vector::CopyFrom()Vector::AddScale()Vector::AddScale()Vector::ScaleAdd()Vector::ScaleAdd()Vector::ScaleAddScale()Vector::ScaleAddScale()Vector::ScaleAddScale()Vector::ScaleAddScale()Vector::ScaleAdd2()Vector::ScaleAdd2()Vector::Scale()Vector::Dot()Vector::Dot()Vector::DotNonConj()Vector::DotNonConj()Vector::Norm()Vector::Reduce()Vector::Asum()Vector::Amax()Vector::PointWiseMult()Vector::PointWiseMult()Vector::PointWiseMult()Vector::PointWiseMult()Vector::Power()
- Local Matrix
LocalMatrixLocalMatrix::AllocateCSR()LocalMatrix::AllocateBCSR()LocalMatrix::AllocateMCSR()LocalMatrix::AllocateCOO()LocalMatrix::AllocateDIA()LocalMatrix::AllocateELL()LocalMatrix::AllocateHYB()LocalMatrix::AllocateDENSE()LocalMatrix::SetDataPtrCOO()LocalMatrix::SetDataPtrCSR()LocalMatrix::SetDataPtrBCSR()LocalMatrix::SetDataPtrMCSR()LocalMatrix::SetDataPtrELL()LocalMatrix::SetDataPtrDIA()LocalMatrix::SetDataPtrDENSE()LocalMatrix::LeaveDataPtrCOO()LocalMatrix::LeaveDataPtrCSR()LocalMatrix::LeaveDataPtrBCSR()LocalMatrix::LeaveDataPtrMCSR()LocalMatrix::LeaveDataPtrELL()LocalMatrix::LeaveDataPtrDIA()LocalMatrix::LeaveDataPtrDENSE()LocalMatrix::Info()LocalMatrix::GetFormat()LocalMatrix::GetBlockDimension()LocalMatrix::GetM()LocalMatrix::GetN()LocalMatrix::GetNnz()LocalMatrix::Check()LocalMatrix::Clear()LocalMatrix::Zeros()LocalMatrix::Scale()LocalMatrix::ScaleDiagonal()LocalMatrix::ScaleOffDiagonal()LocalMatrix::AddScalar()LocalMatrix::AddScalarDiagonal()LocalMatrix::AddScalarOffDiagonal()LocalMatrix::ExtractSubMatrix()LocalMatrix::ExtractSubMatrices()LocalMatrix::ExtractDiagonal()LocalMatrix::ExtractInverseDiagonal()LocalMatrix::ExtractU()LocalMatrix::ExtractL()LocalMatrix::Permute()LocalMatrix::PermuteBackward()LocalMatrix::CMK()LocalMatrix::RCMK()LocalMatrix::ConnectivityOrder()LocalMatrix::MultiColoring()LocalMatrix::MaximalIndependentSet()LocalMatrix::ZeroBlockPermutation()LocalMatrix::ILU0Factorize()LocalMatrix::LUFactorize()LocalMatrix::ILUTFactorize()LocalMatrix::ILUpFactorize()LocalMatrix::LUAnalyse()LocalMatrix::LUAnalyseClear()LocalMatrix::LUSolve()LocalMatrix::ICFactorize()LocalMatrix::LLAnalyse()LocalMatrix::LLAnalyseClear()LocalMatrix::LLSolve()LocalMatrix::LLSolve()LocalMatrix::LAnalyse()LocalMatrix::LAnalyseClear()LocalMatrix::LSolve()LocalMatrix::UAnalyse()LocalMatrix::UAnalyseClear()LocalMatrix::USolve()LocalMatrix::Householder()LocalMatrix::QRDecompose()LocalMatrix::QRSolve()LocalMatrix::Invert()LocalMatrix::ReadFileMTX()LocalMatrix::WriteFileMTX()LocalMatrix::ReadFileCSR()LocalMatrix::WriteFileCSR()LocalMatrix::MoveToAccelerator()LocalMatrix::MoveToAcceleratorAsync()LocalMatrix::MoveToHost()LocalMatrix::MoveToHostAsync()LocalMatrix::Sync()LocalMatrix::CopyFrom()LocalMatrix::CopyFromAsync()LocalMatrix::CloneFrom()LocalMatrix::UpdateValuesCSR()LocalMatrix::CopyFromCSR()LocalMatrix::CopyToCSR()LocalMatrix::CopyFromCOO()LocalMatrix::CopyToCOO()LocalMatrix::CopyFromHostCSR()LocalMatrix::CreateFromMap()LocalMatrix::CreateFromMap()LocalMatrix::ConvertToCSR()LocalMatrix::ConvertToMCSR()LocalMatrix::ConvertToBCSR()LocalMatrix::ConvertToCOO()LocalMatrix::ConvertToELL()LocalMatrix::ConvertToDIA()LocalMatrix::ConvertToHYB()LocalMatrix::ConvertToDENSE()LocalMatrix::ConvertTo()LocalMatrix::Apply()LocalMatrix::ApplyAdd()LocalMatrix::SymbolicPower()LocalMatrix::MatrixAdd()LocalMatrix::MatrixMult()LocalMatrix::DiagonalMatrixMult()LocalMatrix::DiagonalMatrixMultL()LocalMatrix::DiagonalMatrixMultR()LocalMatrix::Gershgorin()LocalMatrix::Compress()LocalMatrix::Transpose()LocalMatrix::Transpose()LocalMatrix::Sort()LocalMatrix::Key()LocalMatrix::ReplaceColumnVector()LocalMatrix::ReplaceRowVector()LocalMatrix::ExtractColumnVector()LocalMatrix::ExtractRowVector()LocalMatrix::AMGConnect()LocalMatrix::AMGAggregate()LocalMatrix::AMGPMISAggregate()LocalMatrix::AMGSmoothedAggregation()LocalMatrix::AMGSmoothedAggregation()LocalMatrix::AMGAggregation()LocalMatrix::AMGAggregation()LocalMatrix::RSCoarsening()LocalMatrix::RSPMISCoarsening()LocalMatrix::RSDirectInterpolation()LocalMatrix::RSDirectInterpolation()LocalMatrix::RSExtPIInterpolation()LocalMatrix::RSExtPIInterpolation()LocalMatrix::RugeStueben()LocalMatrix::FSAI()LocalMatrix::SPAI()LocalMatrix::InitialPairwiseAggregation()LocalMatrix::InitialPairwiseAggregation()LocalMatrix::FurtherPairwiseAggregation()LocalMatrix::FurtherPairwiseAggregation()LocalMatrix::CoarsenOperator()
- Local Stencil
- Global Matrix
GlobalMatrixGlobalMatrix::GlobalMatrix()GlobalMatrix::GetM()GlobalMatrix::GetN()GlobalMatrix::GetNnz()GlobalMatrix::GetLocalM()GlobalMatrix::GetLocalN()GlobalMatrix::GetLocalNnz()GlobalMatrix::GetGhostM()GlobalMatrix::GetGhostN()GlobalMatrix::GetGhostNnz()GlobalMatrix::MoveToAccelerator()GlobalMatrix::MoveToHost()GlobalMatrix::Info()GlobalMatrix::Check()GlobalMatrix::AllocateCSR()GlobalMatrix::AllocateCOO()GlobalMatrix::Clear()GlobalMatrix::SetParallelManager()GlobalMatrix::SetDataPtrCSR()GlobalMatrix::SetDataPtrCOO()GlobalMatrix::SetLocalDataPtrCSR()GlobalMatrix::SetLocalDataPtrCOO()GlobalMatrix::SetGhostDataPtrCSR()GlobalMatrix::SetGhostDataPtrCOO()GlobalMatrix::LeaveDataPtrCSR()GlobalMatrix::LeaveDataPtrCOO()GlobalMatrix::LeaveLocalDataPtrCSR()GlobalMatrix::LeaveLocalDataPtrCOO()GlobalMatrix::LeaveGhostDataPtrCSR()GlobalMatrix::LeaveGhostDataPtrCOO()GlobalMatrix::CloneFrom()GlobalMatrix::CopyFrom()GlobalMatrix::ConvertToCSR()GlobalMatrix::ConvertToMCSR()GlobalMatrix::ConvertToBCSR()GlobalMatrix::ConvertToCOO()GlobalMatrix::ConvertToELL()GlobalMatrix::ConvertToDIA()GlobalMatrix::ConvertToHYB()GlobalMatrix::ConvertToDENSE()GlobalMatrix::ConvertTo()GlobalMatrix::Apply()GlobalMatrix::ApplyAdd()GlobalMatrix::ReadFileMTX()GlobalMatrix::WriteFileMTX()GlobalMatrix::ReadFileCSR()GlobalMatrix::WriteFileCSR()GlobalMatrix::Sort()GlobalMatrix::ExtractInverseDiagonal()GlobalMatrix::Scale()GlobalMatrix::InitialPairwiseAggregation()GlobalMatrix::FurtherPairwiseAggregation()GlobalMatrix::CoarsenOperator()
- Local Vector
LocalVectorLocalVector::operator[]()LocalVector::operator[]()LocalVector::MoveToAccelerator()LocalVector::MoveToAcceleratorAsync()LocalVector::MoveToHost()LocalVector::MoveToHostAsync()LocalVector::Sync()LocalVector::Info()LocalVector::GetSize()LocalVector::Check()LocalVector::Allocate()LocalVector::SetDataPtr()LocalVector::LeaveDataPtr()LocalVector::Clear()LocalVector::Zeros()LocalVector::Ones()LocalVector::SetValues()LocalVector::SetRandomUniform()LocalVector::SetRandomNormal()LocalVector::ReadFileASCII()LocalVector::WriteFileASCII()LocalVector::ReadFileBinary()LocalVector::WriteFileBinary()LocalVector::CopyFrom()LocalVector::CopyFromAsync()LocalVector::CopyFromFloat()LocalVector::CopyFromDouble()LocalVector::CopyFrom()LocalVector::CopyFromPermute()LocalVector::CopyFromPermuteBackward()LocalVector::CloneFrom()LocalVector::CopyFromData()LocalVector::CopyToData()LocalVector::Permute()LocalVector::PermuteBackward()LocalVector::Restriction()LocalVector::Prolongation()LocalVector::AddScale()LocalVector::ScaleAdd()LocalVector::ScaleAddScale()LocalVector::ScaleAddScale()LocalVector::ScaleAdd2()LocalVector::Scale()LocalVector::Dot()LocalVector::DotNonConj()LocalVector::Norm()LocalVector::Reduce()LocalVector::Asum()LocalVector::Amax()LocalVector::PointWiseMult()LocalVector::PointWiseMult()LocalVector::Power()LocalVector::SetIndexArray()LocalVector::GetIndexValues()LocalVector::GetIndexValues()LocalVector::SetIndexValues()LocalVector::SetIndexValues()LocalVector::GetContinuousValues()LocalVector::SetContinuousValues()LocalVector::ExtractCoarseMapping()LocalVector::ExtractCoarseBoundary()
- Global Vector
GlobalVectorGlobalVector::GlobalVector()GlobalVector::MoveToAccelerator()GlobalVector::MoveToHost()GlobalVector::Info()GlobalVector::Check()GlobalVector::GetSize()GlobalVector::GetLocalSize()GlobalVector::GetGhostSize()GlobalVector::Allocate()GlobalVector::Clear()GlobalVector::SetParallelManager()GlobalVector::Zeros()GlobalVector::Ones()GlobalVector::SetValues()GlobalVector::SetRandomUniform()GlobalVector::SetRandomNormal()GlobalVector::CloneFrom()GlobalVector::operator[]()GlobalVector::operator[]()GlobalVector::SetDataPtr()GlobalVector::LeaveDataPtr()GlobalVector::CopyFrom()GlobalVector::ReadFileASCII()GlobalVector::WriteFileASCII()GlobalVector::ReadFileBinary()GlobalVector::WriteFileBinary()GlobalVector::AddScale()GlobalVector::ScaleAdd()GlobalVector::ScaleAdd2()GlobalVector::ScaleAddScale()GlobalVector::Scale()GlobalVector::Dot()GlobalVector::DotNonConj()GlobalVector::Norm()GlobalVector::Reduce()GlobalVector::Asum()GlobalVector::Amax()GlobalVector::PointWiseMult()GlobalVector::PointWiseMult()GlobalVector::Power()GlobalVector::Restriction()GlobalVector::Prolongation()
- Base Classes
- Parallel Manager
ParallelManagerParallelManager::SetMPICommunicator()ParallelManager::Clear()ParallelManager::GetRank()ParallelManager::GetGlobalSize()ParallelManager::GetGlobalNrow()ParallelManager::GetGlobalNcol()ParallelManager::GetLocalSize()ParallelManager::GetLocalNrow()ParallelManager::GetLocalNcol()ParallelManager::GetNumReceivers()ParallelManager::GetNumSenders()ParallelManager::GetNumProcs()ParallelManager::SetGlobalSize()ParallelManager::SetGlobalNrow()ParallelManager::SetGlobalNcol()ParallelManager::SetLocalSize()ParallelManager::SetLocalNrow()ParallelManager::SetLocalNcol()ParallelManager::SetBoundaryIndex()ParallelManager::SetReceivers()ParallelManager::SetSenders()ParallelManager::LocalToGlobal()ParallelManager::GlobalToLocal()ParallelManager::Status()ParallelManager::ReadFileASCII()ParallelManager::WriteFileASCII()
- Solvers
- Preconditioners
PreconditionerAIChebyshevFSAISPAITNSASRASBlockJacobiBlockPreconditionerBlockPreconditioner::Print()BlockPreconditioner::Clear()BlockPreconditioner::Set()BlockPreconditioner::SetDiagonalSolver()BlockPreconditioner::SetLSolver()BlockPreconditioner::SetExternalLastMatrix()BlockPreconditioner::SetPermutation()BlockPreconditioner::Build()BlockPreconditioner::Solve()
JacobiGSSGSILUILUTICVariablePreconditionerMultiColoredMultiColoredSGSMultiColoredGSMultiColoredILUMultiEliminationDiagJacobiSaddlePointPrecond