Developers of Molecular Dynamics (MD) codes face significant challenges when adapting existing simulation packages to new hardware. In a continuously diversifying hardware landscape it becomes increasingly difficult for scientists to be experts both in their own domain (physics/chemistry/biology) and specialists in the low level parallelisation and optimisation of their codes. To address this challenge, we describe a "Separation of Concerns" approach for the development of parallel and optimised MD codes: the science specialist writes code at a high abstraction level in a domain specific language (DSL), which is then translated into efficient computer code by a scientific programmer. In a related context, an abstraction for the solution of partial differential equations with grid based methods has recently been implemented in the (Py)OP2 library. Inspired by this approach, we develop a Python code generation system for molecular dynamics simulations on different parallel architectures, including massively parallel distributed memory systems and GPUs. We demonstrate the efficiency of the auto-generated code by studying its performance and scalability on different hardware and compare it to other state-of-the-art simulation packages. With growing data volumes the extraction of physically meaningful information from the simulation becomes increasingly challenging and requires equally efficient implementations. A particular advantage of our approach is the easy expression of such analysis algorithms. We consider two popular methods for deducing the crystalline structure of a material from the local environment of each atom, show how they can be expressed in our abstraction and implement them in the code generation framework.
Portability for GPU-accelerated molecular docking applications for cloud and HPC: can portable compiler directives provide performance across all platforms?
HPC Containers for EBRAINS: Towards Portable Cross-Domain Software Environment
Simulation & Data Lab Neuroscience, Jülich Supercomputing Centre, Forschungszentrum Jülich(于利希研究中心);Kirchhoff Institute for Physics, Ruprecht-Karls-Universität(海德堡大学);ATHENA Research & Innovation Center(阿瑞塔研究与创新中心);Computer Engineering, FernUniversität in Hagen(哈根远程大学)
Parthenon -- a performance portable block-structured adaptive mesh refinement framework
在通往亿万级的道路上,计算机设备架构和相应的编程模型的前景变得更加多样化。虽然有各种低级别的性能可移植编程模型,但在应用程序级别上缺乏支持。为了解决这个问题,我们提出了性能便携式块结构自适应网格细化(AMR)框架帕台农神庙,来自经过测试和广泛使用的雅典娜++天体物理磁流体动力学代码,但广义作为基础的各种下游多物理场代码。Parthenon采用了Kokkos编程模型,并提供了从多维变量到定义和分离组件的包,再到启动并行计算内核的各种级别的抽象。Parthenon在设备内存中分配所有数据以减少数据移动,支持变量和网格块的逻辑打包以减少内核启动开销,并采用单侧异步MPI调用以减少多节点模拟中的通信开销。使用流体力学迷你应用程序,我们展示了各种架构上的弱和强扩展,包括AMD和NVIDIA GPU,Intel和AMD x86 CPU,IBM Power 9 CPU以及Fujitsu A64 FX CPU。在Frontier上的最大规模(第一台TOP500 exascale机器),miniapp在9,216个节点(73,728个逻辑GPU)上达到了$1.7\times10^{13}$区域周期/秒,弱扩展并行效率约为92%(从单个节点开始)。再加上它是一个开放的协作项目,这使得Parthenon成为一个理想的框架,以针对亿级模拟,其中下游开发人员可以专注于他们的特定应用,而不是处理并行,设备加速…