跳到主要内容
研究论文

利纳(Linnea):高效线性代数程序的自动生成

出版:2021年6月26日 出版历史

摘要

将线性代数计算转换为有效的库调用序列是一项非平凡的任务,需要线性代数和高性能计算方面的专业知识。几乎所有用于矩阵计算的高级语言和库(例如Matlab、Eigen)都在内部使用优化内核,如BLAS和LAPACK提供的内核;然而,它们的翻译算法往往过于简单,从而导致对所述内核的次优使用,导致显著的性能损失。为了结合高级语言提供的生产力和低级内核的性能,我们正在开发Linnea,一个用于线性代数问题的代码生成器。作为输入,Linnea对线性代数问题进行了高级描述;作为输出,它向高性能内核返回一个有效的调用序列。Linnea使用自定义的最佳优先搜索算法,在不到一秒钟的时间内找到第一个解决方案,如果给更多的时间,则会找到更好的解决方案。在125个测试问题中,Linnea生成的代码几乎总是优于Matlab、Julia、Eigen和Armadillo,其加速比可达并超过10倍。

工具书类

[1]
Alfred V.Aho、Mahadevan Ganapathi和Steven W.K.Tjiang。1989年。使用树匹配和动态编程生成代码。美国计算机学会程序设计语言与系统汇刊11,4(1989年10月),491–516。
[2]
阿尔弗雷德·阿霍(Alfred V.Aho)和斯蒂芬·约翰逊(Stephen C.Johnson)。1976年。表达式树的最佳代码生成。ACM杂志23,3(1976年7月),488-501。
[3]
爱德华·安德森(Edward Anderson)、白昭君(Zhaojun Bai)、克里斯蒂安·比肖夫(Christian Bischof)、苏珊·布莱克福德(Susan Blackford)、杰克·多加拉(Jack Dongarra)、杰里米·杜克罗斯(Jeremy Du Croz)、安妮·格林鲍姆(Anne。1999.LAPACK用户指南。第9卷。暹罗。
[4]
弗兰兹·巴德和托比亚斯·尼普科。1999.术语改写及其他。第31卷。剑桥大学出版社。
[5]
亨利克·巴瑟尔斯(Henrik Barthels)、马金·科皮克(Marcin Copik)和保罗·比安蒂内西(Paolo Bientinesi)。2018.广义矩阵链算法。2018 IEEE/ACM代码生成和优化国际研讨会论文集。138–148.
[6]
Henrik Barthels、Christos Psarras和Paolo Bientinesi。2020年。自动生成高效线性代数程序。《高级科学计算平台会议论文集》(PASC’20)。ACM,纽约州纽约市,第1条,共11页。
[7]
Gerald Baumgartner、Alexander A.Auer、David E.Bernholdt、Alina Bibireata、Venkatesh Choppella、Daniel Cociorva、Xiaoyang Gao等人。2005.一类从头算量子化学模型的高性能并行程序的合成。IEEE 93,2(2005),276–292的会议记录。
[8]
Jeff Bezanson、Jiahao Chen、Benjamin Chung、Stefan Karpinski、Viral B.Shah、Jan Vitek和Lionel Zoubritzky。2018年,朱莉娅:动力与性能通过设计调和。《ACM编程语言2会议录》,OOPSLA(2018年10月),120-23。
[9]
保罗·比安蒂内西(Paolo Bientinesi)、布莱恩·冈特(Brian Gunter)和罗伯特·范德盖恩(Robert A.van de Geijn)。2008年。与对称正定矩阵求逆相关的算法系列。ACM数学软件汇刊35,1(2008年7月),第3篇,22页。
[10]
保罗·比廷内西(Paolo Bientinesi)、恩里克·金塔纳·奥尔蒂(Enrique S.Quintana-Orti)和罗伯特·范·德盖恩(Robert A.van de Geijn)。2005.用代码表示线性代数算法:FLAME应用程序接口。ACM数学软件汇刊31,1(2005年3月),27–59。
[11]
保罗·比安蒂内西和罗伯特·范德盖恩。2011年,目标导向和模块化稳定性分析。SIAM矩阵分析应用杂志32,1(2011),286–308。
[12]
Julianne Chung、Matthias Chung,J.Tanner Slagel和Luis Tenorio,2017年。大型线性最小二乘问题的随机牛顿和拟牛顿方法。arXiv公司:1702.07367
[13]
艾伦·J·J·迪克。1991年,Knuth-Bendix完井简介。《计算机杂志》34,1(1991年1月),2-15。
[14]
尹丁(音)和伊万·W·塞莱斯尼克(Ivan W.Selesnick)。2016.指数伪影的稀疏校正。信号处理120(2016),236-248。
[15]
Jack J.Dongarra、Jeremy Du Croz、Sven Hammarling和Iain S.Duff。1990年。一组三级基本线性代数子程序。ACM数学软件汇刊16,1(1990),1-17。
[16]
迭戈·法布雷格·特雷沃和保罗·比伦蒂内西。2011年a。自动生成矩阵运算的循环变量。2011年计算科学及其应用国际会议论文集。82–92.
[17]
迭戈·法布雷格·特雷沃和保罗·比伦蒂内西。2011年b。基于知识的分区矩阵表达式的自动生成。第13届科学计算中的计算机代数国际会议论文集。144–157.
[18]
迭戈·法布雷格·特雷沃和保罗·比伦蒂内西。2013.用于线性代数运算的特定于域的编译器。计算科学高性能计算-VECPAR 2010。计算机科学讲义,第7851卷。施普林格,346–361。
[19]
弗兰兹·弗朗切蒂、泽·蒙·洛、多鲁·托姆·波波维奇、理查德·维拉斯、丹尼尔·斯帕皮纳托、杰里米·约翰逊、马库斯·普谢尔、詹姆斯·霍伊和何塞·莫拉。2018年,SPIRAL:性能卓越的便携性。IEEE 106会议记录,11(2018年11月),1935-1968。
[20]
马蒂奥·弗里戈(Matteo Frigo)和史蒂文·约翰逊(Steven G.Johnson)。2005年。FFTW3的设计和实施。IEEE 93会议记录,2(2005),216–231。
[21]
萨达希娃·S·戈德博勒(Sadashiva S.Godbole)。1973。关于矩阵链乘积的有效计算。IEEE计算机汇刊C-22,9(1973年9月),864–866。
[22]
Gene H.Golub、Per Christian Hansen和Dianne P.O'Leary。2006年,Tikhonov正则化和总最小二乘法。SIAM矩阵分析与应用杂志21,1(2006年7月),185-194。
[23]
克劳德·戈麦斯和托尼·斯科特。1998年。用于为串行和矢量化机器生成高效FORTRAN代码的Maple程序。计算机物理通信115,2(1998),548–562。
[24]
罗伯特·M·高尔和彼得·里奇塔里克。2017.随机准Newton更新是线性收敛的矩阵反演算法。SIAM矩阵分析与应用杂志38,4(2017),1380–1409。
[25]
Gaël Guennebaud和Benoît Jacob。2010年,Eigen v3。2021年4月3日检索自http://eigen.tuxfamily.org。
[26]
John A.Gunnels、Fred G.Gustavson、Greg M.Henry和Robert A.van de Geijn。FLAME:形式化线性代数方法环境。ACM数学软件汇刊27,4(2001年12月),422-455。
[27]
尼古拉斯·J·海姆。1996。数值算法的准确性和稳定性。宾夕法尼亚州费城SIAM。
[28]
尼古拉斯·J·海姆。2008.矩阵的功能:理论与计算。宾夕法尼亚州费城SIAM。
[29]
胡锦涛(T.C.Hu)和郑敏涛(M.T.Shing)。1982.矩阵链乘积的计算。第一部分:SIAM计算机期刊11,2(1982),362-373。
[30]
胡锦涛(T.C.Hu)和郑敏涛(M.T.Shing)。1984.矩阵链乘积的计算。第二部分。SIAM计算机杂志13,2(1984),228–251。
[31]
罗曼·伊基姆丘克和保罗·比安蒂内西。2012.通过内存调用模拟性能。ACM SIGMETRICS绩效评估审查40,2(2012年10月),86–91。
[32]
克劳斯·伊格伯格(Klaus Iglberger)、乔治·海格(Georg Hager)、扬·特雷比格(Jan Treibig)和乌尔里希·吕德(Ulrich Rüde)。2012.重新访问表达式模板:当前方法的性能分析。SIAM科学计算杂志34,2(2012),C42–C69。
[33]
英特尔公司。2019.英特尔®数学内核库文档。2021年4月3日检索自https://software.intel.com/en-us/mkl-reference-manual-for-c。
[34]
Víctor M.Jiménez和Andrés Marzal。1999.计算K个最短路径:一种新算法和实验比较。算法工程。计算机科学讲义,第1668卷。施普林格,15-29岁。
[35]
彼得·卡巴尔。2011.最小均方误差滤波:自相关/协方差、一般延迟和多速率系统。加拿大蒙特利尔麦吉尔大学电气与计算机工程系。
[36]
鲁道夫·埃米尔·卡尔曼。1960年。线性滤波和预测问题的新方法。《基础工程杂志》82,1(1960年3月),35-45。
[37]
曼纽尔·克雷伯。2017.与序列变量匹配的非线性结合交换多对一模式。阿西佛:1705.00907
[38]
曼纽尔·克雷伯(Manuel Krebber)和亨利克·巴瑟尔斯(Henrik Barthels)。2018.MatchPy:Python中的模式匹配。《开源软件杂志》3,26(2018年6月),2。
[39]
曼努埃尔·克雷伯(Manuel Krebber)、亨利克·巴瑟尔斯(Henrik Barthels)和保罗·比坦蒂内西(Paolo Bientinesi)。2017年b月。Python中的高效模式匹配。第七届Python高性能和科学计算研讨会论文集。
[40]
曼努埃尔·克雷伯(Manuel Krebber)、亨利克·巴瑟尔斯(Henrik Barthels)和保罗·比坦蒂内西(Paolo Bientinesi)。2017年a。MatchPy:模式匹配库。在第15届科学会议的Python会议记录中。https://arxiv.org/abs/1710.06915
[41]
布莱恩·马克尔(Bryan Marker)、杰克·鲍尔森(Jack Poulson)、唐·巴托里(Don Batory)和罗伯特·范德盖恩(Robert van de Geijn)。2012.通过转换设计线性代数算法:使专家开发人员机械化。在计算科学的高性能计算中,VECPAR 2012。施普林格,362-378。
[42]
布莱恩·马克尔(Bryan Marker)、马丁·沙茨(Martin Schatz)、德文·马修斯(Devin Matthews)、伊西尔·迪利格(Isil Dillig)、罗伯特·范德盖恩(Robert van de Geijn)和唐·巴托里(Don Batory。2015年,Dxter:用于生成最佳数据流程序的可扩展工具。技术报告TR-15-03。德克萨斯大学奥斯汀分校。
[43]
史蒂文·穆奇尼克(Steven S.Muchnick)。1997年。高级编译器设计与实现。摩根·考夫曼。
[44]
Elias D.Niño、Adrian Sandu和Xinwei Deng。2016.基于改进的Cholesky分解的集合卡尔曼滤波器的并行实现。arXiv公司:1606.00807
[45]
埃尔马尔·佩斯和保罗·比安蒂内西。2012.稠密线性代数的性能建模。在2012 SC Companion:High Performance Computing,Networking Storage and Analysis(SCC’12)期刊上。IEEE,加利福尼亚州洛斯阿拉米托斯,406–416。
[46]
埃尔马尔·佩斯和保罗·比安蒂内西。2014.缓存影响研究:稠密线性代数核序列。2014年计算科学高性能计算-VECPAR。瑞士查姆施普林格,245-258。
[47]
爱德华多·佩莱格里·洛巴特和苏珊·格雷厄姆。1988.表达式树的最佳代码生成:应用BURS理论。第15届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。ACM,纽约州纽约市,294–308。
[48]
Christos Psarras、Henrik Barthels和Paolo Bientinesi。2019.线性代数映射问题。arxiv:cs公司。MS/1911.09421号
[49]
康拉德·桑德森。2010年,犰狳:一个用于快速原型和计算密集型实验的开源C++线性代数库。技术报告,NICTA,澳大利亚。尼科塔。
[50]
拉维·塞蒂和杰弗里·乌尔曼。1970年。生成算术表达式的最佳代码。ACM杂志17,4(1970),715-728。
[51]
Jeremy G.Siek、Ian Karlin和Elizabeth R.Jessup。2008.按顺序构建线性代数内核。分布式处理研讨会论文集(IPDPS’08)。IEEE,加利福尼亚州洛斯阿拉米托斯,1-8。
[52]
丹尼尔·斯帕帕尼亚托(Daniele G.Spampinato)、迭戈·法布雷格·特雷沃(Diego Fabregat-Traver)、保罗·比伦蒂内西(Paolo Bientinesi)和马库斯·普谢尔(Markus Püschel)。2018.小规模线性代数应用程序生成。在《代码生成与优化国际研讨会论文集》(CGO’18)中。ACM,纽约州纽约市,327–339。
[53]
Daniele G.Spampinato和Markus Püschel。2016.结构化矩阵的基本线性代数编译器。在代码生成和优化国际研讨会(CGO’16)的会议记录中。117–127.
[54]
米歇尔·斯特沃(Michel Steuwer)、克里斯蒂安·芬施(Christian Fensch)、山姆·林德利(Sam Lindley)和克里斯托夫·杜巴赫(Christophe Dubach)。2015.使用重写规则生成性能可移植代码:从高级函数表达式到高性能OpenCL代码。在第20届ACM SIGPLAN函数编程国际会议(ICFP'15)的会议记录中。205–217.
[55]
Damian Straszak和Nisheeth K.Vishnoi。2015.关于线性规划的自然动力学。arXiv:1511.07020号
[56]
罗斯·泰特、迈克尔·斯特普、扎卡里·塔特洛克和索林·勒纳。2009.平等饱和:一种新的优化方法。第36届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。ACM,纽约州纽约市,264-276。
[57]
The MathWorks Inc.2019。Matlab文档。2021年4月3日检索自http://www.mathworks.com/help/matlab。
[58]
汤姆·蒂勒和拉贾·吉瑞斯。2017.通过迭代去噪和反向投影进行图像恢复。arxiv:cs公司。CV/1710.06647v1

引用人

查看全部
  • (2023)面向结构化代数程序设计第九届ACM SIGPLAN数组编程库、语言和编译器国际研讨会会议记录10.1145/3589246.3595373(50-61)在线发布日期:2023年6月6日
  • (2022)使用XLA编译器进行内存安全计算第36届神经信息处理系统国际会议记录10.5555/3600270.3601648(18970-18982)在线发布日期:2022年11月28日
  • (2022)线性代数映射问题。线性代数语言和库的现状ACM数学软件汇刊10.1145/354993548:3(1-30)在线发布日期:2022年9月10日
  • 显示更多引用者

建议

评论

信息和贡献者

问询处

发布于

数学软件上的封面图像ACM事务
ACM数学软件汇刊 第47卷第3期
2021年9月
251页
国际标准编号:0098-3500
EISSN公司:1557-7295
内政部:10.1145/3472960
期刊目录
如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布、在服务器上发布或重新分发到列表,需要事先获得特定许可和/或收取费用。从请求权限[电子邮件保护]

出版商

计算机协会

美国纽约州纽约市

出版历史

出版:2021年6月26日
认可的:2020年12月1日
修订过的:2020年8月1日
收到:2019年12月1日
在TOMS中发布体积47,问题

权限

请求对此文章的权限。

检查更新

作者标记

  1. 线性代数
  2. 代码生成

限定符

  • 研究文章
  • 研究
  • 推荐

资金来源

  • 德意志研究联合会

贡献者

其他指标

文献计量学和引文

文献计量学

文章指标

  • 下载次数(过去12个月)26
  • 下载次数(最近6周)1
反映截至2024年9月17日的下载量

其他指标

引文

引用人

查看全部
  • (2023)面向结构化代数程序设计第九届ACM SIGPLAN数组编程库、语言和编译器国际研讨会会议记录10.1145/3589246.3595373(50-61)在线发布日期:2023年6月6日
  • (2022)使用XLA编译器进行内存安全计算第36届神经信息处理系统国际会议记录10.5555/3600270.3601648(18970-18982)在线发布日期:2022年11月28日
  • (2022)线性代数映射问题。线性代数语言和库的现状ACM数学软件汇刊10.1145/354993548:3(1-30)在线发布日期:2022年9月10日
  • (2022)FLOP作为线性代数算法判别式的一个测试2022年IEEE第34届计算机体系结构与高性能计算国际研讨会(SBAC-PAD)10.1109/SBAC-PAD55451.2022.00033(221-230)在线发布日期:2022年11月

视图选项

获取访问权限

登录选项

完全访问权限

查看选项

PDF格式

以PDF文件查看或下载。

PDF格式

电子阅读器

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

电子阅读器

HTML格式格式

在中查看本文HTML格式格式。

HTML格式

媒体

数字

其他

桌子

分享

分享

共享此出版物链接

在社交媒体上分享