CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
125 lines
4.2 KiB
ReStructuredText
125 lines
4.2 KiB
ReStructuredText
.. meta::
|
||
:description: A sparse linear algebra library with focus on exploring fine-grained parallelism on top of the AMD ROCm runtime and toolchains
|
||
:keywords: rocALUTION, ROCm, library, API, tool
|
||
|
||
.. _what-is-rocalution:
|
||
|
||
What is rocALUTION?
|
||
======================
|
||
|
||
rocALUTION is a sparse linear algebra library designed for fine-grained parallelism on modern hardware.
|
||
Use rocALUTION to efficiently solve large sparse linear systems on CPUs and GPUs using the AMD ROCm runtime and toolchains.
|
||
The library targets multi-core CPUs, many-core processors, and AMD GPUs.
|
||
Its primary goal is to provide a portable, high-performance framework for iterative sparse solvers while hiding backend-specific complexity.
|
||
rocALUTION acts as middleware between parallel backends and application-specific packages.
|
||
Implemented in C++ and HIP, rocALUTION offers a flexible and extensible design that integrates easily with other scientific computing libraries.
|
||
|
||
Overview
|
||
---------
|
||
|
||
You can run rocALUTION on a variety of hardware platforms using multiple execution backends:
|
||
|
||
- **Host** – Fallback backend designed for CPU execution
|
||
- **OpenMP** – Backend optimized for multi-core CPUs
|
||
- **GPU (HIP)** – Accelerator backend for HIP-capable AMD GPUs
|
||
- **MPI** – Backend for multi-node and multi-GPU configurations
|
||
|
||
The library is designed to be easy to learn and use:
|
||
|
||
- You interact with a consistent and intuitive API across all backends
|
||
- Example programs are provided to help you get started quickly
|
||
- You do not need prior experience with HIP, OpenMP, or MPI programming
|
||
|
||
rocALUTION has minimal hardware requirements:
|
||
|
||
- You can run the Host and OpenMP backends on standard CPU systems
|
||
- To use GPU acceleration, you need a HIP-capable AMD GPU and the ROCm software stack
|
||
|
||
Capabilities
|
||
------------
|
||
|
||
rocALUTION provides a wide range of iterative solvers for sparse linear systems:
|
||
|
||
- **Fixed-point iteration methods**
|
||
|
||
- Jacobi
|
||
- Gauss-Seidel
|
||
- Symmetric Gauss-Seidel
|
||
- SOR
|
||
- SSOR
|
||
|
||
- **Krylov subspace methods**
|
||
|
||
- CR
|
||
- CG
|
||
- BiCGStab
|
||
- BiCGStab(l)
|
||
- GMRES
|
||
- Flexible GMRES
|
||
- IDR
|
||
- QMRCGSTAB
|
||
- Flexible CG
|
||
|
||
- **Additional solvers**
|
||
|
||
- Mixed-precision defect-correction schemes
|
||
- Chebyshev iteration
|
||
- Geometric and algebraic multigrid methods
|
||
|
||
You can improve solver performance using a broad set of preconditioners:
|
||
|
||
- **Matrix splitting methods**
|
||
|
||
- Jacobi
|
||
- (Multi-colored) Gauss-Seidel
|
||
- Symmetric Gauss-Seidel
|
||
- SOR
|
||
- SSOR
|
||
|
||
- **Factorization-based methods**
|
||
|
||
- ILU(0)
|
||
- ILU(p) based on level-of-fill
|
||
- ILU(p,q) using the power(q)-pattern method
|
||
- Multi-Elimination ILU (nested and recursive)
|
||
- ILUT based on thresholding
|
||
- IC(0)
|
||
|
||
- **Approximate inverse methods**
|
||
|
||
- Chebyshev matrix-valued polynomials
|
||
- SPAI
|
||
- FSAI
|
||
- TNS
|
||
|
||
- **Additional preconditioners**
|
||
|
||
- Diagonal-based preconditioners for saddle-point problems
|
||
- Block-type sub-preconditioners and solvers
|
||
- Additive Schwarz and Restricted Additive Schwarz methods
|
||
- Variable-type preconditioners
|
||
|
||
Design and portability
|
||
------------------------------------------------------------------------
|
||
|
||
rocALUTION is built on a generic and robust design that allows you to extend the library with new solvers, preconditioners, and hardware backends.
|
||
You can use any solver as a preconditioner within another solver, enabling complex and highly customized solution strategies.
|
||
|
||
All solvers and preconditioners are implemented using a single source code base.
|
||
You can compile and run your application across all supported backends without changing your code.
|
||
Numerical results are portable across platforms, with minor variations due to hardware-specific rounding behavior.
|
||
The primary difference you will observe between backends is performance.
|
||
|
||
rocALUTION supports multiple sparse and dense matrix storage formats:
|
||
|
||
- Compressed Sparse Row (CSR)
|
||
- Modified Compressed Sparse Row (MCSR)
|
||
- Dense (DENSE)
|
||
- Coordinate (COO)
|
||
- ELL
|
||
- Diagonal (DIA)
|
||
- Hybrid ELL and COO (HYB)
|
||
|
||
rocALUTION is open source software released under the `MIT License <./license.html>`__.
|
||
You can find the source code in the `https://github.com/ROCm/rocm-libraries/tree/develop/projects/rocalution <https://github.com/ROCm/rocm-libraries/tree/develop/projects/rocalution>`__ repository.
|