  In this paper, we present Ginkgo, a modern C++ math library for scientific
high performance computing. While classical linear algebra libraries act on
matrix and vector objects, Ginkgo's design principle abstracts all
functionality as "linear operators", motivating the notation of a "linear
operator algebra library". Ginkgo's current focus is oriented towards providing
sparse linear algebra functionality for high performance GPU architectures, but
given the library design, this focus can be easily extended to accommodate
other algorithms and hardware architectures. We introduce this sophisticated
software architecture that separates core algorithms from architecture-specific
back ends and provide details on extensibility and sustainability measures. We
also demonstrate Ginkgo's usability by providing examples on how to use its
functionality inside the MFEM and deal.ii finite element ecosystems. Finally,
we offer a practical demonstration of Ginkgo's high performance on
state-of-the-art GPU architectures.
