[发明专利]程序的线程关系确定方法、设备及系统有效
申请号: | 201210382173.5 | 申请日: | 2012-10-10 |
公开(公告)号: | CN103729166A | 公开(公告)日: | 2014-04-16 |
发明(设计)人: | 唐士斌;宋风龙;王达;范东睿 | 申请(专利权)人: | 华为技术有限公司;中国科学院计算技术研究所 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 刘芳 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 线程 关系 确定 方法 设备 系统 | ||
技术领域
本发明涉及信息技术领域,尤其涉及一种程序的线程关系确定方法、设备及系统。
背景技术
随着科技的发展,片上多处理器逐渐成为了处理器设计的主流,同时并行编程的运用也越来越多。然而并行编成在带来了高效之外,还存在难以调试的问题,主要原因有:调试工作依赖于程序的重复执行,然而并行程序具有天然的不确定性(I/O、中断、DMA与访问内存冲突),导致并行程序多次执行的行为不一致,程序中的错误无法重现。这种在并发系统中的不确定性,使并行程序的调试变得非常复杂。为了解决并行程序难以重现的问题,比较直观的方法是记录下并行程序执行过程中所有的不确定性因素,当需要重现并行程序的执行时,重放出来。其中,该工作主要分为面向全系统的确定性记录与重放和面向用户层应用的确定性记录与重放。
现有技术中,根据缓存一致性协议的消息来建立优先(“happen-before”)关系,当处理器a收到来自处理器b的缓存一致性消息时,在处理器a的后继集合中b对应的位置写入1,在处理器b收到a的缓存一致性应答消息时,在处理器b的前驱集合中a对应的位置写入1,如此建立a→b的“happen-before”关系。
然而,现有技术仅能获取由缓存一致性消息而导致的访问内存冲突,从而导致对并行程序的调试不准确。
发明内容
本发明提供一种程序的线程关系确定方法、设备及系统,以提高并行程序调试的准确性。
第一个方面,本发明实施例提供一种程序的线程关系确定方法,包括:检测系统中的第一线程发生由第一处理器至第二处理器的迁移,第一线程为第一处理器执行的目标并行程序中的一个线程,迁移到所述第二处理器后的第一线程作为第二线程;确定所述第一线程和所述第二线程之间的序关系。
结合第一个方面,在第一种可能的实现方式中,所述检测系统中的第一线程发生由第一处理器至第二处理器的迁移,包括:检测所述第一线程发生挂起;记录所述第一处理器的处理器标识;当所述第一线程重新执行时,判断所述第一处理器的处理器标识与当前执行所述第一线程的处理器的处理器标识是否一致,若不一致,则确定第一线程发生迁移,且当前执行所述第一线程的处理器为所述第二处理器。
结合第一个方面或是第一个方面的第一种可能的实现方式,在第二种可能的实现方式中,所述检测系统中的第一线程发生由第一处理器至第二处理器的迁移之后,还包括:记录所述第一线程和所述第二线程之间的序关系。
结合第一个方面的第二种可能的实现方式,在第三种可能的实现方式中,所述检测所述第一线程发生挂起之后,还包括:确定所述第一线程与至少一个第三线程的序关系,所述第三线程为所述目标并行程序中除所述第一线程之外在所述第一处理器上执行的线程。
结合第一个方面的第三种可能的实现方式,在第四种可能的实现方式中,所述检测所述第一线程发生挂起之后,还包括:记录所述第一线程的序关系;记录所述第一线程与所述第一处理器的映射关系。
结合第一个方面、第一个方面的第一种可能的实现方式、第一个方面的第二种可能的实现方式、第一个方面的第三种可能的实现方式或者第一个方面的第四种可能的实现方式中的任意一种,在第五种可能的实现方式中,所述检测系统中的第一线程发生由第一处理器至第二处理器的迁移之前,还包括:判断所述第一处理器执行的并行程序的页表基址与设定的页表基址是否相同,若相同,则将所述并行程序作为所述目标程序。
结合第一个方面、第一个方面的第一种可能的实现方式、第一个方面的第二种可能的实现方式、第一个方面的第三种可能的实现方式、第一个方面的第四种的实现方式或者第一个方面的第五种的实现方式的任意一种,在第六种可能的实现方式中,还包括:从所述第一处理器获取所述目标并行程序的指令;接收系统中的第三处理器发送的缓存一致性消息,所述缓存一致性消息中携带所述第三处理器访问的内存地址;判断所述内存地址与所述指令所使用的数据地址是否相同,若相同,则确定所述指令对应的线程与所述缓存一致性消息对应的线程的序关系。
结合第一个方面的第六种可能的实现方式,在第七种可能的实现方式中,还包括:记录所述指令对应的线程与所述第一处理器的映射关系及所述指令对应的线程的序关系。
第二个方面,本发明实施例提供一种程序的线程关系确定设备,包括:检测模块,用于检测系统中的第一线程发生由第一处理器至第二处理器的迁移,第一线程为第一处理器执行的目标并行程序中的一个线程,迁移到所述第二处理器后的第一线程作为第二线程;确定模块,用于确定所述第一线程和所述第二线程之间的序关系。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司;中国科学院计算技术研究所,未经华为技术有限公司;中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210382173.5/2.html,转载请声明来源钻瓜专利网。