Skip to content
Numerical linear algebra software package
Branch: develop
Clone or download
tcojean Merge Fix CSR->ELL conversion
And accelerate benchmarks.

### Conversion details
Fix a bug in CSR `max_nnz_per_row` computation.

+ The same `grid_dim` was used for the reduction and for the
  `calculate_nnz_per_row` kernel
+ The `grid_dim` was limited to maximum `default_block_size^2` elements.
+ For bigger matrices, the extracted `max_nnz_per_row` could be wrong, due to
  omitted values.

### Benchmark details
+ Move `matrix_from` to the external loop.
+ Benchmark directly into `matrix_to`.
Latest commit 8bf33e0 Jun 14, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets Add basic doxygen configuration files May 11, 2018
benchmark Make the conversions benchmark faster. Jun 13, 2019
cmake Small improvements to the memorycheck jobs: May 28, 2019
cuda Fix a bug in CSR `max_nnz_per_row` computation. Jun 13, 2019
dev_tools Use Github API to control the sonarqube parameters. May 19, 2019
examples Fix the develop documentation (pdf) generation errors on the CI system. Jun 5, 2019
include/ginkgo Added changes from the review comments Jun 13, 2019
omp Added changes from the review comments Jun 13, 2019
reference Made further style changes. Jun 13, 2019
third_party Update the third party packages to the latest release. Mar 26, 2019
.clang-format Run code through clang-format Oct 23, 2017
.gitignore Incorporate @tcojean 's suggestions Sep 3, 2018
.gitlab-ci.yml Restrict the CI system to only use the 1st GPU Jun 13, 2019 Fix format of some markdown files. Use some md files as doc pages. Apr 4, 2019
CMakeLists.txt Make Ginkgo better abide to the `M12` policy. May 6, 2019
CPackConfig.cmake Improve Ginkgo installation information and related targets for bette… Feb 18, 2019
CTestConfig.cmake Provide support in Ginkgo for Coverage and Sanitizers build. Feb 19, 2019 Make Ginkgo better abide to the `M12` policy. May 6, 2019
LICENSE Update the LICENSE and contributors.txt files Mar 28, 2019 Fix some link issues in the ``. Apr 30, 2019 Fix format of some markdown files. Use some md files as doc pages. Apr 4, 2019
contributors.txt Contributor order changed and fixed formatting of build files Apr 26, 2019 Improve sonarqube and codecov configuration. Jun 5, 2019


Build status Coverage CDash dashboard Documentation License c++ standard

Ginkgo is a high-performance linear algebra library for manycore systems, with a focus on sparse solution of linear systems. It is implemented using modern C++ (you will need at least C++11 compliant compiler to build it), with GPU kernels implemented in CUDA.


An extensive database of up-to-date benchmark results is available in the performance data repository. Visualizations of the database can be interactively generated using the Ginkgo Performance Explorer web application. The benchmark results are automatically updated using the CI system to always reflect the current state of the library.


Linux and Mac OS

For Ginkgo core library:

  • cmake 3.9+
  • C++11 compliant compiler, one of:
    • gcc 5.3+, 6.3+, 7.3+, 8.1+
    • clang 3.9+
    • Apple LLVM 8.0+ (TODO: verify)

The Ginkgo CUDA module has the following additional requirements:

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

  • clang-format 5.0.1+ (ships as part of clang)
  • 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 is currently not supported, but we are working on porting the library there. If you are interested in helping us with this effort, feel free to contact one of the developers. (The library itself doesn't use any non-standard C++ features, so most of the effort here is in modifying the build system.)

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

Quick Install

Building Ginkgo

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

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

By default, GINKGO_BUILD_REFERENCE is enabled. You should be able to run examples with this executor. You would need to explicitly compile with the OpenMP and CUDA modules enabled to run with these executors. Please refer to the Installation page.

After the installation, CMake can find ginkgo with find_package(Ginkgo). An example can be found in the test_install.

Ginkgo 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. Documentation for the examples is available within the doc/ folder in each of the example directory and a commented code with explanations can found in the online documentation.

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

Running the benchmarks

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 page

Contributing to Ginkgo


When contributing for the first time, please add yourself to the list of external contributors like in the example below.


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

Name Surname email@domain Institution(s)

Contributing guidelines

Contributing guidelines can be accessed in our Wiki under the Developer's Homepage. This page also contains other information useful to developers, such as writing proper commit messages, understanding Ginkgo's library design, relevant C++ information, and more.

In general, always refer to this page for developer information. If you think that anything is missing, feel free to create an issue.


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 for details.

You can’t perform that action at this time.