MIRGE is a computational approach for scientific computing based on NumPy-like array computation, but using lazy evaluation to recast computation as data-flow graphs, where nodes represent immutable, multi-dimensional arrays. Evaluation of an array expression is deferred until its value is needed, at which point a pipeline is invoked that transforms high-level array expressions into lower-level intermediate representations (IR) and finally into executable code, through a multi-stage process. Domain-specific transformations, such as metadata-driven optimizations, GPU-parallelization strategies, and loop fusion techniques, improve performance and memory efficiency. MIRGE employs "array contexts" to abstract the interface between array expressions and heterogeneous execution environments (for example, lazy evaluation via OpenCL, or eager evaluation via NumPy or CuPy). The framework thus enables performance portability as well as separation of concerns between application logic, low-level implementation, and optimizations. By enabling scientific expressivity while facilitating performance tuning, MIRGE offers a robust, extensible platform for both computational research and scientific application development. This paper provides an overview of MIRGE. We further describe an application of MIRGE called MIRGE-Com, for supersonic combusting flows in a discontinuous Galerkin finite-element setting. We demonstrate its capabilities as a solver and highlight its performance characteristics on large-scale GPU hardware.
翻译:MIRGE是一种基于类NumPy数组计算但采用惰性求值的科学计算方法,它将计算重构为数据流图,其中节点表示不可变的多维数组。数组表达式的求值会延迟到需要其值时进行,此时会调用一个流水线,通过多阶段过程将高级数组表达式转换为低级中间表示,最终生成可执行代码。领域特定的转换,例如元数据驱动的优化、GPU并行化策略和循环融合技术,提高了性能和内存效率。MIRGE采用“数组上下文”来抽象数组表达式与异构执行环境之间的接口(例如,通过OpenCL进行惰性求值,或通过NumPy或CuPy进行即时求值)。因此,该框架实现了性能可移植性,并分离了应用逻辑、底层实现和优化之间的关注点。MIRGE在支持科学表达性的同时便于性能调优,为计算研究和科学应用开发提供了一个稳健、可扩展的平台。本文概述了MIRGE。我们进一步描述了MIRGE的一个应用——MIRGE-Com,用于在间断伽辽金有限元框架下模拟超声速燃烧流动。我们展示了其作为求解器的能力,并重点介绍了其在大规模GPU硬件上的性能特征。