AMGCL é uma biblioteca C++ somente de cabeçalho para resolver grandes sistemas lineares esparsos com método multigrid algébrico (AMG). AMG é um dos métodos iterativos mais eficazes para solução de sistemas de equações decorrentes, por exemplo, da discretização de EDPs em grades não estruturadas. O método pode ser usado como um solucionador de caixa preta para vários problemas computacionais, uma vez que não requer nenhuma informação sobre a geometria subjacente. AMG é frequentemente usado não como um solucionador independente, mas como um pré-condicionador dentro de um solucionador iterativo (por exemplo, Gradientes Conjugados, BiCGStab ou GMRES).
AMGCL constrói a hierarquia AMG em uma CPU e depois a transfere para um dos back-ends fornecidos. Isso permite uma aceleração transparente da fase de solução com a ajuda das tecnologias OpenCL, CUDA ou OpenMP. Os usuários podem fornecer seus próprios back-ends, o que permite uma forte integração entre o AMGCL e o código do usuário.
Consulte a documentação AMGCL em http://amgcl.readthedocs.io/
DEMIDOV, Denis. AMGCL: Uma implementação multigrid algébrica eficiente, flexível e extensível. Lobachevskii Journal of Mathematics, 40(5):535–546, maio de 2019. doi pdf bib
DEMIDOV, Denis. AMGCL – Uma biblioteca C++ para solução eficiente de grandes sistemas lineares esparsos. Impactos de software, 6:100037, novembro de 2020. doi bib
Demidov, Denis, Lin Mu e Bin Wang. Acelerando solucionadores lineares para problemas de Stokes com metaprogramação C++. Journal of Computational Science (2020): 101285. doi arxiv bib