跳到主要内容
研究论文
开放式访问

Hydra:用程序综合推广剥离优化

出版:2024年4月29日 出版历史
  • 获取引文提醒
  • 摘要

    优化编译器依赖于窥视孔优化来简化指令组合并删除冗余指令。通常,当编译器开发人员注意到一个优化机会(一组可以改进的相关指令)并手动派生出更通用的重写规则时,就会添加一个新的窥视孔优化,该规则不仅优化原始代码,还优化其他类似的指令集。在本文中,我们介绍了Hydra,这是一个工具,它使用一系列以程序合成为中心的技术,自动完成窥视孔优化的推广过程。我们解决的最重要的问题之一是找到每个优化的版本,该版本与优化输入的比特宽度无关(如果存在此版本)。我们的研究表明,Hydra可以将LLVM开发人员发布到LLVM项目的问题跟踪器中的75%的未通用错过的窥视孔优化进行概括。Hydra的所有通用窥视孔优化都已经过正式验证,而且我们可以自动将其转换为适合包含在LLVM过程中的C++代码。

    工具书类

    [1]
    亚历山德罗·阿巴特(Alessandro Abate)、克里斯蒂娜·戴维(Cristina David)、帕斯卡尔·凯塞利(Pascal Kesseli)、丹尼尔·克罗宁(Daniel Kroening)和伊丽莎白·波尔格林(Elizabeth Polgreen)。2018.反例引导归纳合成模理论。在计算机辅助验证国际会议上。270–288.
    [2]
    拉杰夫·阿鲁尔(Rajeev Alur)、拉斯蒂斯拉夫·博迪克(Rastislav Bodik)、加维特·朱尼瓦尔(Garvit Juniwal)、米洛·M·K·马丁(Milo M.K.Martin)、穆昆德·拉戈塔曼(Mukund Raghothaman)、桑吉特·塞希亚(Sanjit A.Seshia)、里沙布·辛格(Rishabh Singh)、阿曼。2013年。语法指导合成。计算机辅助设计中的形式方法,1-17。https://doi.org/10.109/FMCAD.2013.6679385
    [3]
    拉杰夫·阿鲁尔(Rajeev Alur)、帕沃尔·乔恩(Pavol Courn)和阿琼·拉德哈克里什纳(Arjun Radhakrishna)。2015年,通过统一进行综合。在计算机辅助验证中,丹尼尔·科伦宁(Daniel Kroening)和科琳娜·斯佩尔纳乌(Corina S.PSreanu)(编辑)。163–179. 国际标准编号:978-3-319-21668-3https://doi.org/10.1007/978-3-319-21668-3_10
    [4]
    Rajeev Alur、Arjun Radhakrishna和Abhishek Udupa。2017年,通过划分和征服缩放枚举程序合成。在系统构建和分析的工具和算法中,Axel Legay和Tiziana Margaria(编辑)。施普林格-柏林-海德堡,柏林,海德堡。319–336。国际标准编号:978-3-662-54577-5https://doi.org/10.1007/978-3-662-54577-5_18
    [5]
    索拉夫·班萨尔和亚历克斯·艾肯。2006.Peephole超级优化器的自动生成。第12届程序设计语言和操作系统体系结构支持国际会议论文集。394–403. https://doi.org/10.1145/1168918.1168906
    [6]
    Clark Barrett、Christopher L.Conway、Morgan Deters、Liana Hadarean、Dejan Jovanović、Tim King、Andrew Reynolds和Cesare Tinelli。2011年。CVC4。在计算机辅助验证中,Ganesh Gopalakrishnan和Shaz Qadeer(编辑)。施普林格-柏林-海德堡,柏林,海德堡。171-177。国际标准编号:978-3-642-22110-1
    [7]
    詹姆斯·博恩霍尔特(James Bornholt)、埃米娜·托拉克(Emina Torlak)、丹·格罗斯曼(Dan Grossman)和路易斯·塞兹(Luis Ceze)。2016.使用元草图优化合成。第43届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL’16)会议记录。775–788. https://doi.org/10.1145/2837614.2837666
    [8]
    塞巴斯蒂安·布奇瓦尔德。2015年,Optgen:局部优化生成器。在第24届编译器构造国际会议(CC 2015)上,Björn Franke(Ed.)。英国伦敦,171–189。
    [9]
    JoséCambronero、Sumit Gulwani、Vu Le、Daniel Perelman、Arjun Radhakrishna、Clint Simon和Ashish Tiwari,2023年。FlashFill++:通过示例缩放编程,切换到Chase。程序。ACM计划。Lang.,7,POPL(2023),第33条,1月,30页。https://doi.org/10.1145/3571226
    [10]
    杰克·戴维森和克里斯托弗·弗雷泽。1984年,Peephole优化的自动生成。1984年SIGPLAN编译器构造研讨会(SIGPLAN’84)会议记录。美国纽约州纽约市计算机协会111-116。编号:0897911393https://doi.org/10.1145/502874.502885
    [11]
    莱昂纳多·德·莫拉和尼古拉·比约纳。2008.Z3:一个高效的SMT解算器。《软件理论与实践学报》,第14届国际系统构建与分析工具与算法会议(TACAS'08/ETAPS'08)。斯普林格·弗拉格,柏林,海德堡。337–340。编号:3540787992
    [12]
    布鲁诺·杜特雷。2015.用Yices解决存在/根本问题。第十三届满意度模理论国际研讨会(SMT 2015)。
    [13]
    Burak Ekici、Arjun Viswanathan、Yoni Zohar、Cesare Tinelli和Clark Barrett。2023.Coq中位向量可逆条件的形式验证。在组合系统的前沿,Uli Sattler和Martin Suda(编辑)。瑞士查姆施普林格自然。41–59.编号:978-3-031-43369-6
    [14]
    格雷姆·恒河(Graeme Gange)、豪尔赫·纳瓦斯(Jorge A.Navas)、彼得·沙赫特(Peter Schachte)、哈拉尔德·森德加德(Harald Söndergaard)和彼得·詹姆斯·斯塔基(Peter James Stuckey)。2013.非格抽象域上的抽象解释。在SAS中。
    [15]
    克莱尔·勒·古伊斯(Claire Le Goues)、迈克尔·普拉德尔(Michael Pradel)和阿比克·罗伊乔杜里(Abhik Roychoudhury)。2019.自动程序修复。Commun公司。ACM,62,12(2019年),11月56-65日。编号:0001-0782https://doi.org/10.1145/3318162
    [16]
    菲利普·格兰杰(Philippe Granger)。1989.算术同余的静态分析。国际计算机数学杂志,30,3-4(1989),165-190。https://doi.org/10.1080/00207168908803778arxiv公司:https://doi.org/10.1080/00207168908803778。
    [17]
    苏米特·古尔瓦尼。2011.使用输入输出示例在电子表格中自动处理字符串。在POPL'11中。
    [18]
    郑果、迈克尔·詹姆斯、大卫·朱斯托、周家雄、王子腾、兰吉特·贾拉和娜迪娅·波里卡波娃。2019.通过类型引导的抽象提炼进行程序合成。程序。ACM计划。Lang.,4,POPL(2019),第12条,12月。,https://doi.org/10.1145/3371080
    [19]
    Susmit Jha和Sanjit A.Seshia。2017年,通过归纳学习的形式合成理论。《信息学报》,54,7(2017),693–726。国际标准编号:1432-0525https://doi.org/10.1007/s00236-017-0294-5
    [20]
    Jiajun Jiang、Luyao Ren、Yingfei Xiong和Lingming Zhang。2020年。通过大代码从奇异示例推断程序转换。第34届IEEE/ACM自动化软件工程国际会议(ASE’19)论文集。IEEE出版社,255-266。国际标准号码:9781728125084https://doi.org/10.109/ASE.2019.00033
    [21]
    Rajeev Joshi、Greg Nelson和Keith Randall。2002.德纳利:目标导向的超级优化者。在2002年ACM SIGPLAN关于编程语言设计和实现的会议记录(PLDI’02)中。304–314.
    [22]
    Pankaj Kumar Kalita、Sujit Kumar Muduli、Loris D'Antoni、Thomas Reps和Subhajit Roy。2022.合成抽象变压器。程序。ACM计划。Lang.,6,OOPSLA2(2022),第171条,10月,29页。https://doi.org/10.1145/3563334
    [23]
    安迪·金和哈拉尔德·森德加德。2010.同余自动文摘。在验证、模型检查和抽象解释中,Gilles Barthe和Manuel Hermenegildo(编辑)。施普林格-柏林-海德堡,柏林,海德堡。197-213。国际标准编号:978-3-642-11319-2
    [24]
    Woosuk Lee、Kihong Heo、Rajeev Alur和Mayur Naik。2018.使用学习概率模型加速基于搜索的程序合成。第39届ACM SIGPLAN编程语言设计与实现会议记录(PLDI 2018)。436–449. 国际标准编号:978-1-4503-5698-5https://doi.org/10.1145/3192366.3192410
    [25]
    LLVM-长度参考。2023.LLVM语言参考手册。http://llvm.org/docs/LangRef.html访问时间:9-1-2023
    [26]
    范龙、彼得·阿米登和马丁·里纳德。2017.自动推理代码转换以生成补丁。2017年第11届软件工程基础联合会议记录(ESEC/FSE 2017)。美国纽约计算机械协会,727–739。编号:9781450351058https://doi.org/10.1145/3106237.3106253
    [27]
    Nuno P.Lopes、Juneyong Lee、Chung-Kil Hur、Zhengyang Liu和John Regehr。2021.Alive2:LLVM的有限翻译验证。第42届ACM SIGPLAN编程语言设计与实现国际会议论文集(PLDI 2021)。计算机械协会,美国纽约州纽约市65–79。编号:9781450383912https://doi.org/10.1145/3453483.3454030
    [28]
    Nuno P.Lopes、David Menendez、Santosh Nagarakatte和John Regehr。2015年,通过Alive显著纠正Peephole优化。第36届ACM SIGPLAN编程语言设计与实现会议论文集。22–32.
    [29]
    努诺·P·洛佩斯和何塞·蒙泰罗。2014.编译器优化的最弱前提合成。在验证、模型检查和抽象解释中,Kenneth L.McMillan和Xavier Rival(编辑)。施普林格-柏林-海德堡,柏林,海德堡。203-221。isbn:978-3-642-54031-4
    [30]
    亨利·马萨林。1987。超级优化器:看最小的程序。第二届编程语言和操作系统体系结构支持国际会议论文集(ASPLOS’87)。122–126. https://doi.org/10.1145/36177.36194
    [31]
    W.M.McKeeman。1965.剥离优化。Commun公司。ACM,8,7(1965),7月,443-444。
    [32]
    David Menendez和Santosh Nagarakatte。2017年,实时信息:LLVM中Peephole优化的数据驱动前提推理。SIGPLAN否。,52,6(2017年),6月,49–63日。发行编号:0362-1340https://doi.org/10.1145/3140587.3062372
    [33]
    Na Meng、Miryung Kim和Kathryn S.McKinley。2011.系统编辑:通过示例生成程序转换。SIGPLAN否。,46,6(2011),6月,329-342。发行编号:0362-1340https://doi.org/10.1145/1993316.1993537
    [34]
    Manasij Mukherjee、Pranav Kant、Zhengyang Liu和John Regehr。2020年。基于数据流的修剪以加快超级优化。程序。ACM计划。Lang.,4,OOPSLA(2020),第177条,11月,24页。https://doi.org/10.1145/3428245
    [35]
    Stas Negara、Nicholas Chen、Mohsen Vakilian、Ralph E.Johnson和Danny Dig。2013年,手动和自动重构的对比研究。在ECOOP 2013–面向对象编程中,Giuseppe Castagna(Ed.)。斯普林格-柏林-海德堡,柏林,海德堡。552-576。国际标准编号:978-3-642-39038-8
    [36]
    Aina Niemetz、Mathias Preiner、Andrew Reynolds、Yoni Zohar、Clark Barrett和Cesare Tinelli。2019.在SMT解决方案中实现位宽独立证明。在自动扣除-CADE 27中,Pascal Fontaine(Ed.)。施普林格国际出版社,美国商会。366–384. 国际标准编号:978-3-030-29436-6
    [37]
    萨斯瓦特·帕迪(Saswat Padhi)、拉胡尔·夏尔马(Rahul Sharma)和托德·米尔斯坦(Todd Millstein)。2016年,具有学习特征的数据驱动前提推理。第37届ACM SIGPLAN编程语言设计与实现会议记录(PLDI’16)。计算机械协会,美国纽约州纽约市42–56。编号:9781450342612https://doi.org/10.1145/2908080.2908099
    [38]
    Phitchaya Mangpo Phothilimthana、Aditya Thakur、Rastislav Bodik和Dinakar Dhurjati。2016.扩大超级优化。第二十届编程语言和操作系统体系结构支持国际会议(ASPLOS’16)论文集。297–310. 编号:978-1-4503-4091-5https://doi.org/10.1145/2872362.2872387
    [39]
    罗利姆(Rolim)、古斯塔沃·苏亚雷斯(Gustavo Soares)、洛里斯·德安东尼(Loris D'Antoni)、奥列克桑德·波洛佐夫(Oleksandr Polozov)、苏米特·古尔瓦尼(Sumit Gulwani)、罗希特·盖伊(Rohit Gheyi)、铃木良(Ryo Suzuk。2017.通过示例学习语法程序转换。第39届国际软件工程会议(ICSE’17)论文集。IEEE出版社,404–415。国际标准号码:9781538638682https://doi.org/10.109/ICSE.2017.44
    [40]
    邓肯·桑兹。2011年,超优化LLVM IR。http://llvm.org/devmtg/2011-11/Sands_Super-optimizingLLVMIR.pdf2011年LLVM开发商会议上的演示
    [41]
    Raimondas Sasnauskas、Yang Chen、Peter Collingbourne、Jeroen Ketema、Gratian Lup、Jubi Taneja和John Regehr。2017年。Souper:一个综合超级优化器。arxiv:1711.04422。
    [42]
    埃里克·施库夫扎(Eric Schkufza)、拉胡尔·夏尔马(Rahul Sharma)和亚历克斯·艾肯(Alex Aiken)。2013.随机超级优化。《第十八届国际编程语言和操作系统体系结构支持会议记录》(ASPLOS’13)。305–316. 编号:978-1-4503-1870-9https://doi.org/10.1145/2451116.2451150
    [43]
    史肯森(Kensen Shi)、雅各布·斯坦哈特(Jacob Steinhardt)和梁伯西(Percy Liang)。2019.FrAngel:基于成分的合成与控制结构。程序。ACM计划。Lang.,3,POPL(2019),第73条,1月,73:1–73:29页。编号:2475-1421https://doi.org/10.1145/3290386
    [44]
    阿曼多·索拉尔·勒扎马(Armando Solar-Lezama)。2008年,《素描课程综合》。博士论文。美国加利福尼亚州伯克利市:978-1-109-09745-0 AAI3353225
    [45]
    Venkatesh Srinivasan、Tushar Sharma和Thomas Reps.2016年。加速机器代码合成。2016年ACM SIGPLAN面向对象编程、系统、语言和应用国际会议论文集(OOPSLA 2016)。165–180. 国际标准编号:978-1-4503-4444-9https://doi.org/10.1145/2983990.2984006
    [46]
    Jubi Taneja、Zhengyang Liu和John Regehr。2020年,测试静态分析的精确度和可靠性。第18届ACM/IEEE代码生成和优化国际研讨会(CGO 2020)会议记录。美国纽约州纽约市计算机协会81–93。编号:9781450370479https://doi.org/10.1145/3368826.3377927
    [47]
    罗斯·泰特(Ross Tate)、迈克尔·斯特普(Michael Stepp)和索林·勒纳(Sorin Lerner)。2010.根据证明生成编译器优化。第37届ACM SIGPLAN-SIGACT编程语言原理研讨会(POPL'10)会议记录。计算机械协会,美国纽约州纽约市389–402。编号:9781605584799https://doi.org/10.1145/1706299.1706345
    [48]
    罗斯·泰特(Ross Tate)、迈克尔·斯特普(Michael Stepp)、扎卡里·塔特洛克(Zachary Tatlock)和索林·勒纳(Sorin Lerner)。2009.平等饱和:一种新的优化方法。第36届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录(POPL'09)。计算机械协会,美国纽约州纽约市264–276。国际标准编号:9781605583792https://doi.org/10.1145/14080881.1480915
    [49]
    阿什什·蒂瓦里(Ashish Tiwari)、阿德里·加斯科恩(AdriáGascon)和布鲁诺·杜特雷(Bruno Dutertre)。2015年,使用双重解释进行程序合成。在自动扣除-CADE-25中,Amy P.Felty和Aart Middeldorp(编辑)。施普林格国际出版公司,Cham。482–497. 编号:978-3-319-21401-6
    [50]
    杨学军、杨晨、埃里克·艾德和约翰·雷格。2011.发现并理解C编译器中的错误。在第32届ACM SIGPLAN编程语言设计与实现会议论文集(PLDI’11)。283–294. https://doi.org/10.1145/1993316.1993532

    建议

    评论

    信息和贡献者

    问询处

    发布于

    封面图片美国计算机学会编程语言会议录
    美国计算机学会程序设计语言会议录 第8卷,发行OOPSLA1
    2024年4月
    1492页
    EISSN公司:2475-1421
    内政部:10.1145/3554316
    期刊目录
    本作品获得知识共享署名国际4.0许可。

    出版商

    计算机协会

    美国纽约州纽约市

    出版历史

    出版:2024年4月29日
    在PACMPL中发布体积8,问题OOPSLA1公司

    权限

    请求对此文章的权限。

    检查更新

    作者标记

    1. 活动2
    2. 一般化
    3. 水螅
    4. llvm公司
    5. 窥视孔优化
    6. 程序综合
    7. 苏珀
    8. 超优化

    限定符

    • 研究文章

    资金来源

    • 国家科学基金会

    贡献者

    其他指标

    文献计量学和引文

    文献计量学

    文章指标

    • 0
      引文总数
    • 80
      总下载次数
    • 下载量(最近12个月)80
    • 下载次数(最近6周)64

    其他指标

    引文

    视图选项

    视图选项

    PDF格式

    以PDF文件查看或下载。

    PDF格式

    电子阅读器

    使用联机查看电子阅读器.

    电子阅读器

    获取访问权限

    登录选项

    完全访问权限

    媒体

    数字

    其他

    桌子

    分享

    分享

    共享此出版物链接

    在社交媒体上分享