{"id":13574767,"url":"https://github.com/ginkgo-project/ginkgo","last_synced_at":"2025-05-15T13:05:15.548Z","repository":{"id":37405566,"uuid":"117122510","full_name":"ginkgo-project/ginkgo","owner":"ginkgo-project","description":"Numerical linear algebra software package","archived":false,"fork":false,"pushed_at":"2025-05-13T16:35:24.000Z","size":163453,"stargazers_count":466,"open_issues_count":151,"forks_count":96,"subscribers_count":23,"default_branch":"develop","last_synced_at":"2025-05-14T03:27:48.265Z","etag":null,"topics":["cuda","dpcpp","gpu-computing","hip","hpc","krylov-methods","linear-algebra","oneapi","openmp","preconditioning","sparse-linear-systems","spmv"],"latest_commit_sha":null,"homepage":"https://ginkgo-project.github.io/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ginkgo-project.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-01-11T16:14:21.000Z","updated_at":"2025-05-13T10:31:13.000Z","dependencies_parsed_at":"2024-12-30T16:31:43.506Z","dependency_job_id":"a0c216f6-2af3-42ff-a6da-071e977be309","html_url":"https://github.com/ginkgo-project/ginkgo","commit_stats":{"total_commits":7073,"total_committers":37,"mean_commits":"191.16216216216216","dds":0.7671426551675385,"last_synced_commit":"7286f3032450e851617df0557c558369d7b1e812"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ginkgo-project%2Fginkgo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ginkgo-project%2Fginkgo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ginkgo-project%2Fginkgo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ginkgo-project%2Fginkgo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ginkgo-project","download_url":"https://codeload.github.com/ginkgo-project/ginkgo/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254346624,"owners_count":22055808,"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":["cuda","dpcpp","gpu-computing","hip","hpc","krylov-methods","linear-algebra","oneapi","openmp","preconditioning","sparse-linear-systems","spmv"],"created_at":"2024-08-01T15:00:54.525Z","updated_at":"2025-05-15T13:05:15.528Z","avatar_url":"https://github.com/ginkgo-project.png","language":"C++","funding_links":[],"categories":["Table of Contents","C++","Basic linear algebra","Projects","Libraries 🗂️"],"sub_categories":["Mathematics and Science","HPC","Cross-Platform Libraries 🌍"],"readme":"  \u003cp align=\"center\"\u003e\u003cimg src=\"/assets/logo.png\" alt=\"Ginkgo\" width=\"60%\" height=\"60%\"\u003e\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![License](https://img.shields.io/github/license/ginkgo-project/ginkgo.svg)](./LICENSE)|[![c++ standard](https://img.shields.io/badge/c%2B%2B-17-blue.svg)](https://en.wikipedia.org/wiki/C%2B%2B#Standardization)|[![Documentation](https://img.shields.io/badge/Documentation-latest-blue.svg)](https://ginkgo-project.github.io/ginkgo-generated-documentation/doc/develop/)|[![DOI](https://joss.theoj.org/papers/10.21105/joss.02260/status.svg)](https://doi.org/10.21105/joss.02260)\n|:-:|:-:|:-:|:-:|\n\n\n[![Build status](https://gitlab.com/ginkgo-project/ginkgo-public-ci/badges/develop/pipeline.svg)](https://gitlab.com/ginkgo-project/ginkgo-public-ci/-/pipelines?page=1\u0026scope=branches\u0026ref=develop)|[![OSX-build](https://github.com/ginkgo-project/ginkgo/actions/workflows/osx.yml/badge.svg)](https://github.com/ginkgo-project/ginkgo/actions/workflows/osx.yml)|[![codecov](https://codecov.io/gh/ginkgo-project/ginkgo/branch/develop/graph/badge.svg)](https://codecov.io/gh/ginkgo-project/ginkgo)|[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=ginkgo-project_ginkgo\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=ginkgo-project_ginkgo)|[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=ginkgo-project_ginkgo\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?id=ginkgo-project_ginkgo)|[![CDash dashboard](https://img.shields.io/badge/CDash-Access-blue.svg)](https://my.cdash.org/index.php?project=Ginkgo+Project)\n|:-:|:-:|:-:|:-:|:-:|:-:|\n\n\u003c/div\u003e\n\n\nGinkgo is a high-performance numerical linear algebra library for many-core systems, with a\nfocus on solution of sparse linear systems. It is implemented using modern C++\n(you will need an at least C++17 compliant compiler to build it), with GPU kernels\nimplemented for NVIDIA, AMD and Intel GPUs.\n\n---\n\n**[Prerequisites](#prerequisites)** |\n**[Building Ginkgo](#building-and-installing-ginkgo)** |\n**[Tests, Examples, Benchmarks](#tests-examples-and-benchmarks)** |\n**[Bug reports](#bug-reports-and-support)** |\n**[Licensing](#licensing)** |\n**[Contributing](#contributing-to-ginkgo)** |\n**[Citing](#citing-ginkgo)**\n\n\n# Prerequisites\n\n### Linux and Mac OS\n\nFor Ginkgo core library:\n\n*   _cmake 3.16+_\n*   C++17 compliant compiler, one of:\n    *   _gcc 7+_\n    *   _clang 5+_\n    *   _Intel compiler 2019+_\n    *   _Apple Clang 15.0_ is tested. Earlier versions might also work.\n    *   _Cray Compiler 14.0.1+_\n    *   _NVHPC Compiler 22.7+_\n\nThe Ginkgo CUDA module has the following __additional__ requirements:\n\n*   _cmake 3.18+_ (If CUDA was installed through the NVIDIA HPC Toolkit, we require _cmake 3.22+_)\n*   _CUDA 11.0+_ or _NVHPC Package 22.7+_\n*   Any host compiler restrictions your version of CUDA may impose also apply\n    here. For the newest CUDA version, this information can be found in the\n    [CUDA installation guide for Linux](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html)\n    or [CUDA installation guide for Mac Os X](https://docs.nvidia.com/cuda/cuda-installation-guide-mac-os-x/index.html)\n\nThe Ginkgo HIP module has the following __additional__ requirements:\n\n* _ROCm 4.5+_\n* the HIP, hipBLAS, hipSPARSE, hip/rocRAND and rocThrust packages compiled with the ROCm backend\n* if the hipFFT package is available, it is used to implement the FFT LinOps.\n* _cmake 3.21+_\n\nThe Ginkgo DPC++(SYCL) module has the following __additional__ requirements:\n\n* _oneAPI 2023.1+_\n* Set `dpcpp` or `icpx` as the `CMAKE_CXX_COMPILER`\n* The following oneAPI packages should be available:\n    * oneMKL\n    * oneDPL\n\nThe Ginkgo MPI module has the following __additional__ requirements:\n\n* MPI 3.1+, ideally GPU-Aware, for best performance\n\nIn addition, if you want to contribute code to Ginkgo, you will also need the\nfollowing:\n\n*   _clang-format 14_ (downloaded automatically by `pre-commit`)\n*   _clang-tidy_ (optional, when setting the flag `-DGINKGO_WITH_CLANG_TIDY=ON`)\n*   _iwyu_ (Include What You Use, optional, when setting the flag `-DGINKGO_WITH_IWYU=ON`)\n\n### Windows\n\n*   _cmake 3.16+_\n*   C++17 compliant 64-bit compiler:\n    *   _MinGW : gcc 7+_\n    *   _Microsoft Visual Studio : VS 2019+_\n\nThe Ginkgo CUDA module has the following __additional__ requirements:\n\n*   _CUDA 11.0+_\n*   _Microsoft Visual Studio_\n*   Any host compiler restrictions your version of CUDA may impose also apply\n    here. For the newest CUDA version, this information can be found in the\n    [CUDA installation guide for Windows](https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html)\n\nThe Ginkgo OMP module has the following __additional__ requirements:\n*  _MinGW_\n\nIn these environments, two problems can be encountered, the solution for which is described in the\n[windows section in INSTALL.md](INSTALL.md#building-ginkgo-in-windows):\n* `ld: error: export ordinal too large` needs the compilation flag `-O1`\n* `cc1plus.exe: out of memory allocating 65536 bytes` requires a modification of the environment\n\n__NOTE:__ Some restrictions will also apply on the version of C and C++ standard\nlibraries installed on the system. This needs further investigation.\n\n# Building and Installing Ginkgo\n\nTo build Ginkgo, you can use the standard CMake procedure.\n\n```sh\nmkdir build; cd build\ncmake -G \"Unix Makefiles\" .. \u0026\u0026 cmake --build .\ncmake --install .\n```\n\nBy default, `GINKGO_BUILD_REFERENCE` is enabled. You should be able to run\nexamples with this executor. By default, Ginkgo tries to enable the relevant\nmodules depending on your machine environment (present of CUDA, ...). You can\nalso explicitly compile with the OpenMP, CUDA, HIP or DPC++(SYCL) modules enabled to\nrun the examples with these executors.\n\nPlease refer to the [Installation page](./INSTALL.md) for more details.\n\nTip: After installation, in your CMake project, Ginkgo can be added with `find_package(Ginkgo)` and the the target that is exported is `Ginkgo::ginkgo`.\nAn example can be found in the [`test_install`](test/test_install/CMakeLists.txt).\n\n# Tests, Examples and Benchmarks\n\n### Testing\n\nGinkgo does comprehensive unit tests using Google Tests. These tests are enabled by default and can be disabled if necessary by passing the `-DGINKGO_BUILD_TESTS=NO` to the cmake command. More details about running tests can be found in the [TESTING.md page](./TESTING.md).\n\n### Running examples\n\nVarious examples are available for you to understand and play with Ginkgo within the `examples/` directory. They can be compiled by passing the `-DGINKGO_BUILD_EXAMPLES=ON` to the cmake command. Each of the examples have commented code with explanations and this can be found within the [online documentation](https://ginkgo-project.github.io/ginkgo-generated-documentation/doc/develop/Examples.html).\n\n### Benchmarking\n\nA unique feature of Ginkgo is the ability to run benchmarks and view your results\nwith the help of the [Ginkgo Performance Explorer (GPE)](https://ginkgo-project.github.io/gpe/).\n\nMore details about this can be found in the [BENCHMARKING.md page](./BENCHMARKING.md)\n\n# Bug reports and Support\n\nIf you have any questions about using Ginkgo, please use [Github discussions](https://github.com/ginkgo-project/ginkgo/discussions).\n\nIf you would like to request a feature, or have encountered a bug, please [create an issue](https://github.com/ginkgo-project/ginkgo/issues/new). Please be sure to describe your problem and provide as much information as possible.\n\nYou can also send an email to [Ginkgo's main email address](mailto:ginkgo.library@gmail.com).\n\n# Licensing\n\nGinkgo is available under the [3-clause BSD license](LICENSE). All contributions\nto the project are added under this license.\n\nDepending on the configuration options used when building Ginkgo, third party\nsoftware may be pulled as additional dependencies, which have their own\nlicensing conditions. Refer to [ABOUT-LICENSING.md](ABOUT-LICENSING.md) for\ndetails.\n\n# Contributing to Ginkgo\n\nWe are glad that that you would like to contribute to Ginkgo and we are happy to help you with any questions you may have.\n\nIf you are contributing for the first time, please add yourself to the list of external contributors with the following info\n\n``` text\nName Surname \u003cemail@domain\u003e Institution(s)\n```\n\n#### Declaration\n\nGinkgo's source is distributed with a BSD-3 clause license. By contributing to Ginkgo and adding yourself to the contributors list, you agree to the following statement (also in [contributors.txt](contributors.txt)):\n\n``` text\nI hereby place all my contributions in this codebase under a BSD-3-Clause\nlicense, as specified in the repository's LICENSE file.\n```\n\n#### Contribution Guidelines\n\nWhen contributing to Ginkgo, to ease the review process, please follow the guidelines mentioned in [CONTRIBUTING.md](CONTRIBUTING.md).\n\nIt also contains other general recommendations such as writing proper commit messages, understanding Ginkgo's library design, relevant C++ information etc.\n\n\n# Citing Ginkgo\n\nThe main Ginkgo paper describing Ginkgo's purpose, design and interface is\navailable through the following reference:\n\n``` bibtex\n@article{ginkgo-toms-2022,\ntitle = {{Ginkgo: A Modern Linear Operator Algebra Framework for High Performance Computing}},\nvolume = {48},\ncopyright = {All rights reserved},\nissn = {0098-3500},\nshorttitle = {Ginkgo},\nurl = {https://doi.org/10.1145/3480935},\ndoi = {10.1145/3480935},\nnumber = {1},\nurldate = {2022-02-17},\njournal = {ACM Transactions on Mathematical Software},\nauthor = {Anzt, Hartwig and Cojean, Terry and Flegar, Goran and Göbel, Fritz and Grützmacher, Thomas and Nayak, Pratik and Ribizel, Tobias and Tsai, Yuhsiang Mike and Quintana-Ortí, Enrique S.},\nmonth = feb,\nyear = {2022},\nkeywords = {ginkgo, healthy software lifecycle, High performance computing, multi-core and manycore architectures},\npages = {2:1--2:33}\n}\n```\n\nFor more information on topical subjects, please refer to the [CITING.md\npage](CITING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fginkgo-project%2Fginkgo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fginkgo-project%2Fginkgo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fginkgo-project%2Fginkgo/lists"}