[发明专利]并行程序通信模式的提取方法及系统有效
申请号: | 200910093067.3 | 申请日: | 2009-09-22 |
公开(公告)号: | CN101661409A | 公开(公告)日: | 2010-03-03 |
发明(设计)人: | 郑纬民;陈文光;翟季冬;盛田维;何江舟 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京路浩知识产权代理有限公司 | 代理人: | 胡小永 |
地址: | 100084北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并行 程序 通信 模式 提取 方法 系统 | ||
1.一种并行程序通信模式的提取方法,该方法包括步骤:
S1.解析并行程序源码,识别所述并行程序中的通信函数调用, 确定所述通信函数中的通信变量,并将所述通信变量放入设定集合;
S2.分析所述并行程序的控制流和数据流,收集所述并行程序的 数据依赖、控制依赖以及通信依赖信息;
S3.收集所述并行程序中的调用信息,构建程序调用图;
S4.通过基于LIVE变量传播的切割算法对所述并行程序进行程 序切割,获得所述并行程序的程序切片;
S5.执行所述程序切片,收集并输出通信记录;
S6.根据所述通信记录,按照设定目标获取所述并行程序的通信 模式;
其中,一个变量是LIVE变量,当且仅当,它的值改变可以通过 程序的数据依赖、控制依赖和通信依赖的传播影响到任何通信变量的 值;
步骤S4进一步包括:
S4.1将所述通信变量放入LIVE变量集合;
S4.2自顶向下遍历所述程序调用图的每个节点函数,对所述每 个节点函数,若存在所述设定集合中的通信变量通过所述数据依赖、 控制依赖以及通信依赖关联的变量,则将相应关联的变量放入所述 LIVE变量集合;
S4.3自底向上遍历所述程序调用图的每个节点函数,对所述每 个节点函数,若存在所述设定集合中的通信变量通过所述数据依赖、 控制依赖以及通信依赖关联的变量,则将相应关联的变量放入所述 LIVE变量集合;
S4.4若所述LIVE变量集合保持不变,则执行步骤S4.5,否则返 回步骤S4.2;
S4.5标记所述并行程序中所有所述LIVE变量集合中变量定义 的语句;
S4.6对所述并行程序中的所有接收语句,标记接收变量在所述 LIVE变量集合中的通信语句,并根据所述通信依赖信息标记对应的 发送函数;
S4.7删除所述并行程序中未标记的非通信语句,及未在所述 LIVE变量集合中的变量,得到所述并行程序的程序切片。
2.如权利要求1所述的并行程序通信模式的提取方法,其特征 在于,步骤S1进一步包括:
S1.1按照预定义的函数名识别所述并行程序中所有的通信函 数;
S1.2按照预定义的格式确定所述通信函数中的每个通信变量, 并将其放入所述设定集合。
3.如权利要求1所述的并行程序通信模式的提取方法,其特征 在于,步骤S2进一步包括:
S2.1通过数据流分析,对所述并行程序中每个变量的使用和定 义之间建立链接关系,即数据依赖,并将所述数据依赖信息保存于使 用-定义UD数据结构;
S2.2分析所述并行程序的控制分支,将所述并行程序中的控制 依赖转化为所述数据依赖,并将转化的数据依赖信息保存于使用-定 义UD数据结构;
S2.3对所述并行程序的所有通信调用进行配对分析,对所有发 送和接收的通信操作建立链接关系,即通信依赖,并将所述通信依赖 信息保存于消息依赖MD数据结构。
4.如权利要求1所述的并行程序通信模式的提取方法,其特征 在于,步骤S3进一步包括:
S3.1记录所述并行程序中每个函数调用点的被调用函数名称以 及需要传递的参数变量;
S3.2根据所述记录的信息,构建程序调用图。
5.如权利要求3所述的并行程序通信模式的提取方法,其特征 在于,步骤S5进一步包括:
S5.1记录所述标记的通信语句在实际传输通信语句中的消息内 容,并记录:消息类型、消息大小、消息的源和目的地址;
S5.2记录所述未标记的通信语句的消息类型、消息大小、消息 的源和目的地址。
6.一种并行程序通信模式的提取系统,该系统包括:
变量确定单元,用于解析并行程序源码,识别所述并行程序中的 通信函数调用,确定所述通信函数中的通信变量,并将所述通信变量 放入设定集合;
分析单元,用于分析所述并行程序的控制流和数据流,收集程序 的数据依赖、控制依赖以及通信依赖信息;
调用图构建单元,用于收集所述并行程序中的调用信息,构建程 序调用图;
程序切割单元,用于通过基于LIVE变量传播的切割算法对所述 并行程序进行程序切割,获得所述并行程序的程序切片;
执行单元,用于执行所述程序切片,收集并输出通信记录;
提取单元,用于根据所述通信记录,按照设定目标获取所述并行 程序的通信模式;
其中,一个变量是LIVE变量,当且仅当,它的值改变可以通过 程序的数据依赖、控制依赖和通信依赖的传播影响到任何通信变量的 值;
所述程序切割单元进一步包括:
整理子单元,用于将所述通信变量放入LIVE变量集合;
第一遍历子单元,用于自顶向下遍历所述程序调用图的每个节点 函数,对所述每个节点函数,若存在所述设定集合中的通信变量通过 所述数据依赖、控制依赖以及通信依赖关联的变量,则将相应关联的 变量放入所述LIVE变量集合;
第二遍历子单元,用于自底向上遍历所述程序调用图的每个节点 函数,对所述每个节点函数,若存在所述设定集合中的通信变量通过 所述数据依赖、控制依赖以及通信依赖关联的变量,则将相应关联的 变量放入所述LIVE变量集合;
第一标记单元,用于在所述第一遍历子单元及第二遍历子单元遍 历所述程序调用图的每个节点函数后,若所述LIVE变量集合保持不 变,标记所述并行程序中所有所述LIVE变量集合中变量定义的语句; 若所述LIVE变量集合发生变化,则由所述第一遍历子单元及第二遍 历子单元再一次遍历所述程序调用图的每个节点函数;
第二标记单元,用于对所述并行程序中的所有接收语句,标记接 收变量在所述LIVE变量集合中的通信语句,并根据所述通信依赖信 息标记对应的发送函数;
程序切割子单元,用于删除所述并行程序中未标记的非通信语 句,及未在所述LIVE变量集合中的变量,得到所述并行程序的程序 切片。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910093067.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种通孔刻蚀方法
- 下一篇:硅平面半导体器件的玻璃钝化方法