TFad公司

有效梯度计算的半自动微分法许多大规模计算都涉及网格和网格单元函数的第一(有时更高)偏导数。从原理上讲,自动微分法(AD)比传统的有限差分法更有效、更准确地提供所需的部分。AD需要修改源代码,这可能只是对声明的更改。这种简单的变化可以很容易地得到改进的结果,例如,当雅可比向量积迭代求解非线性方程时。当需要梯度(比如优化)并且问题涉及多个变量时,理论上“反向广告”是非常有效的,但是当自动直接执行时,可能会占用大量的内存。在这种情况下,将AD分别应用于每个元素函数,并手动组装梯度块——半自动微分——可以高效、准确地提供梯度。本文介绍了目前正在进行的工作,比较了反向AD的几种实现方法,描述了一个简单的用于梯度计算的操作符重载实现,并对一些网格优化实例进行了比较。专门实现的思想可以用于C和C++的完全通用的源代码到源代码转换器。