AMGCL es una biblioteca C++ de solo encabezado para resolver grandes sistemas lineales dispersos con el método algebraico multigrid (AMG). AMG es uno de los métodos iterativos más eficaces para la solución de sistemas de ecuaciones que surgen, por ejemplo, de la discretización de PDE en redes no estructuradas. El método se puede utilizar como solucionador de caja negra para diversos problemas computacionales, ya que no requiere ninguna información sobre la geometría subyacente. AMG se utiliza a menudo no como un solucionador independiente sino como un precondicionador dentro de un solucionador iterativo (por ejemplo, Conjugate Gradients, BiCGStab o GMRES).
AMGCL construye la jerarquía AMG en una CPU y luego la transfiere a uno de los backends proporcionados. Esto permite una aceleración transparente de la fase de solución con la ayuda de tecnologías OpenCL, CUDA u OpenMP. Los usuarios pueden proporcionar sus propios servidores, lo que permite una estrecha integración entre AMGCL y el código de usuario.
Consulte la documentación de AMGCL en http://amgcl.readthedocs.io/
Demidov, Denis. AMGCL: una implementación multigrid algebraica eficiente, flexible y extensible. Lobachevskii Journal of Mathematics, 40(5):535–546, mayo de 2019. doi pdf bib
Demidov, Denis. AMGCL: una biblioteca de C++ para una solución eficiente de grandes sistemas lineales dispersos. Impactos del software, 6:100037, noviembre de 2020. doi bib
Demidov, Denis, Lin Mu y Bin Wang. Aceleración de solucionadores lineales para problemas de Stokes con metaprogramación en C++. Revista de Ciencias Computacionales (2020): 101285. babero doi arxiv