针对C语言自动微分系统及其应用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
针对C语言自动微分系统及其应用

针对C语言自动微分系统及其应用   (中国科学院 a.软件研究所 并行计算实验室;b.研究生院;c.计算机网络信息中心, 北京 100190)   ??   摘 要:采用切线性模式和代码转换策略,开发了C语言自动微分转换系统(DTC),用于牛顿法求解非线性方程中Jacobi矩阵―向量乘积计算。介绍系统计算模型、功能、特色,并讨论系统的设计与实现技术,包括编译技术、微分代码转换及输入/输出(I/O)相关分析。最后给出了几个具有说服力的测试与应用。??   关键词:自动微分;切线性模式;Jacobi矩阵??   中图分类号:TP312 文献标志码:A    文章编号:1001?B3695(2009)01?B0155?B04   ??   Differentiation transforming system in C and its applications   ZHANG Chunhuia,b, CHENG Qiangc, CAO Jianwena   ??(a.Parallel Computing Laboratory, Institute of Software, b.Graduate School, c.Computer Network Information Center, Chinese Academy of Sciences, Beijing 100190, China)   ??Abstract:This paper employed the tangent linear model and the strategy of sourcetosource transformation, developed differentiation transforming system in C (DTC)to calculate the Jacobianvector product in the solution of nonlinear equations with Newton method. Then introduced the calculation model, functionality, and discussed features of the system, and the techniques of design and implementation of the system, including compiler technology, differential code transformation, and input/output (I/O) dependence analysis. Last presented some persuasive testing and applications.??   Key words:automatic differentiation; tangent linear model; Jacobian   ?お?   0 引言??   在大规模科学计算的很多领域,如参数敏感性分析、变分资料同化、最优化设计和反问题等,需要计算函数不同形式的导数。自动微分(automatic differentiation,AD)[1]是一种计算函数导数的方法,它基于链式求导法则,不存在差分方法的截断误差,且应用灵活、开发代价相对较小。任何程序无论多么复杂,都可以分解为一系列顺序执行的基本计算单元,如运算操作(加法、乘法等)和运算函数(三角函数等),而形成从程序输入变量变换到输出变量的执行路径。自动微分方法即是反复应用链式法则,逐次求出每个计算单元的局部偏导数,而最终得到所需的函数偏导数。自动微分方法计算函数导数的两种基本模式分别为正向模式(forward mode)和反向模式(reverse mode)。其中,正向模式是按照从输入变量到输出变量的方向应用链式法则逐次计算每个计算单元的局部偏导数;而反向模式则是按相反的从输出变量到输入变量方向逐次计算的。两种计算模式在不同的问题中各有优势。例如运用伴随模式(典型的一阶反向模式)可以原计算常数倍的时间代价计算函数梯度,相应存储代价较大;切线性模式(典型的一阶正向模式)则适用于计算函数的Jacobi矩阵―向量乘积等,相应存储代价较小。??   有两种基本的自动微分软件实现策略,分别为算子重载(operator overloading)和代码转换(source transformation)。其中,算子重载策略是重载计算程序中的算术运算符及内部数学函数,其重载函数执行原运算操作及相应的局部偏导数计算,此方法适用于支持算子重载的语言,如??C++和Fortran 90等;代码转换策略则是利用编译技术,将

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档