{"id":18711163,"url":"https://github.com/rocm/rocalution","last_synced_at":"2025-04-05T02:05:30.328Z","repository":{"id":34352979,"uuid":"107320494","full_name":"ROCm/rocALUTION","owner":"ROCm","description":"Next generation library for iterative sparse solvers for ROCm platform","archived":false,"fork":false,"pushed_at":"2025-03-27T22:30:25.000Z","size":11254,"stargazers_count":78,"open_issues_count":7,"forks_count":41,"subscribers_count":32,"default_branch":"develop","last_synced_at":"2025-03-29T01:04:19.522Z","etag":null,"topics":["cplusplus","cuda","fortran","mpi","opencl","openmp","solver","sparse"],"latest_commit_sha":null,"homepage":"https://rocm.docs.amd.com/projects/rocALUTION/en/latest/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ROCm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-17T20:30:16.000Z","updated_at":"2025-03-27T22:30:28.000Z","dependencies_parsed_at":"2023-02-17T16:01:28.332Z","dependency_job_id":"3bf03832-cc82-4207-8935-80b8cf1faf2a","html_url":"https://github.com/ROCm/rocALUTION","commit_stats":{"total_commits":615,"total_committers":34,"mean_commits":18.08823529411765,"dds":0.4747967479674797,"last_synced_commit":"7904b7c94207cb0c2d0c88a5fdc3486db1c004f6"},"previous_names":["rocm/rocalution","rocmsoftwareplatform/rocalution"],"tags_count":84,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROCm%2FrocALUTION","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROCm%2FrocALUTION/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROCm%2FrocALUTION/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ROCm%2FrocALUTION/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ROCm","download_url":"https://codeload.github.com/ROCm/rocALUTION/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276163,"owners_count":20912288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cplusplus","cuda","fortran","mpi","opencl","openmp","solver","sparse"],"created_at":"2024-11-07T12:37:29.299Z","updated_at":"2025-04-05T02:05:30.294Z","avatar_url":"https://github.com/ROCm.png","language":"C++","readme":"# rocALUTION\n\n\u003e [!NOTE]\n\u003e The published documentation is available at [rocALUTION](https://rocm.docs.amd.com/projects/rocALUTION/en/latest/) in an organized, easy-to-read format, with search and a table of contents. The documentation source files reside in the `docs` folder of this repository. As with all ROCm projects, the documentation is open source. For more information on contributing to the documentation, see [Contribute to ROCm documentation](https://rocm.docs.amd.com/en/latest/contribute/contributing.html).\n\nrocALUTION is a sparse linear algebra library that can be used to explore fine-grained parallelism on\ntop of the [ROCm](https://github.com/ROCm/ROCm) platform runtime and toolchains.\nBased on C++ and [HIP](https://github.com/ROCm/HIP/), rocALUTION\nprovides a portable, generic, and flexible design that allows seamless integration with other scientific\nsoftware packages.\n\nrocALUTION offers various backends for different (parallel) hardware:\n\n* Host\n* [OpenMP](http://www.openmp.org/): Designed for multi-core CPUs\n* [HIP](https://github.com/ROCm/HIP/): Designed for ROCm-compatible devices\n* [MPI](https://www.open-mpi.org/): Designed for multi-node clusters and multi-GPU setups\n\n## Requirements\n\nTo use rocALUTION on GPU devices, you must first install the\n[rocBLAS](https://github.com/ROCm/rocBLAS),\n[rocSPARSE](https://github.com/ROCm/rocSPARSE), and\n[rocRAND](https://github.com/ROCm/rocRAND) libraries. You can install these from\nthe ROCm repository, the GitHub 'releases' tab, or you can manually compile them.\n\n## Documentation\n\nDocumentation for rocALUTION is available at\n[https://rocm.docs.amd.com/projects/rocALUTION/en/latest/](https://rocm.docs.amd.com/projects/rocALUTION/en/latest/).\n\nTo build our documentation locally, use the following code:\n\n```bash\ncd docs\n\npip3 install -r sphinx/requirements.txt\n\npython3 -m sphinx -T -E -b html -d _build/doctrees -D language=en . _build/html\n```\n\n## Build\n\nYou can compile rocALUTION using CMake 3.5 or later. Note that all compiler specifications are\ndetermined automatically.\n\n```bash\n# Clone rocALUTION using git\ngit clone https://github.com/ROCm/rocALUTION.git\n\n# Go to rocALUTION directory, create and change to build directory\ncd rocALUTION; mkdir build; cd build\n\n# Configure rocALUTION\n# Build options:\n#   SUPPORT_HIP         - build rocALUTION with HIP support (ON)\n#   SUPPORT_OMP         - build rocALUTION with OpenMP support (ON)\n#   SUPPORT_MPI         - build rocALUTION with MPI (multi-node) support (OFF)\n#   BUILD_SHARED_LIBS   - build rocALUTION as shared library (ON, recommended)\n#   BUILD_EXAMPLES      - build rocALUTION examples (ON)\ncmake .. -DSUPPORT_HIP=ON -DROCM_PATH=/opt/rocm/\n\n# Build\nmake\n```\n\nTo test your installation, run a CG solver on a Laplacian matrix:\n\n```bash\ncd rocALUTION; cd build\nwget ftp://math.nist.gov/pub/MatrixMarket2/Harwell-Boeing/laplace/gr_30_30.mtx.gz\ngzip -d gr_30_30.mtx.gz\n./clients/staging/cg gr_30_30.mtx\n```\n\n## General information\n\nrocALUTION is based on a generic and robust design that allows expansion in the direction of new\nsolvers and preconditioners with support for various hardware types. The library's design allows the\nuse of all solvers as preconditioners in other solvers. For example, you can define a CG solver with a\nmulti-elimination preconditioner, in which the last-block is preconditioned with another Chebyshev\niteration method that itself is preconditioned with a multi-colored symmetric Gauss-Seidel scheme.\n\n### Iterative solvers\n\n* Fixed-point iteration schemes: Jacobi, (Symmetric) Gauss-Seidel, SOR, SSOR\n* Krylov subspace methods: CR, CG, BiCGStab, BiCGStab(*l*), GMRES, IDR, QMRCGSTAB,\n  Flexible CG/GMRES\n* Mixed-precision defect correction scheme\n* Chebyshev iteration scheme\n* Multigrid: Geometric and algebraic\n\n### Preconditioners\n\n* Matrix splitting schemes: Jacobi, (multi-colored) (symmetric) Gauss-Seidel, SOR, SSOR\n* Factorization schemes: ILU(*0*), ILU(*p*) (based on levels), ILU(*p,q*) (power(*q*)-pattern method),\n  multi-elimination ILU (nested/recursive), ILUT (based on threshold), IC(*0*)\n* Approximate Inverses: Chebyshev matrix-valued polynomial, SPAI, FSAI, TNS\n* Diagonal-based preconditioner for Saddle-point problems\n* Block-type of sub-preconditioners/solvers\n* Additive Schwarz (restricted)\n* Variable type of preconditioners\n\n### Sparse matrix formats\n\n* Compressed Sparse Row (CSR)\n* Modified Compressed Sparse Row (MCSR)\n* Dense (DENSE)\n* Coordinate (COO)\n* ELL\n* Diagonal (DIA)\n* Hybrid ELL+COO (HYB)\n\n## Portability\n\nAll code based on rocALUTION is portable and hardware-independent. It compiles and runs on any\nsupported platform. All solvers and preconditioners are based on a single source code implementation\nthat delivers portable results across all backends (note that variations are possible due to different\nhardware rounding modes). The only visible difference between hardware is performance variation.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocm%2Frocalution","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocm%2Frocalution","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocm%2Frocalution/lists"}