Ginkgo

Ginkgo: A high performance numerical linear algebra library - Published in JOSS (2020)

https://github.com/ginkgo-project/ginkgo

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    12 of 39 committers (30.8%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

cuda dpcpp gpu-computing hip hpc krylov-methods linear-algebra oneapi openmp preconditioning sparse-linear-systems spmv
Last synced: 4 months ago · JSON representation ·

Repository

Numerical linear algebra software package

Basic Info
Statistics
  • Stars: 501
  • Watchers: 22
  • Forks: 98
  • Open Issues: 176
  • Releases: 12
Topics
cuda dpcpp gpu-computing hip hpc krylov-methods linear-algebra oneapi openmp preconditioning sparse-linear-systems spmv
Created almost 8 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

Ginkgo

[![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)|[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8037/badge)](https://www.bestpractices.dev/projects/8037) |:-:|:-:|:-:|:-:|:-:| [![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&scope=branches&ref=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&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=ginkgo-project_ginkgo)|[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=ginkgo-project_ginkgo&metric=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) |:-:|:-:|:-:|:-:|:-:|:-:|

Ginkgo is a high-performance numerical linear algebra library for many-core systems, with a focus on solution of sparse linear systems. It is implemented using modern C++ (you will need an at least C++17 compliant compiler to build it), with GPU kernels implemented for NVIDIA, AMD and Intel GPUs.


Prerequisites | Building Ginkgo | Tests, Examples, Benchmarks | Bug reports | Licensing | Contributing | Citing

Prerequisites

Linux and Mac OS

For Ginkgo core library:

  • cmake 3.16+
  • C++17 compliant compiler, one of:
    • gcc 7+
    • clang 5+
    • Intel compiler 2019+
    • Apple Clang 15.0 is tested. Earlier versions might also work.
    • Cray Compiler 14.0.1+
    • NVHPC Compiler 22.7+

The Ginkgo CUDA module has the following additional requirements:

  • cmake 3.18+ (If CUDA was installed through the NVIDIA HPC Toolkit, we require cmake 3.22+)
  • CUDA 11.0+ or NVHPC Package 22.7+
  • Any host compiler restrictions your version of CUDA may impose also apply here. For the newest CUDA version, this information can be found in the CUDA installation guide for Linux or CUDA installation guide for Mac Os X

The Ginkgo HIP module has the following additional requirements:

  • ROCm 4.5+
  • the HIP, hipBLAS, hipSPARSE, hip/rocRAND and rocThrust packages compiled with the ROCm backend
  • if the hipFFT package is available, it is used to implement the FFT LinOps.
  • cmake 3.21+

The Ginkgo DPC++(SYCL) module has the following additional requirements:

  • oneAPI 2023.1+
  • Set dpcpp or icpx as the CMAKE_CXX_COMPILER
  • The following oneAPI packages should be available:
    • oneMKL
    • oneDPL

The Ginkgo MPI module has the following additional requirements:

  • MPI 3.1+, ideally GPU-Aware, for best performance

In addition, if you want to contribute code to Ginkgo, you will also need the following:

  • clang-format 14 (downloaded automatically by pre-commit)
  • clang-tidy (optional, when setting the flag -DGINKGO_WITH_CLANG_TIDY=ON)
  • iwyu (Include What You Use, optional, when setting the flag -DGINKGO_WITH_IWYU=ON)

Windows

  • cmake 3.16+
  • C++17 compliant 64-bit compiler:
    • MinGW : gcc 7+
    • Microsoft Visual Studio : VS 2019+

The Ginkgo CUDA module has the following additional requirements:

  • CUDA 11.0+
  • Microsoft Visual Studio
  • Any host compiler restrictions your version of CUDA may impose also apply here. For the newest CUDA version, this information can be found in the CUDA installation guide for Windows

The Ginkgo OMP module has the following additional requirements: * MinGW

In these environments, two problems can be encountered, the solution for which is described in the windows section in INSTALL.md: * ld: error: export ordinal too large needs the compilation flag -O1 * cc1plus.exe: out of memory allocating 65536 bytes requires a modification of the environment

NOTE: Some restrictions will also apply on the version of C and C++ standard libraries installed on the system. This needs further investigation.

Building and Installing Ginkgo

To build Ginkgo, you can use the standard CMake procedure.

sh mkdir build; cd build cmake -G "Unix Makefiles" .. && cmake --build . cmake --install .

By default, GINKGO_BUILD_REFERENCE is enabled. You should be able to run examples with this executor. By default, Ginkgo tries to enable the relevant modules depending on your machine environment (present of CUDA, ...). You can also explicitly compile with the OpenMP, CUDA, HIP or DPC++(SYCL) modules enabled to run the examples with these executors.

Please refer to the Installation page for more details.

Tip: After installation, in your CMake project, Ginkgo can be added with find_package(Ginkgo) and the the target that is exported is Ginkgo::ginkgo. An example can be found in the test_install.

Tests, Examples and Benchmarks

Testing

Ginkgo 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.

Running examples

Various 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.

Benchmarking

A unique feature of Ginkgo is the ability to run benchmarks and view your results with the help of the Ginkgo Performance Explorer (GPE).

More details about this can be found in the BENCHMARKING.md page

Bug reports and Support

If you have any questions about using Ginkgo, please use Github discussions.

If you would like to request a feature, or have encountered a bug, please create an issue. Please be sure to describe your problem and provide as much information as possible.

You can also send an email to Ginkgo's main email address.

Licensing

Ginkgo is available under the 3-clause BSD license. All contributions to the project are added under this license.

Depending on the configuration options used when building Ginkgo, third party software may be pulled as additional dependencies, which have their own licensing conditions. Refer to ABOUT-LICENSING.md for details.

Contributing to Ginkgo

We are glad that that you would like to contribute to Ginkgo and we are happy to help you with any questions you may have.

If you are contributing for the first time, please add yourself to the list of external contributors with the following info

text Name Surname <email@domain> Institution(s)

Declaration

Ginkgo'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):

text I hereby place all my contributions in this codebase under a BSD-3-Clause license, as specified in the repository's LICENSE file.

Contribution Guidelines

When contributing to Ginkgo, to ease the review process, please follow the guidelines mentioned in CONTRIBUTING.md.

It also contains other general recommendations such as writing proper commit messages, understanding Ginkgo's library design, relevant C++ information etc.

Citing Ginkgo

The main Ginkgo paper describing Ginkgo's purpose, design and interface is available through the following reference:

bibtex @article{ginkgo-toms-2022, title = {{Ginkgo: A Modern Linear Operator Algebra Framework for High Performance Computing}}, volume = {48}, copyright = {All rights reserved}, issn = {0098-3500}, shorttitle = {Ginkgo}, url = {https://doi.org/10.1145/3480935}, doi = {10.1145/3480935}, number = {1}, urldate = {2022-02-17}, journal = {ACM Transactions on Mathematical Software}, author = {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.}, month = feb, year = {2022}, keywords = {ginkgo, healthy software lifecycle, High performance computing, multi-core and manycore architectures}, pages = {2:1--2:33} }

For more information on topical subjects, please refer to the CITING.md page.

Owner

  • Name: Ginkgo Project
  • Login: ginkgo-project
  • Kind: organization
  • Location: Earth

Informal organization steering the development of the Ginkgo library and related software.

JOSS Publication

Ginkgo: A high performance numerical linear algebra library
Published
August 31, 2020
Volume 5, Issue 52, Page 2260
Authors
Hartwig Anzt ORCID
Karlsruhe Institute of Technology, Innovative Computing Laboratory, University of Tennessee, Knoxville
Terry Cojean ORCID
Karlsruhe Institute of Technology
Yen-Chen Chen
The University of Tokyo
Goran Flegar ORCID
University of Jaume I
Fritz Göbel
Karlsruhe Institute of Technology
Thomas Grützmacher ORCID
Karlsruhe Institute of Technology
Pratik Nayak ORCID
Karlsruhe Institute of Technology
Tobias Ribizel ORCID
Karlsruhe Institute of Technology
Yu-Hsiang Tsai ORCID
Karlsruhe Institute of Technology
Editor
Matthew Sottile ORCID
Tags
linear-algebra hpc cuda modern-c++ hip spmv

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Anzt"
  given-names: "Hartwig"
- family-names: "Chen"
  given-names: "Yenchen"
- family-names: "Cojean"
  given-names: "Terry"
- family-names: "Flegar"
  given-names: "Goran"
- family-names: "Göbel"
  given-names: "Fritz"
- family-names: "Grützmacher"
  given-names: "Thomas"
- family-names: "Kashi"
  given-names: "Aditya"
- family-names: "Koch"
  given-names: "Marcel"
- family-names: "Nayak"
  given-names: "Pratik"
- family-names: "Olenik"
  given-names: "Gregor"
- family-names: "Ribizel"
  given-names: "Tobias"
- family-names: "Riemer"
  given-names: "Lukas"
- family-names: "Tsai"
  given-names: "Yu-Hsiang"
title: "Ginkgo: A Modern Linear Operator Algebra Framework for High Performance Computing"
version: 1.10.0
date-released: 2025-06-13
url: "https://github.com/ginkgo-project/ginkgo"
license: BSD-3-Clause
preferred-citation:
  type: article
  authors:
  - family-names: "Anzt"
    given-names: "Hartwig"
  - family-names: "Cojean"
    given-names: "Terry"
  - family-names: "Flegar"
    given-names: "Goran"
  - family-names: "Göbel"
    given-names: "Fritz"
  - family-names: "Grützmacher"
    given-names: "Thomas"
  - family-names: "Nayak"
    given-names: "Pratik"
  - family-names: "Ribizel"
    given-names: "Tobias"
  - family-names: "Tsai"
    given-names: "Yuhsiang"
  - family-names: "Quintana-Ortí"
    given-names: "Enrique S."
  doi: "10.1145/3480935"
  journal: "ACM Transactions on Mathematical Software"
  month: 3
  start: 1 # First page number
  end: 33 # Last page number
  title: "Ginkgo: A Modern Linear Operator Algebra Framework for High Performance Computing"
  issue: 1
  volume: 48
  year: 2022

GitHub Events

Total
  • Fork event: 15
  • Create event: 175
  • Release event: 1
  • Issues event: 42
  • Watch event: 84
  • Delete event: 124
  • Member event: 2
  • Issue comment event: 619
  • Push event: 1,241
  • Gollum event: 69
  • Pull request review event: 1,107
  • Pull request review comment event: 1,129
  • Pull request event: 272
Last Year
  • Fork event: 16
  • Create event: 175
  • Release event: 1
  • Issues event: 42
  • Watch event: 84
  • Delete event: 124
  • Member event: 2
  • Issue comment event: 621
  • Push event: 1,245
  • Gollum event: 70
  • Pull request review event: 1,108
  • Pull request review comment event: 1,130
  • Pull request event: 272

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 7,529
  • Total Committers: 39
  • Avg Commits per committer: 193.051
  • Development Distribution Score (DDS): 0.766
Past Year
  • Commits: 810
  • Committers: 14
  • Avg Commits per committer: 57.857
  • Development Distribution Score (DDS): 0.573
Top Committers
Name Email Commits
Tobias Ribizel r****l@k****u 1,761
Yuhsiang M. Tsai y****i@g****m 1,298
Pratik Nayak p****n@p****m 937
Marcel Koch m****h@k****u 803
Terry Cojean t****n@k****u 680
Goran Flegar f****n@g****m 440
Thomas Grützmacher t****r@k****u 407
Fritz Goebel g****z@g****m 264
yanjen y****4@g****m 183
Aditya Kashi a****i@k****u 141
Hartwig Anzt h****t@i****u 124
ginkgo-bot g****y@g****m 113
Gregor Olenik g****k@w****e 69
Eoli-an d****r@w****e 45
Lukas Riemer l****r@g****m 41
Thomas Grützmacher t****t@g****e 36
Fritz Goebel f****l@k****u 34
Claudius Holeksa m****l@k****e 26
Atell Krasnopolski d****l@p****m 24
keldu.magnus g****t@k****e 21
keldu c****a@g****m 11
josealiaga a****a@u****s 11
Fabian Castelli f****i@k****u 10
nbeams 2****s 10
Thomas Grützmacher t****r@t****e 10
Tobias Ribizel t****l@g****m 9
aliaga@uji.es a****a@t****l 5
Jakub Klinkovský 1****z 3
Matthias Maier t****o@4****g 2
Niklas Conen n****n@s****u 2
and 9 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 143
  • Total pull requests: 713
  • Average time to close issues: 8 months
  • Average time to close pull requests: 4 months
  • Total issue authors: 52
  • Total pull request authors: 30
  • Average comments per issue: 2.87
  • Average comments per pull request: 3.05
  • Merged pull requests: 459
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 40
  • Pull requests: 304
  • Average time to close issues: 10 days
  • Average time to close pull requests: 14 days
  • Issue authors: 24
  • Pull request authors: 17
  • Average comments per issue: 1.5
  • Average comments per pull request: 1.83
  • Merged pull requests: 196
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • upsj (24)
  • lahwaacz (17)
  • iontcheva (8)
  • stanisic (6)
  • MarcelKoch (6)
  • yhmtsai (5)
  • pratikvn (5)
  • barracuda156 (4)
  • blegouix (4)
  • ocaisa (3)
  • gflegar (3)
  • tpadioleau (3)
  • rbourgeois33 (3)
  • aminiussi (3)
  • saustinp (2)
Pull Request Authors
  • MarcelKoch (193)
  • yhmtsai (179)
  • upsj (161)
  • pratikvn (74)
  • greole (20)
  • tcojean (13)
  • nbeams (11)
  • fritzgoebel (10)
  • gojakuch (8)
  • G-Ragghianti (6)
  • stanisic (5)
  • thoasm (5)
  • rscohn2 (2)
  • JEFFjeffJJ (2)
  • phu0ngng (2)
Top Labels
Issue Labels
is:bug (19) is:todo (15) is:idea (8) is:enhancement (8) mod:core (7) reg:build (6) is:confirmed (5) mod:hip (5) is:question (4) mod:cuda (4) is:help-wanted (3) is:technical-debt (2) is:interface-breaking (2) reg:testing (2) plat:apple (2) reg:benchmarking (2) 1:ST:ready-to-merge (2) is:proposal (2) type:solver (2) is:good-first-issue (2) is:new-feature (2) 1:ST:no-changelog-entry (1) 1:ST:skip-full-test (1) 1:ST:low-importance (1) type:preconditioner (1) plat:windows (1) 1:ST:WIP (1) reg:example (1) is:will-not-fix (1) is:bugfix (1)
Pull Request Labels
1:ST:ready-to-merge (398) reg:build (276) reg:testing (264) mod:core (259) type:solver (189) type:matrix-format (162) 1:ST:no-changelog-entry (160) mod:cuda (131) 1:ST:ready-for-review (125) mod:hip (120) type:preconditioner (120) reg:ci-cd (106) mod:all (106) type:factorization (100) reg:benchmarking (94) 1:ST:run-full-test (74) 1:ST:skip-full-test (73) reg:example (72) reg:documentation (72) mod:reference (62) type:reordering (61) type:multigrid (60) reg:helper-scripts (53) mod:dpcpp (49) type:stopping-criteria (48) is:bugfix (44) 1:ST:WIP (36) type:batched-functionality (34) is:new-feature (27) mod:openmp (23)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 12
proxy.golang.org: github.com/ginkgo-project/ginkgo
  • Versions: 12
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 7.0%
Average: 8.2%
Dependent repos count: 9.3%
Last synced: 4 months ago

Dependencies

.github/workflows/bot-pr-comment.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
.github/workflows/bot-pr-created.yml actions
  • actions/checkout v3 composite
.github/workflows/bot-pr-updated.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
.github/workflows/intel.yml actions
  • actions/checkout v3 composite
.github/workflows/mirror.yml actions
  • actions/checkout v3 composite
.github/workflows/osx.yml actions
  • actions/checkout v3 composite
  • mxschmitt/action-tmate v3.5 composite
.github/workflows/spell_check.yml actions
  • actions/checkout v3 composite
  • crate-ci/typos master composite
.github/workflows/check-formatting.yml actions
  • actions/checkout v4 composite
  • actions/upload-artifact v3 composite