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