论文标题
部分可观测时空混沌系统的无模型预测
Forward-Mode Automatic Differentiation of Compiled Programs
论文作者
论文摘要
算法分化(AD)是一组技术,可提供计算机实现功能的部分衍生物。该功能可以通过其源代码或在编译其源代码时产生的中间表示形式提供给最先进的广告工具。 我们介绍了新颖的AD Tool derivgrind,它通过前向模式广告逻辑增强了编译程序的机器代码。 derivgrind利用对机器代码的结构化访问的阀仪框架以及用于存储点值的阴影存储器工具。对于定义输入和输出变量的文件,最多需要访问源代码。 衍生品的多功能性的价格是将运行时间缩放在30到75之间,该因子基于基于数值求解器的基准测量,用于部分微分方程。我们广泛的回归测试套件的结果表明,衍生品可在包括python解释器在内的GCC和clang编译程序上产生正确的结果,但有少量例外。虽然我们提供了衍生节目无法正确处理的方案列表,但几乎所有这些方案都是学术反例或源自高度优化的数学库。只要避免区分这些区别,衍生物就可以应用于空前的跨语言或部分封闭源软件,而没有集成工作。
Algorithmic differentiation (AD) is a set of techniques that provide partial derivatives of computer-implemented functions. Such a function can be supplied to state-of-the-art AD tools via its source code, or via an intermediate representation produced while compiling its source code. We present the novel AD tool Derivgrind, which augments the machine code of compiled programs with forward-mode AD logic. Derivgrind leverages the Valgrind instrumentation framework for a structured access to the machine code, and a shadow memory tool to store dot values. Access to the source code is required at most for the files in which input and output variables are defined. Derivgrind's versatility comes at the price of scaling the run-time by a factor between 30 and 75, measured on a benchmark based on a numerical solver for a partial differential equation. Results of our extensive regression test suite indicate that Derivgrind produces correct results on GCC- and Clang-compiled programs, including a Python interpreter, with a small number of exceptions. While we provide a list of scenarios that Derivgrind does not handle correctly, nearly all of them are academic counterexamples or originate from highly optimized math libraries. As long as differentiating those is avoided, Derivgrind can be applied to an unprecedentedly wide range of cross-language or partially closed-source software with little integration efforts.