克里斯蒂安·比肖夫。;保罗·D·霍夫兰。;博亚娜·诺里斯 关于自动区分工具的实现。 (英语) Zbl 1168.65324号 高-订购符号。计算。 21,第3号,311-331(2008). 摘要:自动微分是一种将微分规则应用于源代码的语义转换。因此,它将计算数学函数的计算机程序转换为计算函数及其导数的程序。导数在各种科学计算应用中发挥着重要作用,包括数值优化、非线性方程解、灵敏度分析和非线性反问题。我们描述了自动区分的正向和反向模式,并提供了实施策略的概览。我们描述了实现自动差异化工具的一些挑战,重点是基于源代码转换的工具。最后,我们概述了当前的研究和未来的机会。 引用于9文件 MSC公司: 65D25个 数值微分 68瓦30 符号计算和代数计算 关键词:语义转换;自动微分;算法;计算机程序 软件:承认;AceGen公司;奥德赛;AD01公司;蟒蛇;FADBAD公司++;ADiMat公司;MXYZPTLK公司;青少年-C;AUTO_DERIV公司;SUIF公司;AMPL公司;TAMC公司;ADIFR公司;GAMS游戏;ADIC公司;旋转;TAF公司;玫瑰色;CppAD公司 PDF格式BibTeX公司 XML格式引用 \textit{C.H.Bischof}等人,高-订购符号。计算。21,第3号,311--331(2008;Zbl 1168.65324) 全文: 内政部 参考文献: [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的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。