×

CUDA中并行前缀和流压缩算法的形式化验证。 (英语) Zbl 1483.68091号

概述:GPU是任何高性能计算(HPC)体系结构的重要组成部分。为了优化GPU体系结构的细节,我们需要自然支持GPU并行执行模型的编程模型。CUDA和OpenCL是此类编程模型的两个广泛使用的示例。此外,我们还需要重新设计算法,使其符合这种并行编程模型,并且我们需要能够证明这些重新设计的算法的正确性。
在本文中,我们研究了两个这样的并行算法的例子,并讨论了如何使用VerCors程序验证器来证明它们的正确性(数据竞赛自由度和(部分)函数正确性)。首先,我们证明了两种并行算法解决前缀和问题的正确性。其次,我们展示了如何将这种前缀和算法用作流压缩算法中的基本块,并利用前缀和算法的早期正确性证明,证明了该流压缩算法的正确性。
本文所述的证明是在这些算法的CUDA实现上进行的。在之前的工作中,我们已经证明了该算法更高级版本的正确性。本文讨论了如何在VerCors中添加对CUDA程序推理的支持,然后展示了如何在CUDA代码级别重新进行验证。我们还讨论了一些我们必须解决的实际挑战,以证明实际CUDA级验证的正确性。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
03B70号 计算机科学中的逻辑
60年第68季度 规范和验证(程序逻辑、模型检查等)
68瓦10 计算机科学中的并行算法
PDF格式BibTeX公司 XML格式引用
全文: DOI程序

参考文献:

[1] 阿米吉,A。;Darabi,S。;布洛姆,S。;Huisman,M.,《GPGPU项目中原子操作的规范和验证》,(SEFM 2015协作研讨会(2015),施普林格),69-83
[2] Berdine,J。;加尔卡尼奥,C。;O'hearn,P.W.,Smallfoot:带分离逻辑的模块化自动断言检查,(组件和对象形式化方法国际研讨会(2005),Springer),115-137
[3] Betts,A。;Chong,N。;A.唐纳森。;卡迪尔,S。;汤姆森,P.,《GPU验证:GPU内核的验证程序》,(OOPSLA(2012),ACM),113-132
[4] 比勒特,M。;Olsson,O。;Assarsson,U.,《宽simd多核架构上的高效流压缩》(2009年高性能图形会议论文集),159-166
[5] Blelloch,G.E.,前缀和及其应用,(并行算法合成(1993),摩根考夫曼出版公司:摩根考夫曼出版公司,旧金山)
[6] 布洛姆,S。;Darabi,S。;Huisman,M。;Oortwijn,W.,《vercors工具集:并行和并发软件的验证》,(综合形式方法国际会议(2017),Springer),102-110
[7] 布洛姆,S。;Huisman,M。;Mihelčić,M.,GPGPU程序的规范和验证,科学。计算。程序。,95376-388(2014)
[8] 博纳特,R。;加尔卡尼奥,C。;奥赫恩,P。;Parkinson,M.,分离逻辑中的权限核算,(POPL(2005)),259-270·Zbl 1369.68130号
[9] Boyland,J.,检查分数权限的干扰,(国际静态分析研讨会(2003),Springer),55-72·Zbl 1067.68537号
[10] 布伦特,R.P。;Kung,H.T.,并行加法器的常规布局,IEEE计算。阿基特。莱特。,31, 260-264 (1982) ·Zbl 0477.94037号
[11] Chong,N。;A.F.唐纳森。;Ketema,J.,《关于并行前缀和推理的合理而完整的抽象》(ACM SIGPLAN Notices(2014),ACM),397-409·Zbl 1284.68387号
[12] 科林伯恩,P。;卡达尔,C。;Kelly,P.H.,OpenCL代码的符号测试,(海法验证会议(2011),施普林格),203-218
[13] De Moura,L。;Björner,N.,Z3:一种高效的smt求解器,(系统构造和分析工具和算法国际会议(2008),Springer),337-340
[14] 哈里斯,M。;Sengupta,S。;Owens,J.D.,带CUDA的并行前缀和(扫描),(GPU Gems 3(2007)),851-876
[15] Horn,D.,GPGPU应用的流减少操作,(GPU Gems 2(2005)),573-589
[16] 雅各布斯,B。;Smans,J。;Philippearts,P。;Vogels,F。;佩宁克斯,W。;Piessens,F.,Verifast:一个强大、可靠、可预测的C和Java快速验证器(NASA正式方法研讨会(2011),Springer),41-55
[17] Kogge,P.M。;Stone,H.S.,一类递推方程有效解的并行算法,IEEE Trans。计算。,100, 786-793 (1973) ·Zbl 0262.68015号
[18] 李·G。;Gopalakrishnan,G.,《基于可伸缩SMT的GPU内核函数验证》(SIGSOFT FSE 2010)。SIGSOFT FSE 2010,美国新墨西哥州圣菲(2010),ACM),187-196
[19] 李·G。;李,P。;Sawaya,G。;Gopalakrishnan,G。;Ghosh,I。;Rajan,S.P.,GKLEE:GPU的整合验证和测试生成,(ACM SIGPLAN通知(2012),ACM),215-224
[20] 缪勒,P。;Schwerhoff,M。;Summers,A.J.,《毒蛇:基于许可推理的验证基础设施》,(验证、模型检查和抽象解释国际会议(2016),施普林格),41-62·Zbl 1475.68191号
[21] Nickolls,J。;巴克,I。;加兰,M。;Skadron,K.,《使用cuda的可伸缩并行编程:cuda是应用程序开发人员一直在等待的并行编程模型吗?》?,队列,6,40-53(2008)
[22] Nvidia,Cuda memcheck:用户手册(第10版)(2019)
[23] 普莱斯,J。;McIntosh-Smith,S.,Oclgrind:一种可扩展的OpenCL设备模拟器,(第三届OpenCL国际研讨会论文集(2015),ACM),12
[24] 马萨诸塞州萨法里。;Huisman,M.,并行流压缩和求和面积表算法的形式验证,(计算理论方面国际学术讨论会(2020年),Springer),181-199·Zbl 07369989号
[25] 马萨诸塞州萨法里。;Oortwijn,W。;Joosten,S。;Huisman,M.,并行前缀和的形式验证,(NASA形式方法研讨会(2020年),斯普林格),170-186
[26] Sengupta,S。;Lefohn,A。;Owens,J.,一种高效的逐步前缀和算法(2006)
[27] Sklansky,J.,条件和加法逻辑,IEEE Trans。电子。计算。,2, 226-231 (1960)
[28] (2016),毒蛇项目网站
[29] 郑,M。;拉维,V.T。;秦,F。;Agrawal,G.,GRace:一种低开销的机制,用于检测GPU程序中的数据竞争,ACM SIGPLAN Not。,46, 135-146 (2011)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。