×

自动验证无赛跑GPU程序的功能正确性。 (英语) Zbl 1426.68054号

摘要:我们研究了一种在图形处理单元(GPU)上运行的并行程序功能正确性的自动验证方法。我们的方法基于Kojima和Igarashi的GPU程序Hoare逻辑。我们的算法从由规范和循环不变量注释的程序中生成验证条件(VC),并将其传递给离线SMT求解器。然而,通常不可能在合理的时间内解决天真产生的风险投资。由于GPU程序的并行性,一个主要困难来自线程上的量词。为了克服这个困难,在调用SMT解算器之前,我们还应用了几个转换来简化VC。我们的实现成功地验证了几个GPU程序的正确性,包括使用共享内存优化的矩阵乘法。与许多现有的GPU程序验证工具相比,我们的验证器成功地验证了完全参数化的程序:诸如线程数量和矩阵大小等参数都是符号化的。我们的经验证明,我们的简化启发式对于提高验证过程的效率非常有效。

MSC公司:

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

参考文献:

[1] Asakura,I.,Masuhara,H.,Aotani,T.:Coq中GPGPU并发分离逻辑的可靠性证明。J.信息处理。24(1),132-140(2016)
[2] Betts,A.,Chong,N.,Donaldson,A.F.,Ketema,J.,Qadeer,S.,Thomson,P.,Wickerson,J.:GPU内核验证技术的设计和实现。ACM事务处理。程序。语言系统。37(3), 10:1-10:49 (2015). 数字对象标识代码:10.1145/2743017·数字对象标识代码:10.1145/2743017
[3] Blom,S.、Huisman,M.、Mihelć,M.:GPGPU程序的规范和验证。科学。计算。程序。95(3), 376-388 (2014) ·doi:10.1016/j.scico.2014.03.013
[4] Bobot,F.,Filliátre,J.C.,Marché,C.,Paskevich,A.:Why3:牧羊人你的普罗旺斯牧群。收录于:Boogie 2011:第一期中级验证语言国际研讨会,第53-64页。波兰弗罗茨瓦夫(2011)。统一资源定位地址https://hal.inia.fr/hal-00790310 ·Zbl 1323.68462号
[5] Bozga,M.,Iosif,R.:关于加法和除法运算中的可判定性。收录于:Sassone,V.(编辑)《2005年FOSSACS会议录》,Springer LNCS,第3441卷,第425-439页。(2005). doi:10.1007/978-3-540-31982-5-27·Zbl 1119.03060号
[6] Cachera,D.,Jensen,T.P.,Jobin,A.,Kirchner,F.:命令式程序多项式不变量的推断:告别Gröbner基。科学。计算。程序。93, 89-109 (2014). doi:10.1016/j.scico.2014.02.028·doi:10.1016/j.scico.2014.02.028
[7] Collingbourne,P.,Cadar,C.,Kelly,P.H.:OpenCL代码的符号测试。收录于:Eder,K.、Lourenço,J.A.、Shehory,o.(编辑)《硬件和软件程序:验证和测试》,Springer LNCS,第7261卷,第203-218页。Springer Verlag(2012)。doi:10.1007/978-3-642-34188-5_18
[8] Detlefs,D.,Nelson,G.,Saxe,J.B.:简化:程序检查的定理证明器。《美国医学会期刊》52(3),365-473(2005)。doi:10.1145/1066100.1066102·Zbl 1323.68462号 ·doi:10.1145/1066100.1066102
[9] Ernst,M.D.,Perkins,J.H.,Guo,P.J.,McCamant,S.,Pacheco,C.,Tschantz,M.S.,Xiao,C.:动态检测可能不变量的daikon系统。科学。计算。程序。69(1-3), 35-45 (2007). doi:10.1016/j.scico.2007.01.015·Zbl 1161.68390号 ·doi:10.1016/j.scico.2007.01.015
[10] Flanagan,C.,Leino,K.R.M.:胡迪尼,ESC/Java的注释助理。收录于:Oliveira,J.N.,Zave,P.(eds.)《欧洲形式方法国际研讨会论文集》(FME 2001),Springer LNCS,第2021卷,第500-517页。斯普林格(2001)。doi:10.1007/3-540-45251-6_29·兹比尔0977.68671
[11] Flanagan,C.,Saxe,J.B.:避免指数爆炸:生成紧凑的验证条件。载于:ACM POPL会议记录,POPL'01,第193-205页。ACM,美国纽约州纽约市(2001年)。数字对象标识代码:10.1145/360204.360220·Zbl 1323.68372号
[12] Garg,P.、Löding,C.、Madhusudan,P.和Neider,D.:ICE:学习不变量的强大框架。参见:Biere,A.,Bloem,R.(eds.)《第26届计算机辅助验证国际会议论文集》(CAV 2014),Springer LNCS,第8559卷,第69-87页。斯普林格(2014)。doi:10.1007/978-3-319-08867-9_5·Zbl 1161.68390号
[13] King,J.C.:符号执行和程序测试。Commun公司。ACM 19(7),385-394(1976)。doi:10.1145/360248.360252·Zbl 0329.68018号 ·doi:10.1145/360248.360252
[14] Kojima,K.,Igarashi,A.:SIMT程序的Hoare逻辑。摘自:Chieh Shan,C.(编辑)《亚洲编程语言与系统研讨会论文集》(APLAS 2013),Springer LNCS,第8301卷,第58-73页(2013)·Zbl 1426.68053号
[15] Kojima,K.,Igarashi,A.:GPU内核的Hoare逻辑。ACM计算逻辑学报(2016年)。出现。[14]的修订版和扩展版·Zbl 1367.68066号
[16] Kojima,K.、Imanishi,A.、Igarashi,A.:无种族GPU程序功能正确性的自动验证。收录:Blazy,S.、Chechik,M.(编辑)《验证软件》。理论、工具和实验——第八届国际会议,2016年7月17日至18日,加拿大安大略省多伦多市,VSTTE 2016,修订论文集,计算机科学讲义,第9971卷,第90-106页(2016)。数字对象标识代码:10.1007/978-3-319-48869-17·Zbl 1426.68054号
[17] Komuravelli,A.,Björner,N.,Gurfinkel,A.,McMillan,K.L.:使用Horn子句对整数和数组进行过程程序的组合验证。收录于:Kaivola,R.,Wahl,T.(编辑)《计算机辅助设计中的形式方法》,FMCAD 2015,美国德克萨斯州奥斯汀,2015年9月27日至30日,第89-96页。IEEE(2015)
[18] Kovács,L.,Voronkov,A.:使用定理证明器查找数组上程序的循环不变量。收录于:Chechik,M.,Wirsing,M.(编辑)《软件工程的基本方法》,Springer LNCS,第5503卷,第470-485页。施普林格-柏林-海德堡(2009)。doi:10.1007/978-3642-00593-0_33
[19] Lechner,A.,Ouaknine,J.,Worrell,J.:关于可除线性算术的复杂性。摘自:第30届ACM/IEEE计算机科学逻辑研讨会论文集,(LICS 2015),第667-676页。IEEE(2015)。doi:10.1109/LICS.2015.67·Zbl 1401.03070号
[20] Li,G.,Gopalakrishnan,G.:基于可伸缩SMT的GPU内核函数验证。摘自:第18届ACM SIGSOFT国际软件工程基础研讨会(FSE’10)会议记录,第187-196页。ACM(2010)。数字对象标识代码:10.1145/1882291.1882320
[21] Li,G.,Gopalakrishnan,G.:GPU内核程序的参数化验证。在:IPDPS多核和GPU编程模型、语言和编译器研讨会Wokshop,第2450-2459页。IEEE(2012)
[22] Li,G.,Li,P.,Sawaya,G.,Gopalakrishnan,G.,Ghosh,I.,Rajan,S.P.:GKLEE:GPU的一致性验证和测试生成。收录:Ramanujam,J.,Sadayappan,P.(编辑)Proc。ACM PPoPP,第215-224页。ACM(2012)。doi:10.1145/2145816.2145844
[23] Li,P.,Li,G.,Gopalakrishnan,G.:参数流:CUDA程序中种族符号分析的自动行为等效。摘自:《高性能计算、网络、存储和分析国际会议论文集》(SC'12)。IEEE计算机学会出版社(2012)
[24] Li,P.,Li,G.,Gopalakrishnan,G.:GPU程序的实用符号种族检查。摘自:T.Damkroger,J.Dongarra(编辑)《高性能计算、网络、存储和分析国际会议论文集》(SC 2014),第179-190页。IEEE(2014)。doi:10.1109/SC2014.20
[25] McMillan,K.:使用插值饱和校准器的量化不变量生成。收录于:Ramakrishnan,C.,Rehof,J.(编辑)《系统构建和分析的工具和算法》,Springer LNCS,第4963卷,第413-427页。施普林格-柏林-海德堡(2008)。doi:10.1007/978-3-540-78800-3_31·Zbl 1134.68416号
[26] Necula,G.C.,McPeak,S.,Rahul,S.P.,Weimer,W.:CIL:用于分析和转换C程序的中间语言和工具。摘自:《第十一届编译器构造国际会议论文集》(CC 2002),Springer LNCS,第2304卷,第213-228页(2002)。doi:10.1007/3-540-45937-5_16·Zbl 1051.68756号
[27] Nguyen,H.:GPU Gems 3,第一版。Addison-Wesley Professional(2007年)。http://developer.nvidia.com/object/gpu-gems-3.html
[28] NVIDIA:NVIDIA CUDA C编程指南(2014)。统一资源定位地址http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。