跳到主要内容
文章

Futhark:具有嵌套并行和就地数组更新的纯功能GPU编程

出版:2017年6月14日 出版历史记录
  • 获取引文提醒
  • 摘要

    Futhark是一种纯功能的数据并行数组语言,它提供了一个机器中性编程模型和一个优化编译器,可以为GPU生成OpenCL代码。
    本文介绍了Futhark的三个关键功能的设计和实现,这些功能通过命令式方法寻求合适的中间立场。
    首先,为了在并行结构中表达高效的代码,我们引入了一个用于就地更新的简单类型系统,以确保引用透明性并支持等式推理。
    其次,我们为Futhark提供了能够表达高效强度缩减代码的并行运算符及其融合规则。
    第三,我们提出了一种扁平化变换,旨在提高并行度,该变换(i)建立在循环交换和分布的基础上,但使用高阶推理而不是阵列相关分析,并且(ii)仍然允许进一步的局部引用优化。最后,对16个基准测试的评估表明了语言和编译器特性的影响,并显示了应用程序级性能与手工编写的GPU代码的竞争力。

    补充材料

    辅助档案 (pldi17-main98-s.zip)
    本文档包含用于生成论文“Futhark:带嵌套并行和就地阵列更新的纯功能GPU编程”中结果的测试工具,以及Futhark编译器的源代码。文件README.md包含有关如何设置和使用线束的详细说明。

    工具书类

    [1]
    C.安德列塔、V.贝戈特、J.贝托尔德、M.埃尔斯曼、F.亨利恩、T.亨利克森、M.-B.诺德芳和C.E.奥恩萨。FinPar:平行财务基准。ACM事务。阿基特。代码优化。(TACO),13(2):18:1–18:27,2016年6月。ISSN 1544-3566。
    [2]
    J.Auerbach、D.F.Bacon、P.Cheng和R.Rabbah。Lime:一种面向异构体系结构的Java兼容和可合成语言。在程序中。面向对象程序ACM国际会议。系统语言和应用,OOPSLA’2010年10月。ACM公司。
    [3]
    R.Baghdadi、U.Beaugnon、A.Cohen、T.Grosser、M.Kruse、C.Reddy、S.Verdoolaege、A.Betts、A.F.Donaldson、J.Ketema、J.Absar、S.v.Haastregt、A.Kravets、A.Lokhmotov、R.David和E.Hajiyev。PENCIL:一种用于加速器编程的与平台无关的计算中间语言。《并行体系结构与编译国际会议(PACT)程序》,PACT’15,2015年。IEEE计算机学会。
    [4]
    E.Barendsen和S.Smetsers。图重写系统中的常规类型和唯一类型。在Found中。软。技术与理论比较。科学。(FSTTCS),LNCS第761卷,1993年。
    [5]
    E.Barendsen和S.Smetsers。具有图形重写语义的函数语言的唯一性类型。计算机科学中的数学结构,6(6):579–6121996。
    [6]
    J.Bergstra、O.Breuleux、F.Bastien、P.Lamblin、R.Pascanu、G.Desjardins、J.Turian、D.Warde-Farley和Y.Bengio。Theano:Python中的CPU和GPU数学编译器。《Procs》编辑S.van der Walt和J.Millman。2010年第九届蟒蛇科学大会。
    [7]
    L.Bergstrom和J.Reppy。GPU上的嵌套数据并行。在第17届ACM SIGPLAN Int.Conf.on Functional Prog.的Procs中。,2012年12月ICFP。ACM公司。
    [8]
    L.Bergstrom、M.Fluet、M.Rainey、J.Reppy、S.Rosen和A.Shaw。针对嵌套数据并行性的数据平坦化。在程序中。第18届ACM SIGPLAN交响乐团。《并行编程原理与实践》,PPoPP’13,2013年。ACM公司。
    [9]
    R.S.伯德。程序计算的代数恒等式。计算机杂志,32(2):122–1261989。
    [10]
    G.E.Blelloch。作为基本并行操作进行扫描。计算机,IEEE学报,38(11):1526-15381989。
    [11]
    G.E.Blelloch。数据并行计算向量模型,第75卷。麻省理工学院出版社,剑桥,1990年。
    [12]
    G.E.Blelloch、J.C.Hardwick、J.Sipelstein、M.Zagha和S.Chatterjee。可移植嵌套数据并行语言的实现。并行与分布式计算杂志,21(1):4-1994。
    [13]
    K.J.Brown、H.Lee、T.Rompf、A.K.Sujeeth、C.De Sa、C.Aberger和K.Olukotun。有抽象,也吃性能:用并行模式优化异构计算。在Procs中。国际交响乐团。关于代码生成和优化,CGO 2016年,2016年。ACM公司。
    [14]
    B.Catanzaro、M.Garland和K.Keutzer。铜斑蛇:编译嵌入式数据并行语言。在程序中。ACM交响乐团。《并行编程原理与实践》,PPoPP’11,2011年。ACM公司。
    [15]
    M.M.Chakravarty、G.Keller、S.Lee、T.L.McDonell和V.Grover。使用多核GPU加速Haskell阵列代码。在程序中。关于多核编程的声明性方面的第六次研讨会。ACM,2011年。
    [16]
    P.Chatarasi、J.Shirako和V.Sarkar。显式并行程序的多面体优化。在程序中。国际并行体系结构与编译会议(PACT)。IEEE,2015年。
    [17]
    S.Che、M.Boyer、J.Meng、D.Tarjan、J.W.Sheffer、S.H.Lee和K.Skadron。Rodinia:异构计算的基准套件。在程序中。IEEE国际交响乐团。工作负荷特征(IISWC),2009年10月。
    [18]
    K.Claessen、M.Sheeran和B.J.Svensson。嵌入式GPU内核编程语言中的表达式数组构造。在程序中。多核编程(DAMP)的声明性方面研讨会。ACM,2012年。
    [19]
    A.Collins、D.Grewe、V.Grover、S.Lee和A.Susnea。NOVA:一种用于数据并行的函数语言。在程序中。数组程序的库、语言和编译器国际研讨会。,2014年阵列。ACM公司。
    [20]
    R.Collobert、K.Kavukcuoglu和C.Farabet。火炬7:机器学习的模拟环境。BigLearn,神经信息处理系统,2011年。
    [21]
    D.Cunningham、R.Bordawekar和V.Saraswat。高级语言中的GPU编程:将X10编译为CUDA。在程序中。2011年10月11日,ACM SIGPLAN X10研讨会。ACM公司。
    [22]
    C.Dubach、P.Cheng、R.Rabbah、D.F.Bacon和S.J.Fink。为GPU编译高级语言:(通过架构和编译器的语言支持)。在程序中。ACM SIGPLAN国际编程语言设计与实现会议,PLDI’112012。ACM公司。
    [23]
    M.Elsman和M.Dybdal。将APL子集编译为类型化中间语言。在程序中。图书馆国际研讨会。数组程序的语言和编译器。(阵列)。ACM,2014年。
    [24]
    M.Fahndrich和R.DeLine。采用和关注:命令式编程的实用线性类型。在程序中。国际编程语言设计与实现大会,PLDI’02,2002。ACM公司。
    [25]
    M.I.Gordon、W.Thies和S.Amarasinghe。利用流程序中的粗粒度任务、数据和管道并行性。在Procs中。《编程语言和操作系统的体系结构支持国际会议》,ASPLOS XII,2006年。ACM公司。
    [26]
    T.Grosser、A.Cohen、J.Holewinski、P.Sadayappan和S.Verdoolaege。GPU的混合六边形/经典瓷砖。在程序中。国际交响乐团。关于代码生成和优化,CGO’14。ACM,2014年。
    [27]
    M.W.Hall、S.P.Amarasinghe、B.R.Murphy、S.W.Liao和M.S.Lam。SUIF中的硬膜外并行分析。事务处理。项目。语言和系统。(托普拉斯),27(4):662–7312005。
    [28]
    T.Henriksen和C.E.Oancea。融合的T2图约简方法。在程序中。2013年FHPC第二届ACM SIGPLAN功能性高性能计算研讨会。ACM公司。
    [29]
    T.Henriksen和C.E.Oancea。边界检查:混合分析的一个实例。在程序中。ACM SIGPLAN国际数组编程库、语言和编译器研讨会,Array’14,2014。ACM公司。
    [30]
    T.Henriksen、M.Elsman和C.E.Oancea。尺寸切片:Futhark中尺寸推断的混合方法。2014年FHPC第三届ACM SIGPLAN功能性高性能计算研讨会。ACM公司。
    [31]
    T.Henriksen、M.Dybdal、H.Urms、A.S.Kiehn、D.Gavin、H.Abelskov、M.Elsman和C.Oancea。GPU上的APL:来自过去的TAIL,用Futhark书写。2016年FHPC第五届功能性高性能计算国际研讨会。ACM公司。
    [32]
    T.Henriksen、K.F.Larsen和C.E.Oancea。Futhark Redomap结构的设计和GPGPU性能。在程序中。第三届ACM SIGPLAN数组编程库、语言和编译器国际研讨会,Array’16,2016。ACM公司。
    [33]
    G.霍尔。《Rust编程语言》,2013年6月。
    [34]
    A.H.Hormati、M.Samadi、M.Woh、T.Mudge和S.Mahlke。海绵:图形引擎上的可移植流编程。在程序中。《编程语言和操作系统架构支持国际会议》,ASPLOS XVI,2011年。ACM公司。
    [35]
    K.石崎、A.Hayashi、G.Koblents和V.Sarkar。为GPU执行编译和优化Java 8程序。在程序中。《并行体系结构与编译国际会议》,PACT’15,2015年。IEEE计算机学会。
    [36]
    K.Kennedy和J.R.Allen。为现代体系结构优化编译器:基于依赖的方法。摩根考夫曼出版公司,2002年。
    [37]
    A.Kumar、G.E.Blelloch和R.Harper。并行功能阵列。在程序中。第44届ACM SIGPLAN Symp。《编程语言原理》,POPL’17,2017年。ACM公司。
    [38]
    H.Lee、K.J.Brown、A.K.Sujeeth、T.Rompf和K.Olukotun。GPU上嵌套并行模式的局部感知映射。在程序中。第47届IEEE/ACM国际研讨会。《微体系结构》,MICRO-47,2014年。IEEE计算机学会。
    [39]
    T.L.McDonell、M.M.Chakravarty、G.Keller和B.Lippmeier。优化纯功能GPU程序。在程序中。ACM SIGPLAN功能编程国际会议,ICFP’13,2013。ACM公司。
    [40]
    E.Meijer、M.Fokkinga和R.Paterson。香蕉、镜片、信封和铁丝网的功能编程。程序中。第五届ACM功能编程语言与计算机体系结构会议(FPCA),1991年。
    [41]
    C.E.Oancea和L.Rauchwerger。循环并行的逻辑推理技术。在Procs中。ACM SIGPLAN编程语言设计与实现会议,PLDI’12012。ACM公司。
    [42]
    C.E.Oancea和L.Rauchwerger。可缩放条件归纳变量(CIV)分析。在程序中。第13届IEEE/ACM国际研讨会。关于代码生成和优化,CGO’15,2015。IEEE计算机学会。
    [43]
    S.Peyton Jones、W.Partain和A.Santos。Let-floating:移动绑定以提供更快的程序。在程序中。第一届ACM SIGPLAN函数编程国际会议,ICFP'961996年。ACM公司。
    [44]
    L.-N.Pouchet、U.Bondhugula、C.Bastoul、A.Cohen、J.Ramanujam、P.Sadayappan和N.Vasilache。循环变换:凸性、修剪和优化。在程序中。第38届ACM SIGPLAN-SIGCT研讨会。《编程语言原理》,POPL'112011年。ACM公司。
    [45]
    J.Price和S.McIntosh-Smith。Oclgrind:一个可扩展的OpenCL设备模拟器。在程序中。第三届OpenCL国际研讨会。ACM,2015年。
    [46]
    J.Ragan-Kelley、C.Barnes、A.Adams、S.Paris、F.Durand和S.Amarasinghe。卤化物:用于优化图像处理管道中的并行性、局部性和重新计算的语言和编译器。在程序中。第34届ACM SIGPLAN编程语言设计与实现大会,PLDI’13,2013。ACM公司。
    [47]
    C.Reddy、M.Kruse和A.Cohen。简约绘图:GPU上简约的语言构造和多面体编译。在程序中。2016年第16届国际并行体系结构与编译会议。ACM公司。
    [48]
    M.Steuwer、C.Fensch、S.Lindley和C.Dubach。使用重写规则生成性能可移植代码:从高级函数表达式到高性能OpenCL代码。在程序中。ACM SIGPLAN功能编程国际会议,ICFP’15,2015。
    [49]
    M.Steuwer、T.Remmelg和C.Dubach。Lift:用于高性能GPU代码生成的功能性数据并行IR。在Procs中。国际交响乐团。关于代码生成和优化,CGO’17,2017。IEEE出版社。
    [50]
    J.A.Stratton、C.Rodrigues、I.J.Sung、N.Obeid、L.W.Chang、N.Anssari、G.D.Liu和W.m.W.Hwu。Parboul:科学和商业吞吐量计算的修订基准套件。可靠和高性能计算中心,1272012年。
    [51]
    A.K.Sujeeth、K.J.Brown、H.Lee、T.Rompf、H.Chafi、M.Odersky和K.Olukotun。Delite:面向性能的嵌入式领域特定语言的编译器体系结构。ACM事务处理。嵌入。计算。系统。,13(4s):134:1–134:25,2014年4月。ISSN 1539-9087。
    [52]
    J.斯文森。Obsidian:Haskell中的GPU内核编程。查尔默斯理工大学博士论文,2011年。
    [53]
    D.Tarditi、S.Puri和J.Oglasy。加速器:使用数据并行性为通用目的编程GPU。技术报告,2006年10月。
    [54]
    J.A.Tov和R.Pucella。实用仿射类型。在程序中。ACM SIGPLAN-SIGACT交响乐团。《编程语言原理》,POPL'112011年。ACM公司。
    [55]
    S.Verdoolaege、J.Carlos Juega、A.Cohen、J.Ignacio Gómez、C.Tenllado和F.Catthoor。CUDA的多面体并行代码生成。ACM事务处理。阿基特。代码优化。(TACO),9(4):54:1–54:232013年1月。ISSN 1544-3566。
    [56]
    Y.Yang、P.Xiang、J.Kong和H.Zhou。用于内存优化和并行管理的GPGPU编译器。在程序中。《ACM SIGPLAN编程语言设计与实现会议》,PLDI’10,2010年。ACM公司。

    引用人

    查看全部
    • (2023)GPotion:Elixir中用于GPU编程的嵌入式DSL第二十七届巴西程序设计语言研讨会会议记录10.1145/3624309.3624314(1-8)在线发布日期:2023年9月25日
    • (2023)表格数据的Infix-Extensible记录类型第八届ACM SIGPLAN类型驱动开发国际研讨会论文集10.1145/3609027.3609406(29-43)在线发布日期:2023年8月30日
    • (2023)(De/Re)-通过基于MDH的附表系统表达的成分第32届ACM SIGPLAN编译器构造国际会议记录10.1145/3578360.3580269(61-72)在线发布日期:2023年2月17日
    • 显示更多引用者

    建议

    评论

    信息和贡献者

    问询处

    发布于

    封面图片ACM SIGPLAN注意事项
    ACM SIGPLAN通知 第52卷第6期
    第17页
    2017年6月
    708页
    国际标准编号:0362-1340
    EISSN公司:1558-1160
    内政部:10.1145/3140587
    期刊目录
    • 封面图片ACM会议
      PLDI 2017:第38届ACM SIGPLAN编程语言设计与实现会议记录
      2017年6月
      708页
      国际标准图书编号:9781450349888
      内政部:10.1145/3062341
    如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重作者以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布、在服务器上发布或重新分发到列表,需要事先获得特定许可和/或收取费用。从请求权限[电子邮件保护].

    出版商

    计算机协会

    美国纽约州纽约市

    出版历史记录

    出版:2017年6月14日
    在SIGPLAN中发布体积52,问题6

    检查更新

    作者标记

    1. GPGPU(通用图形处理器)
    2. 编译器
    3. 函数式语言
    4. 平行

    限定符

    • 第条

    贡献者

    其他指标

    文献计量学和引文

    文献计量学

    文章指标

    • 下载次数(过去12个月)77
    • 下载次数(最近6周)11

    其他指标

    引文

    引用人

    查看全部
    • (2023)GPotion:Elixir中用于GPU编程的嵌入式DSL第二十七届巴西程序设计语言研讨会会议记录10.1145/3624309.3624314(1-8)在线发布日期:2023年9月25日
    • (2023)表格数据的Infix-Extensible记录类型第八届ACM SIGPLAN类型驱动开发国际研讨会会议记录10.1145/3609027.3609406(29-43)在线发布日期:2023年8月30日
    • (2023)(De/Re)-通过基于MDH的附表系统表达的成分第32届ACM SIGPLAN编译器构造国际会议记录10.1145/3578360.3580269(61-72)在线发布日期:2023年2月17日
    • (2023)GPU上最内在的多种类型的术语重写计算机程序设计科学2016年10月10日/j.scico.2022.102910225(102910)在线发布日期:2023年1月
    • (2022)并行计算语言的综合探索倒排索引综述10.1145/348500855:2(1-39)在线发布日期:2022年1月18日
    • (2022)PI-sqrt:多核系统上在位序列旋转的新型并行实现集群计算2007年10月10日/10586-022-03591-626:1(539-557)在线发布日期:2022年4月18日
    • (2021)二阶数组语言的保并行自动微分第九届ACM SIGPLAN功能高性能和数值计算国际研讨会会议记录10.1145/3471873.3472975(13-23)在线发布日期:2021年8月22日
    • (2021)GPU上的术语重写软件工程基础10.1007/978-3-030-89247-0_12(175-189)在线发布日期:2021年10月17日
    • (2020)基于序列分割和完全随机的并行k路就地合并时空高效算法并行计算ACM事务10.1145/33914437:2(1-23)在线发布日期:2020年5月18日
    • (2020)互操作GPU内核作为MEC的延迟改善器2020第二届6G无线峰会(6G峰会)10.1109/6GSUMMIT49458.2020.9083751(1-5)在线发布日期:2020年3月
    • 显示更多引用者

    视图选项

    获取访问权限

    登录选项

    完全访问权限

    查看选项

    PDF格式

    以PDF文件查看或下载。

    PDF格式

    电子阅读器

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

    电子阅读器

    媒体

    数字

    其他

    桌子

    分享

    分享

    共享此出版物链接

    在社交媒体上分享