当前位置: X-MOL 学术Comput. Phys. Commun. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
OpenSBLI: Automated code-generation for heterogeneous computing architectures applied to compressible fluid dynamics on structured grids
Computer Physics Communications ( IF 7.2 ) Pub Date : 2021-06-11 , DOI: 10.1016/j.cpc.2021.108063
David J. Lusher , Satya P. Jammy , Neil D. Sandham

OpenSBLI is an open-source code-generation system for compressible fluid dynamics (CFD) on heterogeneous computing architectures. Written in Python, OpenSBLI is an explicit high-order finite-difference solver on structured curvilinear meshes. Shock-capturing is performed by a choice of high-order Weighted Essentially Non-Oscillatory (WENO) or Targeted Essentially Non-Oscillatory (TENO) schemes. OpenSBLI generates a complete CFD solver in the Oxford Parallel Structured (OPS) domain specific language. The OPS library is embedded in C code, enabling massively-parallel execution of the code on a variety of high-performance-computing architectures, including GPUs. The present paper presents a code base that has been completely rewritten from the earlier proof of concept Jacobs et al. (2017) [7], allowing shock capturing, coordinate transformations for complex geometries, and a wide range of boundary conditions, including solid walls with and without heat transfer. A suite of validation and verification cases are presented, plus demonstration of a large-scale Direct Numerical Simulation (DNS) of a transitional Shockwave Boundary Layer Interaction (SBLI). The code is shown to have good weak and strong scaling on multi-GPU clusters. We demonstrate that code-generation and domain specific languages are suitable for performing efficient large-scale simulations of complex fluid flows on emerging computing architectures.

Program summary

Program Title: OpenSBLI code-generation framework for compressible fluid dynamics on heterogeneous architectures

CPC Library link to program files: https://github.com/opensbli/opensbli

Licensing provisions: GPLv3

Programming languages: Python, C/C++, OPS DSL

Nature of problem: The compressible 3D Navier-Stokes equations are solved via Implicit Large Eddy Simulation (ILES) or Direct Numerical Simulation (DNS).

Solution method: OpenSBLI [1,2] is a Python-based code-generation system that uses symbolic algebra to generate a complete CFD solver in C/C++. The basic algorithm is a stencil-based finite-difference solver on structured curvilinear meshes. Shock-capturing is performed by a selection of high-order Weighted/Targeted Essentially Non-Oscillatory (WENO/TENO) schemes. Explicit low-storage Runge-Kutta schemes are used for time-advancement.

Additional comments including restrictions and unusual features: The generated code is compliant with the Oxford Parallel Structured (OPS) [3] software library. OpenSBLI/OPS executables can be generated for the OpenMP, MPI, CUDA, OpenCL, and OpenACC parallel programming paradigms. Multi-GPU support is available via combinations of MPI with CUDA, OpenCL or OpenACC.

References

[1]

D.J. Lusher, S.P. Jammy, N.D. Sandham, Shock-wave/boundary-layer interactions in the automatic source-code generation framework OpenSBLI, Comput. Fluids 173 (2018) 17-21.

[2]

C.T. Jacobs, S.P. Jammy, N.D. Sandham, OpenSBLI: A framework for the automated derivation and parallel execution of finite difference solvers on a range of computer architectures, J. Comput. Sci. 18 (2017) 12-23.

[3]

I.Z. Reguly, G.R. Mudalige, M.B. Giles, D. Curran and S. McIntosh-Smith, The OPS Domain Specific Abstraction for Multi-Block Structured Grid Computations, in: Proceedings of the 4th International Workshop on Domain-Specific Languages and High-Level Frameworks for High Performance Computing (WOLFHPC '14), Held in conjunction with IEEE/ACM Supercomputing 2014 (SC'14).



中文翻译:

OpenSBLI:适用于结构化网格上可压缩流体动力学的异构计算架构的自动代码生成

OpenSBLI 是一个开源代码生成系统,用于异构计算架构上的可压缩流体动力学 (CFD)。OpenSBLI 用 Python 编写,是结构化曲线网格上的显式高阶有限差分求解器。通过选择高阶加权基本非振荡 (WENO) 或目标基本非振荡 (TENO) 方案来执行冲击捕获。OpenSBLI 使用牛津并行结构 (OPS) 域特定语言生成完整的 CFD 求解器。OPS 库嵌入在 C 代码中,支持在各种高性能计算架构(包括 GPU)上大规模并行执行代码。本论文提供了一个代码库,该代码库已从早先的 Jacobs 等人的概念证明中完全重写。(2017) [7],允许对复杂几何进行冲击捕获、坐标变换,以及广泛的边界条件,包括有和没有热传递的实体壁。提供了一套验证和验证案例,以及过渡冲击波边界层相互作用 (SBLI) 的大规模直接数值模拟 (DNS) 的演示。该代码在多 GPU 集群上显示出良好的弱扩展和强扩展。我们证明代码生成和领域特定语言适用于在新兴计算架构上执行复杂流体流动的高效大规模模拟。

程序概要

程序名称:OpenSBLI 代码生成框架,用于异构架构上的可压缩流体动力学

CPC 库程序文件链接: https : //github.com/opensbli/opensbli

许可条款: GPLv3

编程语言: Python、C/C++、OPS DSL

问题性质:可压缩的 3D Navier-Stokes 方程通过隐式大涡模拟 (ILES) 或直接数值模拟 (DNS) 求解。

求解方法: OpenSBLI[1,2]是一个基于Python的代码生成系统,它使用符号代数在C/C++中生成完整的CFD求解器。基本算法是结构化曲线网格上基于模板的有限差分求解器。冲击捕获是通过选择高阶加权/目标基本非振荡 (WENO/TENO) 方案来执行的。显式的低存储 Runge-Kutta 方案用于时间推进。

包括限制和异常功能在内的其他注释:生成的代码符合 Oxford Parallel Structured (OPS) [3] 软件库。可以为 OpenMP、MPI、CUDA、OpenCL 和 OpenACC并行编程范例生成 OpenSBLI/OPS 可执行文件。多 GPU 支持可通过 MPI 与 CUDA、OpenCL 或 OpenACC 的组合获得。

参考

[1]

DJ Lusher、SP Jammy、ND Sandham,自动源代码生成框架 OpenSBLI 中的冲击波/边界层交互,Comput。流体 173 (2018) 17-21。

[2]

CT Jacobs、SP Jammy、ND Sandham、OpenSBLI:在一系列计算机架构上自动推导和并行执行有限差分求解器的框架,J. Comput。科学。18 (2017) 12-23。

[3]

IZ Reguly、GR Mudalige、MB Giles、D. Curran 和 S. McIntosh-Smith,用于多块结构化网格计算的 OPS 领域特定抽象,在:第四届领域特定语言和高级框架国际研讨会论文集高性能计算 (WOLFHPC '14),与 IEEE/ACM 超级计算 2014 (SC'14) 联合举办。

更新日期:2021-06-21
down
wechat
bug