您当前所在位置:首页 > 论文 > 理学论文 > 物理学论文

自动微分转换系统及其应用

编辑:

2014-05-12

2.1 微分代码转换

DFT系统是基于YACC在UNIX环境下开发的,其结构图2.2所示。通过DFT系统产生的切线性模式代码成对出现,并在语句级程度上做了简化,可读性很强,如图2.4。

切线性模式

评价函数集

图2.2 微分代码转换

微分代码转换部分从功能上分为四个部分:词法分析,语义分析,对象复杂性及数据相关分析和微分代码转换。对于一组具有复杂数据相关的程序模式对象,通常需要系统运行两遍才能得到有效而可靠的微分代码。这主要有两方面的考虑:其一,根据对象的复杂性(如最大语句长度、最大变量维数、子过程或函数数目、子过程或函数内最大变量数目等对象特征)选择合适的系统参数以求最优的运行代价;其二,模式内各子过程或函数之间以及一个子过程或函数内往往具有很强的数据相关性,需要事先保存对象的相关信息并且在考虑当前对象的属性之前必须做上下文相关分析。

2.2 微分代码评价

通常,评价一个编译系统的性能有很多方面,如处理速度、结果代码可靠性及质量、出错诊断、可扩展和可维护性等。对于一类自动微分系统来说,由于软件开发人力的局限以及对象模式的复杂多样性,通过自动转换得到的微分模式并非常常是有效而可靠的(即无论是在数学意义上还是在程序逻辑上应与期待的理想结果一致),因而在微分模式被投入实际应用前,往往需要投入一定的人力来对其做严格的分析测试。

对切线性模式做统计评价测试的主要内容可以简单叙述为:在网格化的模式定义域空间内,选择所有可能的网格点形成微分模式计算的初始场;在不同的网格点附近,随机选取至少 个线性无关的初始扰动,对每个扰动输入分别进行网格点逼近,统计考察模式输出差分和微分在有效位数上的逼近程度。图2.5描述了整个测试过程,它包含网格点数据随机采样(1)和网格点数据逼近(2)两级循环。

3.系统主要特色

DFT系统并不是一个完整的FORTRAN编译器,但它几乎可以接受和处理所有FORTRAN 77编写的源模式代码,并且可以很方便地扩展并接受FORTRAN 90编写的源模式代码。本节将着重介绍DFT系统(版本3.0)的以下几个重要特色。

3.1 结构化的微分实现

DFT系统采用标准化的代码实现,切线性模式的扰动变量和基态值变量、微分计算语句和基态值计算语句总是成对出现,并具有清晰的程序结构。微分代码保持了原模式本身的结构和风格(如并行和向量特性、数据精度等),即语句到语句、结构到结构的微分实现。在奇异点或不可导处,DFT系统对微分扰动采取简单的清零处理,实践证明这对抑制扰动计算溢出具有重要意义,但并不影响评价测试结果。

3.2 全局数据相关分析

DFT系统具有较强的数据相关分析能力,它包括全局数据IO相关分析、全局数据依赖相关分析、全局过程相关分析以及数据迭代相关分析几个不同方面。数据依赖相关与数据IO相关关系密切,但又存在根本不同。前者强调每个变量在数学关系上的依赖性;而后者描述了一个对象的输入输出特性,且具有相对性,即任何一个变量参数,无论它是独立变量还是依赖变量,在数学意义上都可等价为一个既是输入又是输出的参数来处理。

DFT系统记录所有过程参数的IO属性表,通过深度递归相关计算,准确计算每个过程参数的最终IO属性。DFT系统通过对数据相关矩阵做模二和及自乘迭代计算(An+1= An⊕An2)来完成数据的依赖相关分析,这种算法具有很好的对数收敛特性。DFT系统通过全局过程相关分析的结果,自动生成模式的局部或整体相关引用树结构(如图3.1),这对用户分析复杂数值模式和微分评价测试都具有很好的指导作用。DFT系统还具有分析局部数据迭代相关和函数迭代相关的能力,这两种形式的数据迭代相关是自动微分实现颇具挑战的难题之一。

3.3 自动生成测试程序

基于IO相关分析的结果,DFT系统自动生成微分测试代码,分别对切线性模式的可靠性和运行代价做统计评价测试。特别地,DFT系统还可将任何模式参数都视为输入输出参数,生成在数学意义上等价的测试代码,这样处理的不利之处在于往往需要极高的存储开销。

3.4 基于语句级的代码优化

目前,DFT系统仅仅具备局地优化能力。在语句级微分实现上采用二元归约的方法对微分代码进行优化是DFT系统的一个重要特色。根据右端表达式的乘法复杂性及含变元数目的不同,DFT系统采取不同的分解策略。二元归约的方法避免了微分计算中的许多冗余计算,在一些复杂的非线性表达式的微分计算中具有最小的计算代价,同时也非常适合于微分系统的软件实现。同时,对于某些特殊的运算操作(除法、乘方)和特殊函数(如sqrt、exp),DFT系统较好地利用了基态值计算得到的中间结果,避免了微分实现中的冗余计算。

4.系统应用

运用自动微分工具得到的切线性模式,可以在无截断误差意义下求解函数的数值微分和导数、稀疏雅可比矩阵。同时这些结果在数值参数敏感性分析、非线性最优化以及其它数值理论分析中有着非常重要的应用。这里简单介绍切线性模式的几个基本应用。

4.1 符号导数和微分

如果输入为数学关系式,DFT系统可以自动生成对应的微分表达式和梯度,而与数学关系式的复杂程度无关。例如我们输入关系式:

DFT系统将自动生成其符号微分形式及其梯度形式分别为

4.2 数值导数和微分

切线性模式最基本的应用就是在一定扰动输入下求解输出变量的扰动(响应)。表4.1给出了DFT系统在对IAP 9L模式、GPS Rayshooting模式和GPS Raytrace模式三个数值模式做切线性化的具体应用中,一些不同计算粒度、不同引用深度和不同程序风格的核心子过程,以及它们的切线性模式在SGI 2000上运行的统计评价测试结果,其中切线性模式的可靠性指标都准确到六个有效数字以上,在运行时间、存储开销和代码复杂性方面分别是原模式的两倍左右,比较接近于理想的微分代价结果(1.5倍)。除了IAP 9L模式由于过于复杂仅做粗略统计外,其余模式都用非注释语句行数来表示各自的代码复杂性。

性能指标

对象模式 运行时间(10-3秒) 存储开销(字节数) 代码复杂性

原模式 切线性

模式

原模式 切线性

模式

原模式 切线性

模式

Xyz2g 2.530 6.160 5524 11048 55 89

IntCIRA 1.560 2.750 1334 2661 41 65

Dabel 0.035 0.072 60 120 27 49

LSS 8.300 17.50 669 1338 79 143

RP 42.40 85.10 3605 7210 22 38

Vgrad1 0.100 0.212 18564 36828 24 54

RefGr 43.00 86.00 718654 1437308 35 78

LL2JK 0.626 1.350 2622 5244 22 32

标签:物理学论文

免责声明

精品学习网(51edu.com)在建设过程中引用了互联网上的一些信息资源并对有明确来源的信息注明了出处,版权归原作者及原网站所有,如果您对本站信息资源版权的归属问题存有异议,请您致信qinquan#51edu.com(将#换成@),我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。