OpenFPM: A scalable open framework for particle and particle-mesh codes on parallel computers

OpenFPM: A scalable open framework for particle and particle-mesh codes on parallel computers
复制标题

DOI:
10.1016/j.cpc.2019.03.007
复制
发表时间:
2019-08-01
影响因子:
6.3
通讯作者:
Sbalzarini, Ivo F.
Sbalzarini, Ivo F.
中科院分区:
物理与天体物理2区
文献类型:
--
作者:
Incardona, Pietro;Leo, Antonio;Sbalzarini, Ivo F.

文献摘要

被引文献

相似文献

可扩展且高效的数值模拟继续变得越来越重要,因为计算已牢固地确立为继理论和实验之后的发现的第三大支柱。与此同时,计算硬件的性能通过日益异构的并行性而提高,从而能够模拟更加复杂的模型。然而,在异构、分布式硬件系统上有效实现可扩展代码成为瓶颈。这个瓶颈可以通过中间软件层来缓解,这些软件层提供更接近问题域的更高级别的抽象,从而减少开发时间并让计算科学家能够集中精力。在这里,我们介绍 OpenFPM,这是一个开放且可扩展的框架,它为使用粒子和/或网格的数值模拟提供了抽象层。 OpenFPM 为离散和连续模型以及非模拟代码的纯粒子和混合粒子网格模拟的共享内存和分布式内存实现提供透明且可扩展的基础设施。该基础设施辅以常用的数值例程以及第三方库的接口。我们介绍 OpenFPM 的架构和设计,详细介绍底层抽象,并对从平滑粒子流体动力学 (SPH) 到分子动力学 (MD)、离散元方法 (DEM)、涡旋方法、模板代码(有限差分)和高维蒙特卡罗采样 (CMA-ES) 等应用程序中的框架进行基准测试,并将其与当前最先进的技术和现有技术进行比较 软件框架. 程序摘要程序标题:OpenFPMProgram Files doi:http://dx.doLorg/10.17632/4yrp8nbm7c.1许可规定:GPLv3编程语言:C++ 问题性质:编写使用网格、粒子或两者任意组合的数值模拟程序通常需要很长的开发时间,特别是如果代码是按比例缩放的 在并行分布式内存计算机上有效。较长的开发时间会带来高昂的财务和项目时间成本,并且往往会因为走捷径而导致项目性能不佳。然而,很大一部分功能是跨程序通用的,可以自动化或作为可重用软件组件提供,从而大大节省项目成本并可能提高软件性能。 解决方案方法:OpenFPM 提供了一个可扩展、高效的软件平台,用于在并行计算机上使用网格、粒子或两者的任意组合进行数值模拟。它基于一组众所周知的抽象数据类型和运算符,足以表达任何此类模拟,无论应用程序领域如何。 OpenFPM 提供可重用、经过测试和内部并行化的软件组件,可缩短开发时间,并使计算科学家无需具备丰富的并行编程知识即可进行并行计算。 (C) 2019 年作者。由 Elsevier B.V. 出版
Scalable and efficient numerical simulations continue to gain importance, as computation is firmly established as the third pillar of discovery, alongside theory and experiment. Meanwhile, the performance of computing hardware grows through increasingly heterogeneous parallelism, enabling simulations of ever more complex models. However, efficiently implementing scalable codes on heterogeneous, distributed hardware systems becomes the bottleneck. This bottleneck can be alleviated by intermediate software layers that provide higher-level abstractions closer to the problem domain, reducing development times and allowing computational scientists to focus. Here, we present OpenFPM, an open and scalable framework that provides an abstraction layer for numerical simulations using particles and/or meshes. OpenFPM provides transparent and scalable infrastructure for shared-memory and distributed-memory implementations of particles-only and hybrid particle-mesh simulations of both discrete and continuous models, as well as non-simulation codes. This infrastructure is complemented with frequently used numerical routines, as well as interfaces to third-party libraries. We present the architecture and design of OpenFPM, detail the underlying abstractions, and benchmark the framework in applications ranging from Smoothed-Particle Hydrodynamics (SPH) to Molecular Dynamics (MD), Discrete Element Methods (DEM), Vortex Methods, stencil codes (finite differences), and high-dimensional Monte Carlo sampling (CMA-ES), comparing it to the current state of the art and to existing software frameworks.Program summaryProgram Title: OpenFPMProgram Files doi: http://dx.doLorg/10.17632/4yrp8nbm7c.1Licensing provisions: GPLv3Programming language: C++Nature of problem: Writing numerical simulation programs that use meshes, particles, or any combination of the two typically requires long development times, in particular if the code is to scale efficiently on parallel distributed-memory computers. The long development times incur high financial and project-time costs and often lead to sub-optimal program performance as shortcuts are taken. Yet, a large portion of the functionality is common across programs and could be automated or provided as reusable software components, leading to large savings in project costs and potentially improved software performance.Solution method: OpenFPM provides a scalable, highly efficient software platform for numerical simulations using meshes, particles, or any combination of the two on parallel computers. It is based on a well-known set of abstract data types and operators that suffice to express any such simulation, regardless of the application domain. OpenFPM provides reusable, tested, and internally parallelized software components that reduce development times and make parallel computing accessible to computational scientists without extensive knowledge in parallel programming. (C) 2019 The Authors. Published by Elsevier B.V.