当前位置: X-MOL 学术Int. J. Comput. Sci. Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
lbmpy: Automatic code generation for efficient parallel lattice Boltzmann methods
Journal of Computational Science ( IF 3.1 ) Pub Date : 2020-11-29 , DOI: 10.1016/j.jocs.2020.101269
Martin Bauer , Harald Köstler , Ulrich Rüde

Lattice Boltzmann methods are a popular mesoscopic alternative to classical computational fluid dynamics based on the macroscopic equations of continuum mechanics. Many variants of lattice Boltzmann methods have been developed that vary in complexity, accuracy, and computational cost. Extensions are available to simulate multi-phase, multi-component, turbulent, and non-Newtonian flows. In this work we present lbmpy, a code generation package that supports a wide variety of different lattice Boltzmann methods. Additionally, lbmpy provides a generic development environment for new schemes. A high-level domain-specific language allows the user to formulate, extend and test various lattice Boltzmann methods. In all cases, the lattice Boltzmann method can be specified in symbolic form. Transformations that operate on this symbolic representation yield highly efficient compute kernels. This is achieved by automatically parallelizing the methods, and by various application-specific automatized steps that optimize the resulting code. This pipeline of transformations can be applied to a wide range of lattice Boltzmann variants, including single- and two-relaxation-time schemes, multi-relaxation-time methods, as well as the more advanced cumulant methods, and entropically stabilized methods. lbmpy can be integrated into high-performance computing frameworks to enable massively parallel, distributed simulations. This is demonstrated using the waLBerla multiphysics package to conduct scaling experiments on the SuperMUC-NG supercomputing system on up to 147 456 compute cores.



中文翻译:

lbmpy:用于高效并行晶格玻尔兹曼方法的自动代码生成

基于连续力学的宏观方程,格子Boltzmann方法是经典计算流体动力学的一种流行的介观替代方法。已经开发出格子Boltzmann方法的许多变体,这些变体的复杂性,准确性和计算成本各不相同。扩展可用于模拟多相,多分量,湍流和非牛顿流。在这项工作中,我们介绍了lbmpy,这是一个代码生成程序包,它支持多种不同的格子Boltzmann方法。另外,lbmpy为新方案提供通用的开发环境。高级领域特定语言允许用户制定,扩展和测试各种晶格Boltzmann方法。在所有情况下,都可以用符号形式指定晶格玻尔兹曼方法。在此符号表示形式上进行的转换将产生高效的计算内核。这可以通过自动并行化方法,以及通过各种针对特定应用的自动化步骤来优化结果代码来实现。这种转换流水线可以应用于各种格子Boltzmann变体,包括单松弛时间方案和双松弛时间方案,多松弛时间方法以及更高级的累积量方法和熵稳定方法。可以集成到高性能计算框架中,以实现大规模并行,分布式仿真。使用waLBerla多物理场软件包在多达147 456个计算核上的SuperMUC-NG超级计算系统上进行扩展实验,证明了这一点。

更新日期:2020-12-29
down
wechat
bug