当前位置: X-MOL 学术arXiv.cs.MS › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Accelerating linear solvers for Stokes problems with C++ metaprogramming
arXiv - CS - Mathematical Software Pub Date : 2020-06-10 , DOI: arxiv-2006.06052
Denis Demidov, Lin Mu, Bin Wang

The efficient solution of large sparse saddle point systems is very important in computational fluid mechanics. The discontinuous Galerkin finite element methods have become increasingly popular for incompressible flow problems but their application is limited due to high computational cost. We describe the C++ programming techniques that may help to accelerate linear solvers for such problems. The approach is based on the policy-based design pattern and partial template specialization, and is implemented in the open source AMGCL library. The efficiency is demonstrated with the example of accelerating an iterative solver of a discontinuous Galerkin finite element method for the Stokes problem. The implementation allows selecting algorithmic components of the solver by adjusting template parameters without any changes to the codebase. It is possible to switch to block values, or use a mixed precision solution, which results in up to 4 times speedup, and reduces the memory footprint of the algorithm by about 40\%. We evaluate both monolithic and composite preconditioning strategies for the 3 benchmark problems. The performance of the proposed solution is compared with a multithreaded direct Pardiso solver and a parallel iterative PETSc solver.

中文翻译:

使用 C++ 元编程加速斯托克斯问题的线性求解器

大型稀疏鞍点系统的有效求解在计算流体力学中非常重要。非连续伽辽金有限元方法在不可压缩流动问题中越来越流行,但由于计算成本高,它们的应用受到限制。我们描述了可能有助于加速此类问题的线性求解器的 C++ 编程技术。该方法基于基于策略的设计模式和部分模板特化,并在开源 AMGCL 库中实现。通过加速求解斯托克斯问题的不连续伽辽金有限元方法的迭代求解器的示例证明了效率。该实现允许通过调整模板参数来选择求解器的算法组件,而无需对代码库进行任何更改。可以切换到块值,或者使用混合精度的解决方案,这会带来高达 4 倍的加速,并将算法的内存占用减少约 40\%。我们评估了 3 个基准问题的整体和复合预处理策略。将所提出的解决方案的性能与多线程直接 Pardiso 求解器和并行迭代 PETSc 求解器进行了比较。
更新日期:2020-11-18
down
wechat
bug