当前位置: X-MOL 学术arXiv.cs.MS › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Role-Oriented Code Generation in an Engine for Solving Hyperbolic PDE Systems
arXiv - CS - Mathematical Software Pub Date : 2019-11-15 , DOI: arxiv-1911.06817
Jean-Matthieu Gallard, Lukas Krenz, Leonhard Rannabauer, Anne Reinarz, Michael Bader

The development of a high performance PDE solver requires the combined expertise of interdisciplinary teams with respect to application domain, numerical scheme and low-level optimization. In this paper, we present how the ExaHyPE engine facilitates the collaboration of such teams by isolating three roles: application, algorithms, and optimization expert. We thus support team members in letting them focus on their own area of expertise while integrating their contributions into an HPC production code. Inspired by web application development practices, ExaHyPE relies on two custom code generation modules, the Toolkit and the Kernel Generator, which follow a Model-View-Controller architectural pattern on top of the Jinja2 template engine library. Using Jinja2's templates to abstract the critical components of the engine and generated glue code, we isolate the application development from the engine. The template language also allows us to define and use custom template macros that isolate low-level optimizations from the numerical scheme described in the templates. We present three use cases, each focusing on one of our user roles, showcasing how the design of the code generation modules allows to easily expand the solver schemes to support novel demands from applications, to add optimized algorithmic schemes (with reduced memory footprint, e.g.), or provide improved low-level SIMD vectorization support.

中文翻译:

用于求解双曲 PDE 系统的引擎中面向角色的代码生成

高性能 PDE 求解器的开发需要跨学科团队在应用领域、数值方案和低级优化方面的综合专业知识。在本文中,我们展示了 ExaHyPE 引擎如何通过隔离三个角色来促进此类团队的协作:应用程序、算法和优化专家。因此,我们支持团队成员让他们专注于自己的专业领域,同时将他们的贡献集成到 HPC 生产代码中。受 Web 应用程序开发实践的启发,ExaHyPE 依赖于两个自定义代码生成模块,Toolkit 和 Kernel Generator,它们遵循基于 Jinja2 模板引擎库的模型-视图-控制器架构模式。使用 Jinja2 的模板对引擎的关键组件和生成的胶水代码进行抽象,我们将应用程序开发与引擎隔离开来。模板语言还允许我们定义和使用自定义模板宏,将低级优化与模板中描述的数字方案隔离开来。我们展示了三个用例,每个用例都专注于我们的一个用户角色,展示了代码生成模块的设计如何允许轻松扩展求解器方案以支持应用程序的新需求,添加优化的算法方案(减少内存占用,例如),或提供改进的低级 SIMD 矢量化支持。
更新日期:2020-03-31
down
wechat
bug