编译程序的正向模式自动微分
摘要:算法微分(AD)是一组技术,提供计算机实现函数的偏导数。可以通过源代码或源代码编译时生成的中间表示形式将此函数提供给最先进的AD工具。 我们提出了一种新颖的AD工具Derivgrind,它利用Valgrind插装框架对编译程序的机器代码进行前向模式的AD逻辑增强。Derivgrind利用阴影内存工具存储dot值,并以结构化方式访问机器代码。只需要访问定义输入和输出变量的文件才需要访问源代码。 Derivgrind的多功能性使其运行时间增加了30到75倍,基于一个偏微分方程数值求解器的基准测试结果表明。我们进行了大量的回归测试,结果表明Derivgrind在GCC和Clang编译的程序上产生了正确的结果,包括一个Python解释器,只有少数几个例外。我们列出了Derivgrind无法正确处理的场景,几乎所有这些场景都是学术反例或来自高度优化的数学库。只要避免对这些进行微分,Derivgrind可以应用于前所未有的广泛的跨语言或部分闭源软件,并且几乎不需要集成工作。
作者:Max Aehle, Johannes Bl"uhdorn, Max Sagebaum, Nicolas R. Gauger
论文ID:2209.01895
分类:Mathematical Software
分类简称:cs.MS
提交时间:2023-07-10