Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Lapack | 1,167 | a day ago | 94 | other | Fortran | |||||
LAPACK development repository | ||||||||||
Taco | 1,076 | 3 months ago | 183 | other | C++ | |||||
The Tensor Algebra Compiler (taco) computes sparse tensor expressions on CPUs and GPUs | ||||||||||
Ginkgo | 293 | 2 days ago | 149 | bsd-3-clause | C++ | |||||
Numerical linear algebra software package | ||||||||||
Dla Future | 45 | 17 hours ago | 101 | bsd-3-clause | C++ | |||||
Distributed Linear Algebra with Future | ||||||||||
Gdt | 7 | 3 years ago | mit | C | ||||||
Graphics Development Tools (GDT) A collection of utility classes for graphics development | ||||||||||
Nvgraph | 5 | 3 years ago | 1 | apache-2.0 | C++ | |||||
Learn Graphics | 2 | 5 years ago | C++ | |||||||
Algorithms of rendering implemented in OpenGL and Qt |
Ginkgo is a high-performance linear algebra library for manycore systems, with a focus on the solution of sparse linear systems. It is implemented using modern C++ (you will need an at least C++14 compliant compiler to build it), with GPU kernels implemented in CUDA, HIP, and DPC++.
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.
For Ginkgo core library:
The Ginkgo CUDA module has the following additional requirements:
The Ginkgo HIP module has the following additional requirements:
clang
compiler)
* 9.2 <= CUDA < 11 backendThe Ginkgo DPC++ module has the following additional requirements:
dpcpp
as the CMAKE_CXX_COMPILER
c++17
is used to compile GinkgoIn addition, if you want to contribute code to Ginkgo, you will also need the following:
-DGINKGO_WITH_CLANG_TIDY=ON
)-DGINKGO_WITH_IWYU=ON
)NOTE: Need to add --autocrlf=input
after git clone
in Cygwin.
The Ginkgo CUDA module has the following additional requirements:
The Ginkgo OMP module has the following additional requirements:
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 environmentNOTE: Some restrictions will also apply on the version of C and C++ standard libraries installed on the system. This needs further investigation.
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. 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++ modules enabled to
run the examples with these executors. Please refer to the Installation
page for more details.
After the installation, CMake can find ginkgo with find_package(Ginkgo)
.
An example can be found in the test_install
.
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 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.
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
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 protected] Institution(s)
Contributing guidelines can be accessed in the CONTRIBUTING.md page. 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.
If you have any question, bug to report or would like to propose a new feature, feel free to create an issue on GitHub. Another possibility is to send an email to Ginkgo's main email address or to contact any of the main contributors.
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.
The main Ginkgo paper describing Ginkgo's purpose, design and interface is available through the following reference:
@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.