[发明专利]基于机器学习的编译器测试加速方法有效
申请号: | 201710292927.0 | 申请日: | 2017-04-28 |
公开(公告)号: | CN107203469B | 公开(公告)日: | 2020-04-03 |
发明(设计)人: | 陈俊洁;白彦威;郝丹;熊英飞;张洪宇;张路;谢冰 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京万象新悦知识产权代理有限公司 11360 | 代理人: | 黄凤茹 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 机器 学习 编译器 测试 加速 方法 | ||
1.一种编译器测试加速方法,采用机器学习方法构造用于预测测试程序触发缺陷的概率的能力模型和用于预测每个测试程序的执行时间的时间模型,通过计算每个测试程序单位时间内触发缺陷的概率,实现对测试程序的排序,从而实现编译器测试加速;所述方法包括学习阶段和调度阶段;分别包括如下步骤:
1)学习阶段,包括识别特征过程、训练能力模型过程和训练时间模型过程:
11)识别特征过程,分别识别得到测试程序中的存在特征和使用特征;
12)训练能力模型过程:
121)收集一组测试程序作为训练集,分成能够触发缺陷的测试程序和不能够触发缺陷的测试程序;
122)利用上述训练集训练能力模型,包括特征选择、归一化和构建能力模型;
所述特征选择通过每个特征的信息增益比对特征进行选择,过滤掉信息增益比为零的无效特征;
所述归一化将特征的值统一到[0,1]区间中;
使用机器学习算法构建能力模型,所述能力模型的输入为测试程序的特征向量,模型输出为基于特征向量值计算得到的概率值,作为触发缺陷的概率;
13)训练时间模型
131)收集一组测试程序作为训练集,并记录所述测试程序的执行时间;
132)提取训练集中测试程序的存在特征和使用特征,并将记录的时间作为标记;
对训练集的每一维特征进行归一化处理;
使用高斯过程,通过懒惰学习方法和核函数训练模型构建回归模型,作为时间模型,用于预测每个测试程序的执行时间;所述时间模型输入为测试程序的特征向量,输出为基于特征向量值计算得到的值,即测试程序的执行时间;
2)调度阶段,基于所述学习阶段得到的能力模型和时间模型,得到新的测试程序的执行顺序,进行调度:
21)对每个待调度测试程序提取得到存在特征和使用特征;
22)使用所述学习阶段得到的能力模型和时间模型,分别预测得到待调度测试程序的触发缺陷的概率以及执行时间;
23)将能力模型预测的触发缺陷的概率值除以时间模型预测的执行时间,计算得到每个待调度测试程序的单位时间内的触发缺陷的概率;
24)按照每个测试程序的单位时间的触发缺陷的概率值,对测试程序进行排序,得到测试程序新的调度顺序,由此加速编译器测试。
2.如权利要求1所述编译器测试加速方法,其特征是,步骤11)所述存在特征表示在测试程序中是否存在某种类型的语言元素;所述某种类型的语言元素用于预测测试程序是否能够触发编译器缺陷;当存在所述类型的语言元素时,所述存在特征的特征值为1,否则为0。
3.如权利要求2所述编译器测试加速方法,其特征是,所述存在特征包括:C语言中的所有语句类型、C语言中的所有表达式类型、C语言中的所有变量类型、C语言中的所有操作类型。
4.如权利要求1所述编译器测试加速方法,其特征是,步骤11)所述使用特征表示测试程序中某种语言元素被如何使用,所述使用特征当某些程序元素被用于某种特定的行为时发生。
5.如权利要求1所述编译器测试加速方法,其特征是,步骤11)所述使用特征包括:地址特征、结构体位域特征、指针引用特征、指针比较特征、别名集合特征、跳跃特征和使用变量的特征。
6.如权利要求1所述编译器测试加速方法,其特征是,步骤121)和步骤131)具体通过测试程序生成工具CSmith收集一组测试程序作为训练集。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710292927.0/1.html,转载请声明来源钻瓜专利网。