libParanumal:高性能有限元流体求解器
项目介绍
libParanumal 是一个实验性的有限元流体求解器集合,专为异构(GPU/CPU)系统设计。该项目由弗吉尼亚理工学院的并行数值算法小组(Parallel Numerical Algorithms Group at Virginia Tech)发起,并得到了美国能源部资助的高效扩展离散化中心的支持。libParanumal 的名字来源于其高阶有限元实现的高度精确性和依赖于 MPI 通信的“ghost”元素。
项目技术分析
libParanumal 的核心技术包括:
- 支持的元素类型:三角形、四边形、四面体、六面体,以及拉格朗日基函数。
- 网格处理:支持 Gmsh 格式文件加载、负载均衡的惯性分区、多级谱分区、Cuthill-McKee 局部排序。
- 时间积分器:包括自适应速率的 Dormand-Prince 5 阶 Runge-Kutta、低存储显式 Runge-Kutta 4 阶、单/多速率 Adams-Bashforth 3 阶、外推的向后差分 3 阶。
- 迭代线性求解器:预处理(灵活)共轭梯度法、非阻塞预处理(灵活)共轭梯度法、预处理(广义)最小残差法、改进的初始猜测技术(历史投影/外推)。
- 椭圆求解器:线性泊松和屏蔽泊松势求解器、GPU 优化的矩阵-向量乘积、p 型多重网格、代数多重网格(平滑和非平滑聚合)、低阶 SEMFEM、重叠加性 Schwarz 和 Jacobi 预处理、无矩阵 p 多重网格。
- 异构加速流体求解器:包括可压缩 Navier-Stokes 求解器、Galerkin-Boltzmann 气体动力学求解器、不可压缩 Navier-Stokes 求解器。
- 可移植性:集成了 Open Concurrent Compute Abstraction (OCCA),支持 OpenMP、CUDA、OpenCL、HIP 和 SYCL 等多种执行模型,并可在运行时选择。
项目及技术应用场景
libParanumal 适用于以下场景:
- 高性能计算:适用于需要大规模并行计算的流体动力学问题,如气象模拟、航空航天工程、海洋学等。
- 异构计算:支持 GPU 和 CPU 的混合计算,适用于现代高性能计算集群。
- 科学研究:为研究人员提供了一个强大的工具,用于开发和测试新的数值方法和算法。
项目特点
- 高性能:libParanumal 通过高度优化的算法和异构计算支持,实现了卓越的计算性能。
- 可扩展性:支持多种网格类型和时间积分方法,适用于不同规模和复杂度的流体问题。
- 可移植性:通过 OCCA 抽象层,支持多种执行模型,确保在不同硬件平台上的兼容性。
- 社区驱动:libParanumal 是一个开源项目,鼓励社区贡献和反馈,不断改进和扩展功能。
如何参与
libParanumal 是一个社区驱动的项目,欢迎开发者通过提交 Issue 或 Pull Request 来帮助改进项目。无论是发现问题、提出新功能,还是贡献代码,都能为项目的进步做出贡献。
引用
如果您在研究中使用了 libParanumal,请引用以下文献:
@MISC{ChalmersKarakusAustinSwirydowiczWarburton2020,
author = "Chalmers, N. and Karakus, A. and Austin, A. P. and Swirydowicz, K. and Warburton, T.",
title = "{libParanumal}: a performance portable high-order finite element library",
year = "2022",
url = "https://github.com/paranumal/libparanumal",
doi = "10.5281/zenodo.4004744",
note = "Release 0.5.0"}
许可证
libParanumal 采用 MIT 许可证,允许自由使用、修改和分发。
libParanumal 是一个功能强大且灵活的有限元流体求解器,适用于各种高性能计算和科学研究场景。无论您是研究人员、开发者还是高性能计算爱好者,libParanumal 都将是您不可或缺的工具。立即访问 GitHub 项目页面,开始您的探索之旅吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



