摘要
数据竞争是并行程序中最常见的问题,因为其在程序中存在着随机性和难以重现的问题,所以利用动态方法检测并不可靠.本文介绍了一种针对以OpenMP实现程序并行的数据竞争故障的静态检测方法.首先根据基于OpenMP的Fortran并行程序的语法和语义特性,构建并行程序的抽象语法树,并对控制流图进行扩展引入并行控制流图;然后将数据竞争问题抽象为一种故障模型,利用有限状态机来形式化的描述此类故障模型;最后对并行区域的潜在赋值操作进行并行数据流分析,在程序控制流图节点上进行故障状态机的状态转化来实现数据竞争的检测.该方法已在自研的缺陷检测系统(DTS)中应用,并通过DataRaceBench的实验数据证明本文方法可以有效的检测出数据竞争问题.
ed as a fault model,and the finite state machine is used to formally describe this type of fault model.Finally,the parallel data flow analysis is performed on the potential assignment operation of the parallel region,and the state conversion of the fault state machine is performed on the CFG node to realize the detection of data race.This method has been applied in the self-developed defect testing system(DTS),the experimental data of DataRaceRench proves the effectiveness of this method.
作者
葛优
金大海
宫云战
GE You;JIN Da-hai;GONG Yun-zhan(State Key Laboratory of Networking and Switching Technology,Bejing University of Posts and Telecommunication,Beijing 100876,China)
出处
《小型微型计算机系统》
CSCD
北大核心
2023年第11期2377-2383,共7页
Journal of Chinese Computer Systems
基金
国家自然科学基金项目(U1736110)资助。