AMGCL ist eine reine Header-C++-Bibliothek zur Lösung großer dünn besetzter linearer Systeme mit der algebraischen Mehrgittermethode (AMG). AMG ist eine der effektivsten iterativen Methoden zur Lösung von Gleichungssystemen, die beispielsweise aus der Diskretisierung von PDEs auf unstrukturierten Gittern entstehen. Die Methode kann als Black-Box-Löser für verschiedene Rechenprobleme verwendet werden, da sie keine Informationen über die zugrunde liegende Geometrie benötigt. AMG wird häufig nicht als eigenständiger Löser, sondern als Vorkonditionierer innerhalb eines iterativen Lösers (z. B. Conjugate Gradients, BiCGStab oder GMRES) verwendet.
AMGCL baut die AMG-Hierarchie auf einer CPU auf und überträgt sie dann an eines der bereitgestellten Backends. Dies ermöglicht eine transparente Beschleunigung der Lösungsphase mithilfe von OpenCL-, CUDA- oder OpenMP-Technologien. Benutzer können ihre eigenen Backends bereitstellen, was eine enge Integration zwischen AMGCL und dem Benutzercode ermöglicht.
Siehe AMGCL-Dokumentation unter http://amgcl.readthedocs.io/
Demidov, Denis. AMGCL: Eine effiziente, flexible und erweiterbare algebraische Multigrid-Implementierung. Lobachevskii Journal of Mathematics, 40(5):535–546, Mai 2019. doi pdf bib
Demidov, Denis. AMGCL – Eine C++-Bibliothek zur effizienten Lösung großer dünn besetzter linearer Systeme. Software Impacts, 6:100037, November 2020. doi bib
Demidov, Denis, Lin Mu und Bin Wang. Beschleunigung linearer Löser für Stokes-Probleme mit C++-Metaprogrammierung. Journal of Computational Science (2020): 101285. doi arxiv bib