×

一种用于GPU上分层数据并行设计空间探索的语言。 (英语) Zbl 1420.68046号

概述:图形处理单元(GPU)具有极高的性能潜力;它们也在迅速发展。Obsidian是一种嵌入式语言(在Haskell中),用于实现在GPU上运行的高性能内核。我们想吃蛋糕,也想吃蛋糕;我们希望提高CUDA代码之外的抽象级别,并仍然让程序员控制与内核性能相关的细节。为此,Obsidian提供了保证消除中间数组的数组表示,同时还使用类型系统来建模GPU的层次结构。根据操作所针对的GPU级别,编译操作的方式会有很大不同,因此,用户只能编写与GPU功能相匹配的代码。因此,我们实现的不是嵌套数据并行,而是一种更有限的形式,我们称之为分层数据并行。我们通过案例研究演示了如何使用Obsidian进行快速设计探索或自动调整,从而获得与Accelerate和NVIDIA Thrust中使用的手动调整内核相媲美的性能。

MSC公司:

68甲18 函数编程和lambda演算
68甲15 编程语言理论
68甲19 其他编程范式(面向对象、顺序、并发、自动等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] 阿克塞尔森电气。,克莱森。,希兰。,斯文宁松J。,EngdalD.和佩尔松A。(2011)Feldspar的设计与实现:一种用于数字信号处理的嵌入式语言。第22届函数式语言实现与应用国际会议论文集,IFL’10。柏林-海德堡:Springer-Verlag,第121-136页。
[2] BergstromL.和ReppyJ公司。(2012)GPU上的嵌套数据平行性。第17届ACM SIGPLAN函数编程国际会议论文集。ICFP’12。美国纽约州纽约市:ACM,第247-258页·Zbl 1291.68109号
[3] Billeter M.、OlssonO和阿萨松大学。(2009)宽SIMD多核架构上的高效流压缩。高性能图形会议记录。2009年HPG。美国纽约州纽约市:ACM,第159-166页。
[4] BjesseP.公司。,克莱森。,希兰·M·&辛格S。(1998)《熔岩:哈斯克尔的硬件设计》。第三届ACM SIGPLAN函数编程国际会议论文集,ICFP'98。美国纽约州纽约市:ACM,第174-184页。
[5] 布莱洛奇。(1996)编程并行算法。Commun公司。ACM39(3),85-97。
[6] 卡坦扎罗B。,加兰德M&KeutzerK(2011)《铜斑蛇:编译嵌入式数据并行语言》。第16届ACM并行编程原理与实践研讨会论文集。PPoPP’11。美国纽约州纽约市:ACM,第47-56页。
[7] 查菲赫。,苏吉特。K.、BrownK。J.、LeeH.、。,阿特里亚。R.和OlukotunK。(2011)《异构并行的领域特定方法》。第16届ACM并行编程原理与实践研讨会论文集。PPoPP’11。美国纽约州纽约市:ACM,第35-46页。
[8] 查克拉瓦蒂M。M.T.、KellerG.等人。,利兹。,麦克唐纳。L.&GroverV公司。(2011)使用多核GPU加速Haskell阵列代码。在多核编程的声明性方面第六次研讨会的会议记录中。11岁那年。美国纽约州纽约市:ACM,第3-14页。
[9] 克莱森。,希兰·M·&斯文森B。J.(2012)嵌入式GPU内核编程语言中的表达式数组构造。在多核编程的声明性方面和应用第7次研讨会的会议记录中。2012年7月。美国纽约州纽约市:ACM,第21-30页。
[10] 埃利奥特C。(2003)功能图像。编程的乐趣。“计算基石”系列。帕尔格雷夫,第131-150页。
[11] 埃利奥特C。,芬兰德摩尔。(2003)编译嵌入式语言。J.功能。程序.13(3),455-481.10.1017/S0956796802004574·Zbl 1034.68019号 ·doi:10.1017/S0956796802004574
[12] 吉巴斯。J.&WyattD。K.(1978)APL中的编译和延迟评估。第五届Acm SIGACT-SIGPLAN编程语言原理研讨会论文集。78年流行。美国纽约州纽约市:ACM,第1-8页。
[13] 哈里斯·M。(2007)优化CUDA中的并行还原。“<uri-xlink:href=”http://developer.download.nvidia.com/assets/cuda/files/reduration.pdf“xlink:type=”simple“>http://developer.download.nvidia.com/assets/cuda/files/reduration.pdf”.
[14] 哈里斯·M·。,森古普塔斯&欧文斯J。D.(2007)与CUDA并行前缀和(Scan)。在NguyenH的GPU Gems 3中。(编辑),波士顿马萨诸塞州:艾迪森·韦斯利,第851-876页。
[15] 霍尔克。,ByrdW公司。E.、Mahajan.、。,威尔科克法官。,肖哈纳&LumsdaineA公司。(2012)GPU的声明性并行编程。《2011年ParCo应用程序、工具和技术在Exascale计算道路上的进展》。并行计算的进展。阿姆斯特丹:IOS出版社,第297-304页。
[16] 凯勒集团。,查克拉瓦蒂M。M.T.、LeshchinskiyR.、。,佩顿·琼斯利普梅耶尔B。(2010)Haskell中的规则形状多晶平行阵列。在第15届ACM SIGPLAN函数编程国际会议的会议记录中。ICFP'10。美国纽约州纽约市:ACM,第261-272页·兹比尔1323.68127
[17] KloecknerA公司。(2015)Loo.py:通过转换和替换规则从Fortran到性能。ACM SIGPLAN第二届数组编程库、语言和编译器国际研讨会论文集。15号阵列。美国纽约州纽约市:ACM,第1-6页。
[18] Mainland集团莫里塞特。(2010)Nikola:在Haskell中嵌入编译的GPU函数。第三届ACM Haskell研讨会会议记录。美国纽约州纽约市:ACM,第67-78页。
[19] 麦克唐纳。L.、ChakravartyM。M.T.、KellerG.&利普梅耶尔B。(2013)优化纯功能GPU程序。第18届ACM SIGPLAN函数编程国际会议论文集。ICFP’13。美国纽约州纽约市:ACM,第49-60页·Zbl 1323.68137号
[20] 英伟达。(2015a)CUDA C编程指南。“<uri-xlink:href=”http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html“xlink:type=”simple“>http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html”.
[21] 英伟达。(2015b)NVIDIA CUB图书馆。“<uri-xlink:href=”http://nvlabs.github.io/cub/“xlink:type=”simple“>http://nvlabs.github.io/cub/”.
[22] 英伟达。(2015c)NVIDIA推力图书馆。“<uri-xlink:href=”https://developer.nvidia.com/thrush“xlink:type=”simple“>https://developer.nvidia.com/thrush”.
[23] 加拿大安大略省。E.、Andreetta C.、。,伯特霍尔德法官。,弗里斯加&HengleinF公司。(2012)GPU上的财务软件:Haskell和Fortran之间。在第一届ACM SIGPLAN功能性高性能计算研讨会的会议记录中。FHPC’12。美国纽约州纽约市:ACM,第61-72页。
[24] 个人A、。,阿克塞尔森电气斯文宁松J。(2012)嵌入式语言的通用单子结构。《函数语言的实现和应用》,AndyGill和JurrianHage(eds),IFL’11。柏林-海德堡:Springer-Verlag,第85-99.10.1007/978-3642-34407-7页·兹比尔1321.68011
[25] 斯库索普。,Bracker J.、GiorgidzeG和吉拉。(2013)约束模态问题。第18届ACM SIGPLAN功能编程国际会议论文集,ICFP 2013。美国纽约州纽约市:ACM,第287-298页·Zbl 1323.68157号
[26] 斯科兰斯基J。(1960)条件和加法逻辑。IRE事务处理。电子。计算。EC-9(2),226-231.0144496
[27] 史蒂文斯R。T.(1989)C.M&T图书中的分形编程·Zbl 0825.68270号
[28] 斯文宁森J。&AxelssonE公司。(2013)EDSL的深埋和浅埋相结合。函数编程趋势,TFP’12,LoidlH-W.和PeaR。(编辑),《计算机科学讲义》,第7829卷。柏林-海德堡:施普林格出版社,第21-36页。
[29] 斯文宁森J。&斯文森B。J.(2013)一元嵌入式语言的简单组合具体化。第18届ACM SIGPLAN函数编程国际会议论文集,ICFP'13。美国纽约州纽约市:ACM·Zbl 1323.68165号
[30] 斯文宁松J。,斯文森B。J.&SheeranM。(2013)使用嵌入式GPU编程语言对GPU进行高效计数和发生排序。第二届ACM SIGPLAN功能性高性能计算研讨会论文集。FHPC’13。美国纽约州纽约市:ACM第50-63页。
[31] 斯文森B。J.、SheeranM.和牛顿R。R.(2014)通过代码生成DSL进行设计探索。Commun公司。ACM57(6),56-63。
[32] 斯文森J。,希兰·M·&克莱森克。(2008)Obsidian:用于图形处理器并行编程的特定领域嵌入式语言。《函数语言实施和应用国际会议论文集》。IFL’08。柏林-海德堡:Springer-Verlag,第156-173页。
[33] 斯文森J。,克莱森K.&希兰。(2010)使用Obsidian实现和改进GPGPU内核。Procedia计算。科学1(1),2065-2074.10.1016/j.procs.2010.04.231·doi:10.1016/j.procs.2010.04.231
[34] 乌尔文根。(2014)使用静态分析提高GPGPU内核的嵌入式领域特定语言的可编程性。查尔默斯理工大学计算机科学与工程系硕士论文。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。