当前位置: 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.)
High-performance symbolic-numerics via multiple dispatch
arXiv - CS - Mathematical Software Pub Date : 2021-05-09 , DOI: arxiv-2105.03949
Shashi Gowda, Yingbo Ma, Alessandro Cheli, Maja Gwozdz, Viral B. Shah, Christopher Rackauckas

As mathematical computing becomes more democratized in high-level languages, high-performance symbolic-numeric systems are necessary for domain scientists and engineers to get the best performance out of their machine without deep knowledge of code optimization. Naturally, users need different term types either to have different algebraic properties for them, or to use efficient data structures. To this end, we developed Symbolics.jl, an extendable symbolic system which uses dynamic multiple dispatch to change behavior depending on the domain needs. In this work we detail an underlying abstract term interface which allows for speed without sacrificing generality. We show that by formalizing a generic API on actions independent of implementation, we can retroactively add optimized data structures to our system without changing the pre-existing term rewriters. We showcase how this can be used to optimize term construction and give a 113x acceleration on general symbolic transformations. Further, we show that such a generic API allows for complementary term-rewriting implementations. We demonstrate the ability to swap between classical term-rewriting simplifiers and e-graph-based term-rewriting simplifiers. We showcase an e-graph ruleset which minimizes the number of CPU cycles during expression evaluation, and demonstrate how it simplifies a real-world reaction-network simulation to halve the runtime. Additionally, we show a reaction-diffusion partial differential equation solver which is able to be automatically converted into symbolic expressions via multiple dispatch tracing, which is subsequently accelerated and parallelized to give a 157x simulation speedup. Together, this presents Symbolics.jl as a next-generation symbolic-numeric computing environment geared towards modeling and simulation.

中文翻译:

通过多次调度获得高性能的符号数字

随着数学计算在高级语言中变得更加民主化,高性能的符号数字系统对于领域科学家和工程师来说是必不可少的,以便他们在不具备深厚代码优化知识的情况下从其机器中获得最佳性能。自然地,用户需要不同的术语类型以为其具有不同的代数性质,或使用有效的数据结构。为此,我们开发了Symbolics.jl,这是一个可扩展的符号系统,该系统使用动态多重分派来根据域需求更改行为。在本文中,我们详细介绍了一个底层的抽象术语接口,该接口允许在不牺牲通用性的情况下提高速度。我们表明,通过对与实现无关的操作形式化通用API进行规范,我们可以将优化的数据结构追溯添加到我们的系统中,而无需更改现有的术语重写器。我们展示了如何将其用于优化术语构造并在一般符号转换上提供113倍的加速。此外,我们证明了这样的通用API允许互补的术语重写实现。我们演示了在经典术语重写简化程序和基于电子图的术语重写简化程序之间交换的能力。我们展示了一个电子图形规则集,该规则集可最小化表达式评估过程中的CPU周期数,并演示如何简化现实世界的反应网络仿真以将运行时间减半。此外,我们展示了一个反应扩散偏微分方程求解器,该求解器可以通过多次调度跟踪自动转换为符号表达式,随后对其进行加速和并行化,以提供157倍的仿真速度。总之,这将Symbolics.jl呈现为面向建模和仿真的下一代符号数字计算环境。
更新日期:2021-05-11
down
wechat
bug