×

关于自动区分工具的实现。 (英语) Zbl 1168.65324号

摘要:自动微分是一种将微分规则应用于源代码的语义转换。因此,它将计算数学函数的计算机程序转换为计算函数及其导数的程序。导数在各种科学计算应用中发挥着重要作用,包括数值优化、非线性方程解、灵敏度分析和非线性反问题。我们描述了自动区分的正向和反向模式,并提供了实施策略的概览。我们描述了实现自动差异化工具的一些挑战,重点是基于源代码转换的工具。最后,我们概述了当前的研究和未来的机会。

MSC公司:

65D25个 数值微分
68瓦30 符号计算和代数计算
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Abate,J.,Bischof,C.,Carle,A.,Roh,L.:二阶自动微分模块的算法和设计。In:程序。1997年符号和代数计算国际研讨会(ISSAC),纽约,第149-155页。计算机协会(1997)·兹比尔0923.68068
[2] Aho,A.V.、Sethi,R.、Ullman,J.D.:编辑者:原理、技术和工具。艾迪生-韦斯利,雷丁(1986)·Zbl 1155.68020号
[3] Allen,R.,Kennedy,K.:为现代架构优化编译器:基于依赖的方法。Morgan Kaufmann,圣马特奥(2002)
[4] Amarasinghe,S.P.、Anderson,J.M.、Lam,M.S.、Tseng,C.W.:可扩展并行机的SUIF编译器。摘自:第七届科学计算并行处理SIAM会议记录(1995年)·Zbl 0960.68544号
[5] Aubert,P.,Di Césaré,N.:表达式模板和正向模式自动微分。在[26]中,第37章,第311-315页(2001年)
[6] Bagge,O.S.,Kalleberg,K.T.,Haveraaen,M.,Visser,E.:C++程序特定领域优化的CodeBoost转换系统设计。In:Binkley,D.,Tonella,P.(编辑):第三届源代码分析和操作国际研讨会(SCAM 2003)。IEEE计算机学会出版社,阿姆斯特丹(2003年出版)
[7] Bartholomew-Biggs,M.:OPFAD–OPtima正向自动区分工具的用户指南。赫特福德大学数值优化中心技术报告(1995年)
[8] Bartholomew-Biggs,M.C.,Brown,S.,Christianson,B.,Dixon,L.C.W.:梯度的有效计算,Jacobians和Hessians。英国哈特菲尔德赫特福德大学数值优化中心NOC TR301技术报告(1995年)
[9] Barton,J.J.,Nackman,L.R.:自动分化。C++代表8(2),61–63(1996)
[10] Beda,L.M.,Korolev,Lenghol,Sukkikh,N.V.,Frolova,T.S.:BESM机器的自动微分程序。苏联莫斯科科学院精密力学与计算技术研究所技术报告(1959年)(俄语)
[11] Bell,B.M.:CppAD用户手册。可在http://www.seanet.com网站/\(\sim\)bradbell/CppAD/(2003)
[12] Bendtsen,C.,Stauring,O.:FADBAD,一个用于自动区分的灵活C++包。技术报告IMM-REP-1996-17,丹麦技术大学数学建模系,丹麦林格比(1996)
[13] Berz,M.、Bischof,C.、Corliss,G.、Griewank,A.(编辑):计算微分:技术、应用和工具。SIAM,费城(1996)·Zbl 0857.00033号
[14] Binkley,D.W.,Gallagher,K.B.:程序切片。高级计算。43, 1–50 (1996) ·doi:10.1016/S0065-2458(08)60641-5
[15] Bischof,C.,Roh,L.:自动微分中间形式(AIF)。未发布信息(1996年)
[16] Bischof,C.,Carle,A.,Corliss,G.,Griewank,A.,Hovland,P.:ADIFOR:从Fortran程序生成派生代码。科学。程序。1(1), 11–29 (1992)
[17] Bischof,C.,Carle,A.,Khademi,P.,Mauer,A.:ADIFOR 2.0:Fortran 77程序的自动区分。IEEE计算。科学。工程3(3),18-32(1996)·Zbl 05092146号 ·doi:10.1109/99.337089
[18] Bischof,C.,Roh,L.,Mauer,A.:ADIC–ANSI-C.Softw的可扩展自动区分工具。实际。实验27(12),1427-1456(1997)·Zbl 05471765号 ·doi:10.1002/(SICI)1097-024X(199712)27:12<1427::AID-SPE138>3.0.CO;第2季度
[19] Bischof,C.H.,Bücker,H.M.,Lang,B.,Rasch,A.:支持从模拟到优化范式转变的交互式环境。参加:2001年10月14日在佛罗里达州坦帕湾举行的ACM面向对象编程、系统、语言和应用会议(OOPSLA’01)上举行的第四届并行/高性能OO科学计算研讨会(POOSC’01)
[20] Bischof,C.H.,Bücker,H.M.,Lang,B.,Rasch,A.,Vehreschild,A.:结合源变换和运算符重载技术来计算MATLAB程序的导数。亚琛工业大学科学计算研究所预印本RWTH-CS-SC-02-04(2002)
[21] Brooke,A.,Kendrick,D.,Meeraus,A.:游戏:用户指南。科学出版社,南旧金山(1988)
[22] Brown,S.:OPRAD–OPtima反向自动区分工具的用户指南。赫特福德大学数值优化中心技术报告(1995年)
[23] Christianson,B.,Dixon,L.C.W.,Brown,S.:使用脏向量共享存储。在[13]中,第107–115页·Zbl 1076.65545号
[24] Christianson,D.B.:通过在ada中反向累积自动生成Hessians。IMA J.数字。分析。(1991)于1991年1月在科罗拉多州布雷肯里奇市SIAM算法自动区分研讨会上发表
[25] Coleman,T.F.,Verma,A.:ADMIT-1:自动微分和MATLAB接口工具箱。ACM事务处理。数学。柔和。26(1), 150–175 (2000) ·Zbl 1137.65329号 ·电话:10.1145/347837.347879
[26] Corliss,G.,Faure,C.,Griewank,A.,Hascoöt,L.,Naumann,U.(编辑):自动区分:从模拟到优化。计算机和信息科学施普林格,纽约(2001)
[27] 爱迪生设计集团:EDG C++前端(2003年)。http://www.edg.com/cpp.html
[28] Faure,C.:多层程序的毗邻策略。最佳方案。方法软件。(2001年,即将出版)。还出现了INRIA Rapport de recherche no.3781,BP 105-78153 Le Chesnay Cedex,France(1999)
[29] Faure,C.,Naumann,U.:最小化磁带大小。在[26]中,第34章,第293-298页(2001年)
[30] 第四,S.:AD在MATLAB中的高效实现。在赫特福德郡联合大学/克兰菲尔德大学(RMCS Shrivenham)自动分化研讨会上的演讲(2001年)。可在http://www.rmcs.cranfield.ac.uk/esd/amor/workshop/alldatastore/ADDAYmay01fort.pdf
[31] Forer,R.,Gay,D.M.,Kernighan,B.W.:AMPL:数学编程的建模语言。科学出版社,南旧金山(1993)·Zbl 0701.90062号
[32] Frazier,Z.:PyAD用户手册。可在http://students.washington.edu/zfrazier/projects/pyad/pyad-doc/ (2003)
[33] Giering,R.,Kaminski,T.:伴随码构造的方法。ACM TOMS 24(4),437–474(1998年)·兹伯利0934.65027 ·数字对象标识代码:10.1145/293686.293695
[34] Giering,R.,Kaminski,T.:应用TAF生成Fortran 77-95程序的高效派生代码。收录于:2002年德国奥格斯堡GAMM会议记录(2002)
[35] Griewank,A.:关于自动微分。摘自:《数学编程:最新发展和应用》,第83–108页。Kluwer学院,阿姆斯特丹(1989)·Zbl 0696.65015号
[36] Griewank,A.:个人沟通(1998)
[37] Griewank,A.:评估衍生品:算法区分的原理和技术。SIAM,费城(2000)·Zbl 0958.65028号
[38] Griewank,A.:在反向自动微分中实现时间和空间复杂性的对数增长。最佳方案。方法软件。1, 35–54 (1992) ·doi:10.1080/10556789208805505
[39] Griewank,A.,Corliss,G.F.:算法的自动区分:理论、实现和应用。SIAM,费城(1991)·Zbl 0747.00030号
[40] Griewank,A.,Reese,S.:关于用Markowitz规则计算雅可比矩阵。在[39]中,第126-135页(1991年)·Zbl 0782.65027号
[41] Griewank,A.,Juedes,D.,Utke,J.:ADOL-C,一个用C/C++编写的算法的自动微分包。ACM事务处理。数学。柔和。22(2), 131–167 (1996) ·Zbl 0884.65015号 ·数字对象标识代码:10.1145/229473.229474
[42] Grimm,J.,Pottier,L.,Rostaing-Schmidt,N.:反转某类程序的最佳时间和最小时空乘积。在[13]中,第95-106页(1996年)·Zbl 0866.65016号
[43] Guyer,S.Z.,Lin,C.:优化高性能软件库的使用。计算机科学课堂讲稿,2017年第227-243页。施普林格,柏林(2001)·兹比尔1014.68775
[44] Hill,D.R.,Rich,L.C.:MATLAB中的自动微分。申请。数字。数学。9, 33–43 (1992) ·Zbl 0753.65017号 ·doi:10.1016/0168-9274(92)90065-L
[45] Hinkins,R.L.:应用于磁场计算的自动微分并行计算。加州大学伯克利分校硕士论文(1994)
[46] Hinsen,K.:科学巨蟒收藏。科学模块。功能。衍生品(2003年)。可在http://starship.python.net/\(\sim\)hinsen/SientificPython/·Zbl 1054.68030号
[47] Hovland,P.D.,Naumann,U.,Norris,B.:基于XML的数字程序语义转换平台。预印ANL/MCS-P950-0402,阿贡国家实验室数学和计算机科学部。《软件工程与应用学报》(SEA 2002)(2002年出版)
[48] Huss,R.E.:衍生品自动评估的ADA库。申请。数学。计算。35(2),103–123(1990)·Zbl 0714.65020号 ·doi:10.1016/0096-3003(90)90112-G
[49] Jerrell,M.:几乎可以使用任何语言进行自动区分。ACM SIGNUM新闻。第2-9页(1989年)
[50] Juedes,D.W.:自动区分工具的分类。在[39]中,第315-329页(1991年)·Zbl 0782.65029号
[51] Kahrimanian,H.G.:数字计算机的分析微分。天普大学硕士论文(1953年)
[52] Kalman,D.,Lindell,R.:天体动力学建模中的自动微分。在[39]中,第228-243页(1991年)
[53] Karczmarczuk,J.:计算机程序的功能区分。J.HOSC 14、35–57(2001)·Zbl 0967.68174号
[54] Kennedy,K.、Broom,B.、Cooper,K.,Dongarra,J.、Fowler,R.、Gannon,D.、Johnsson,L.、Mellor-Crummey,J.和Torczon,L.:伸缩语言:从注释库自动生成科学问题解决系统的策略。J.平行分布计算。61(12), 1803–1826 (2001) ·Zbl 1006.68025号 ·doi:10.1006/jpdc.2001.1724
[55] Korelc,J.:用于多语言和多环境生成数字代码的混合系统。2001年符号和代数计算国际研讨会论文集,第209-216页。ACM出版社(2001)·兹比尔1356.65277
[56] Lawson,C.L.:使用W算法和U算法计算导数。内部计算备忘录CM–286,帕萨迪纳喷气推进实验室(1971)
[57] Lesk,A.M.:导数的动态计算。Commun公司。ACM 10(9),571-572(1967)·Zbl 0147.36103号 ·数字对象标识代码:10.1145/36356.63693
[58] Maany,Z.:用于优化多变量函数的Ada自动微分包。技术报告NOC TR209,英国哈特菲尔德理工学院数值优化中心(1989)
[59] Martins,J.R.R.A.,Kroo,I.M.,Alonso,J.J.:使用复杂变量进行敏感性分析的自动化方法。收录:第38届航空航天科学会议论文集,内华达州雷诺市(2000)
[60] Martins,J.R.R.A.,Sturdza,P.,Alonso,J.J.:复阶导数近似与算法微分之间的联系。摘自:《第39届航空航天科学会议论文集》,内华达州雷诺市(2001年)。Complexify.h和derivify.h位于http://mdolab.utias.utoronto.ca/c++.html格式
[61] Michelotti,L.:MXYZPTLK:一个C++黑客实现的自动区分。在[39]中,第218-227页(1991年)。软件可在网址:http://www.netlib.org/c++/mxyzptlk/·Zbl 0782.65032号
[62] Monagan,M.,Rodoni,R.R.:枫树自动微分正向和反向模式的实现。收录:Berz,M.、Bischof,C.、Corliss,G.、Griewank,A.(编辑)《计算微分:技术、应用和工具》,第353–362页。SIAM,费城(1996)·邮编1076.65500
[63] Muchnick,S.S.:高级编译器设计与实现。Morgan Kaufmann,圣马特奥(1997)
[64] NAG-AD:支持差异化的Fortran编译器技术(2003)。http://www.nag.co.uk/nagware/research/ad_overview.asp
[65] Naumann,U.:通过求解TBR流方程降低反向模式自动微分的内存需求。收录人:Sloot,P.M.A.,Tan,C.J.K.,Dongarra,J.J.(编辑)《国际计算科学会议论文集》,第二部分,荷兰阿姆斯特丹,2002年4月21日至24日。计算机科学课堂讲稿,第2330卷,第1039–1048页。施普林格,柏林(2002)·Zbl 1062.65024号
[66] Naumann,U.:切线和伴随模型的语句级优化。预印ANL-MCS/P1066-0603,阿贡国家实验室(2003)
[67] Naumann,U.,Gottschling,P.:雅可比累积中最优枢轴选择的模拟退火。收录:Albrecht,A.(编辑):随机算法、基础和应用——SAGA’03。柏林,斯普林格(2003年出版)。另请参见http://angelib.sourceforge.net网站/ ·Zbl 1161.90473号
[68] Neildinger,R.D.:自动微分和APL。科尔。数学。J.20(3),238–251(1989)·doi:10.2307/2686776
[69] Nilsson,H.:Dirac脉冲的功能性自动微分。ACM SIGPLAN非。38(9), 153–164 (2003) ·Zbl 1315.68057号 ·数字对象标识代码:10.1145/944746.944720
[70] Nolan,J.F.:数字计算机上的分析微分。麻省理工学院硕士论文(1953年)
[71] Pryce,J.D.、Reid,J.K.:ADO1,用于自动微分的Fortran 90代码。技术报告RAL-TR-1998-057,卢瑟福阿普尔顿实验室,英国牛津郡迪德科特奇尔顿,OX11 OQX(1998)
[72] Quinlan,D.:ROSE:面向对象框架的编译器支持。并行过程。莱特。10(2/3), 215 (2000) ·doi:10.1142/S0129626400000214
[73] Reps,T.、Rosay,G.:精确的程序间切碎。收录于:Kaiser,G.E.(编辑)SIGSOFT'95:第三届ACM SIGSOFT软件工程基础研讨会论文集,第41-52页。ACM出版社(1995)
[74] Restrepo,J.M.,Leaf,G.K.,Griewank,A.:规避变分数据同化中的存储限制。SIAM J.科学。计算。19, 1586–1605 (1998) ·Zbl 0956.76078号 ·doi:10.1137/S1064827595285500
[75] Rostaing,N.,Dalmas,S.,Galligo,A.:奥德赛中的自动区分。泰勒斯45a(5),558–568(1993)
[76] Rote,G.:图中的路径问题。In:Tinhofer,G.,Mayr,E.,Noltemeier,H.,M.M.S.与Albrecht,R.(eds.)计算图理论,Springer-Verlag计算补充7合作。施普林格(1990)·Zbl 0699.68088号
[77] SGI:WHIRL中间语言规范(1999)。可在http://open64.sourceforge.net/documentation.html
[78] Stamatiadis,S.,Prosmiti,R.,Farantos,S.C.:auto_deriv:fortran代码的自动区分工具。计算。物理。Commun公司。127(2&3), 343–355 (2000). 目录编号:ADLS·Zbl 0960.65026号 ·doi:10.1016/S0010-4655(99)00513-5
[79] Tadjouddine,M.,Forth,S.A.,Pryce,J.D.:通过顶点消除和源变换实现的层次自动微分。收录于:Kumar,V.、Gavrilova,M.L.、Tan,C.J.K.(编辑)《国际计算科学及其应用会议论文集》,第二部分,加拿大蒙特利尔,2003年5月18日至21日。计算机科学课堂讲稿,第2668卷,第95-104页。柏林施普林格出版社(2003)
[80] TAPENADE:TAPENAED教程(2002)。http://www-sop.inria.fr/tropics/tapenade/tutorial.html
[81] Tsukanov,I.M.H.:用于快速自动区分的数据结构和算法。国际期刊数字。方法工程56(13),1949–1972(2003)·Zbl 1031.65035号 ·doi:10.1002/nme.647
[82] Veldhuizen,T.:表达式模板。C++报告7(5),26-31(1995)
[83] Wengert,R.E.:一个简单的自动导数评估程序。Commun公司。ACM 7(8),463–464(1964)·Zbl 0131.34602号 ·数字对象标识代码:10.1145/355586.364791
[84] Wilkins,R.D.:数值导数评估新分析模型的研究。Commun公司。ACM 7(8),465–471(1964)·Zbl 0131.34603号 ·数字对象标识代码:10.1145/355586.364792
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。