CN107678734B - 基于遗传算法的cpu基准测试程序集构造方法 - Google Patents
基于遗传算法的cpu基准测试程序集构造方法 Download PDFInfo
- Publication number
- CN107678734B CN107678734B CN201710789634.3A CN201710789634A CN107678734B CN 107678734 B CN107678734 B CN 107678734B CN 201710789634 A CN201710789634 A CN 201710789634A CN 107678734 B CN107678734 B CN 107678734B
- Authority
- CN
- China
- Prior art keywords
- template
- program
- micro
- individuals
- segments
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Physics & Mathematics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Probability & Statistics with Applications (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
Abstract
本发明公开了一种基于遗传算法的CPU基准测试程序集构造方法,可针对目标应用程序生成一套基准测试程序集。包括以下步骤:应用程序按固定指令数切片并按片段提取微架构无关特征;根据程序片段微架构无关特征的相似性对程序片段进行聚类,并提取典型片段;根据典型片段的特征值范围设计模板,使用遗传算法对典型片段进行模板匹配,确定模板类型及迭代次数;使用分组顺序拼接法将选定模板拼接成基准测试程序,最终构造出基准测试程序集。本发明通过程序片段的相似性分析去除了程序中特征冗余的片段,通过构造模板库,采用遗传算法获得最优模板组合,使合成的测试程序具有更高的代表性,有效缩减了基准测试程序的执行时间。
Description
技术领域
本发明属于CPU测试程序合成技术领域,具体地涉及一种基于遗传算法的CPU基准测试程序集构造方法。
背景技术
在CPU设计的过程中,设计人员通常需要在仿真平台上运行基准测试程序,评估自己的设计方案,根据测试结果分析硬件性能瓶颈,改进CPU微架构设计方案并重新运行测试程序,经过多次迭代,最终达到设计需求和规格说明再进行后续设计、流片。唯一稳定、可靠的性能度量是真实应用的执行时间,因此每一个应用程序本身就是一个基准测试程序。然而真实应用的数量无穷尽,为了在可接受的时间内获得评估结果,只能用少量的测试程序代替大量的真实应用对CPU进行测试。这就要求测试程序具有很高的代表性,一种方法是从应用程序中分阶段地提取负载特征,基于其中的典型特征模式,设计具有相似特征但包含指令数更少的测试程序,这个过程也叫做测试程序合成。最终构造一个基准测试程序集合(测试集),使得测试集可以代表大量真实应用。
测试程序合成方法的重点就在于,要确保合成的测试程序与原始应用具有相似的微架构无关负载特征,这样测试程序的代表性不会受到CPU微架构的影响。然而,当前的基准测试程序合成方法中,有的特征信息包含程序执行过程中的部分微结构相关特征,即每周期执行的指令数、分支指令预测错误率、缓存访问的缺失率等。针对这类负载特征合成测试程序,由于含有微架构相关特征,导致合成的基准测试程序只能代表原始应用程序在特定微架构上的负载特性,跨微架构时对真实应用并不具备很好的代表性。
另一个重点在于,多个微架构无关负载特征之间具有一定耦合度,简单地逐个特征设计,然后叠加特征组合成测试程序并不现实。当前的技术中,大多采用先设计模板库,然后以应用程序中的典型负载特征作为目标,从模板库中挑选所需的模板类型与数量,合成测试程序。其中,模板为某几项负载特征较为突出的小段代码。然而,如果模板类型不够丰富或挑选模板的方法不够灵活、精确,则难以合成出与原始应用程序具有相似特征的测试程序,进而影响测试集的代表性。
此外,当前的测试程序合成技术在缩减测试程序指令数上仍有提升空间,最大程度地精简测试程序的规模更有助于加快仿真评估,进而缩短CPU设计周期。
发明内容
为了解决上述技术问题,本发明目的是:提供了一种基于遗传算法的CPU基准测试程序集构造方法,该方法与微架构无关,能提高测试程序代表性,对所有程序片段进行聚类分析,只选取典型片段作为合成目标,有效缩减了测试集规模。
本发明的技术方案是:
一种基于遗传算法的CPU基准测试程序集构造方法,包括如下步骤:
S01:按照固定的动态指令数对应用程序进行切片,分别统计每个片段的微架构无关特征;
S02:根据微架构无关特征,将应用程序片段进行聚类,提取每类的中心片段作为该应用程序的典型片段;
S03:以典型片段的微架构无关特征值作为基础,设计生成模板程序,编译模板程序并统计每个模板程序的微架构无关特征;
S04:以典型片段为目标,使用遗传算法对模板程序进行选取,包括模板程序类型与迭代次数,使得所有选取的模板程序的各项特征值总和分别匹配目标片段的各项特征值;
S05:根据选取的各类型模板程序迭代次数的公约数R,将所有模板程序分成R组进行顺序拼接生成一个基准测试程序,每组的模板程序类型相同;
S06:对每一典型片段,重复步骤S04和S05,生成基准测试程序集。
优选的,所述微结构无关特征包括分支跳转比例、分支跳转变换率、指令混合比、访存步长、重用距离、关键路径长度和串行指令。
优选的,所述步骤S02中,对应用程序片段进行聚类,具体包括:
根据微架构无关特征向量之间的距离,对所有程序片段进行SOM聚类,再以SOM聚类后得到的中心点作为K-means聚类的初始化中心进行二次聚类,提取每类中心特征向量对应的片段作为典型片段。
优选的,所述步骤S03,具体方法为:
S31:确定生成的模板程序的目标参数,参考典型片段,在一个模板程序中,实现所有与指令混合比相关的维度,对于其他每类微架构无关特征,只实现特定的一个维度;
S32:设计模板程序的生成规则和步骤,保证生成程序的微架构无关特征与目标参数表现相同:首先设计多种代码框架,实现分支跳转变化率,通过对每类代码框架中的参数在所有典型片段的分支跳转变化率范围内随机取值,生成代码框架库;再根据目标参数遍历代码框架库寻找合适的代码框架,用汇编设计指令填充框架内部的基本块,实现其他微架构无关特征参数;
S33:编译生成的模板程序并运行,提取每个模板程序的微架构无关特征值。
优选的,所述步骤S31中,对于指令混合比维度,根据所有典型片段中每类指令占比的范围,使用均匀随机函数生成每类指令的占比值作为生成模板的脚本的输入参数;对于其他每类维度参数,根据所有典型片段每类特征的取值分布,使用按比例选取的方法,每次选取该类特征的一个值作为生成模板的脚本的输入参数。
优选的,所述步骤S04中,使用遗传算法进行模板程序选取的具体方法为:
S41:对模板程序及目标片段进行数学建模,将模板程序的微架构无关特征值构成向量,每个程序片段对应一个向量,将这些模板向量作为遗传算法的染色体,并进行二进制编码,选中该模板向量为1,未选中则标记为0;将由模板程序合成的测试程序作为个体,个体由染色体组成0、1序列,产生N个个体作为父类;
S42:将N个个体分别与目标特征向量计算欧氏距离,以欧氏距离的倒数作为该个体的适应度;
S43:根据每个个体的适应度对个体进行排序,选取适应度高的保留到下一代;
S44:对作为父类的个体两两进行交叉,将未进行交叉的父类个体根据变异率进行变异操作,交叉变异操作后将这些个体作为子代;
S45:计算子代个体的适应度,满足规定的容错率要求则输出最好适应度个体的0、1序列,不满足则进入步骤S42继续遗传算法。
优选的,所述步骤S05中,将模板程序拼接成一个基准测试程序的具体方法为:
S51:根据选取的各类型模板程序迭代次数的公约数R,将模板程序分成R组,每组内每种模板程序的迭代次数为目标片段要求的总迭代次数的1/R;
S52:将步骤S51中的一组模板程序按类进行顺序拼接;
S53:将步骤S52中拼好的模板程序紧接其后复制R-1次,形成匹配目标片段的一个基准测试程序,该测试程序的权重即为目标片段的权重。
本发明还公开了一种基于遗传算法的CPU基准测试程序集构造系统,包括:
微架构无关特征生成模块,按照固定的动态指令数对应用程序进行切片,分别统计每个片段的微架构无关特征;
典型片段提取模块,根据微架构无关特征,将应用程序片段进行聚类,提取每类的中心片段作为该应用程序的典型片段;
模板程序生成模块,以典型片段的微架构无关特征值作为基础,设计生成模板程序,编译模板程序并统计每个模板程序的微架构无关特征;
模板程序选取模块,以典型片段为目标,使用遗传算法对模板程序进行选取,包括模板程序类型与迭代次数,使得所有选取的模板程序的各项特征值总和分别匹配目标片段的各项特征值;
基准测试程序生成模块,根据选取的各类型模板程序迭代次数的公约数R,将所有模板程序分成R组进行顺序拼接生成一个基准测试程序,每组的模板程序类型相同;
基准测试程序集生成模块,将每一典型片段的基准测试程序构造基准测试程序集。
优选的,所述典型片段提取模块对应用程序片段进行聚类,具体方法包括:
根据微架构无关特征向量之间的距离,对所有程序片段进行SOM聚类,再以SOM聚类后得到的中心点作为K-means聚类的初始化中心进行二次聚类,提取每类中心特征向量对应的片段作为典型片段。
优选的,所述模板程序选取模块使用遗传算法进行模板程序选取的具体方法为:
S41:对模板程序及目标片段进行数学建模,将模板程序的微架构无关特征值构成向量,每个程序片段对应一个向量,将这些模板向量作为遗传算法的染色体,并进行二进制编码,选中该模板向量为1,未选中则标记为0;将由模板程序合成的测试程序作为个体,个体由染色体组成0、1序列,产生N个个体作为父类;
S42:将N个个体分别与目标特征向量计算欧氏距离,以欧氏距离的倒数作为该个体的适应度;
S43:根据每个个体的适应度对个体进行排序,选取适应度高的保留到下一代;
S44:对作为父类的个体两两进行交叉,将未进行交叉的父类个体根据变异率进行变异操作,交叉变异操作后将这些个体作为子代;
S45:计算子代个体的适应度,满足规定的容错率要求则输出最好适应度个体的0、1序列,不满足则进入步骤S42继续遗传算法。
与现有技术相比,本发明的优点是:
1、通过本发明提供的CPU测试集构造方法合成的测试程序具有更高的代表性,同时只针对典型程序片段合成测试程序,使得测试集规模更小。
2、本发明在合成测试程序时采用的全部是微架构无关特征,使得合成的测试程序在不同微架构上都能代表真实应用程序;同时,本发明受模板之间特征耦合的影响较小,采用遗传算法挑选模板以匹配目标片段的特征,可以从模板库中找到最优的组合方案,因此合成的测试程序与目标典型片段的特征更接近;此外,本发明方法对所有程序片段进行聚类分析,只选取典型片段作为合成目标,有效缩减了测试集规模。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1为本发明的实施流程图;
图2为程序切片按照微架构无关特征聚类的示意图;
图3为遗传算法流程图;
图4为确定模板顺序的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
实施例:
如图1所示,一种基于遗传算法的CPU基准测试程序集构造方法的流程图,下面就各个步骤加以具体说明。
步骤一:将应用程序在模拟器上运行,按照固定的动态指令数对程序进行切片,分别统计每个片段的微架构无关特征。
微结构无关特征包括:
分支跳转比例:一条条件分支发生跳转的平均概率;
分支跳转变换率:一条条件分支在跳转与非跳转之间变换的概率;对于很高和很低的分支跳转变换率,分支预测器容易预测;
指令混合比:每类指令类型所占的比例,包括整数加减指令、浮点加减指令、整数乘法指令、浮点乘法指令、压栈操作、出栈操作、空指令、读指令和写指令等;
访存步长:时间上连续的两次访存地址的跨度;
重用距离:在两次访问同一地址块的访存操作之间,访问其他特定地址范围内的访存操作的次数;
关键路径长度:关键路径长度的分布是一种量化评估指令间数据依赖关系的方法,对于特定指令窗大小(如m个入口项)的乱序超标量处理器而言,连续m条动态指令之间存在的最长真数据相关依赖链路就是关键路径;关键路径上动态指令的数目即为关键路径长度;一段动态指令流中,关键路径长度是不完全相同的,因此可以采用关键路径长度的分布,量化表征程序内在的指令并行度;
串行指令:通过强制流水线按照顺序执行部分动态指令流,从而保证某些关键操作(比如对处理器状态寄存器的修改,确定访存顺序等)的执行顺序,主要包括数据存储器隔离(DMB),数据同步隔离(DSB)以及指令同步隔离(ISB)。
步骤二:每个切片都有一个微架构无关特征向量,根据片段之间的欧几里得距离,即微架构无关特征向量之间的距离,对所有片段进行聚类。
首先执行SOM算法,将待聚类片段的特征向量数据输入到SOM网络进行训练,训练结束后,网络通过自组织方式使输出层各节点成为对特定模式类敏感的神经细胞,各节点对应的连接权向量成为各输入模式类的中心向量。此中心向量作为K-means算法的初始中心向量,再经过K-means聚类将片段分类,提取每类中心特征向量对应的切片作为该应用的典型片段。如图2所示,为程序切片按照微架构无关特征聚类的示意图。
步骤三:以典型片段的微架构无关特征值作为基础,设计生成C嵌汇编的程序作为模板程序,编译模板程序并在模拟器上执行,统计每个模板程序的微架构无关特征。
生成模板的脚本中,微架构无关特征的设计方法如下:
指令混合比:根据向量中指令混合比分配各类指令数量;
访存步长:根据向量中的访存步长的分布情况计算所有访存指令的目的地址;
重用距离:根据重用距离分布,将特定数目访存其他特定地址范围的访存指令插入到两条指令之间;
关键路径长度:构造指令间的真数据相关,即根据统计的关键路径长度分布,选取特定数量的指令,对指令分配架构寄存器,分配方法是按顺序将前一条指令的目的寄存器作为后一条指令的源寄存器,直至所有指令分配完成;
串行化指令:按照统计的串行指令的类型时间局部性,依据其分布在间隔特定的指令数量间插入指定类型的串行化指令。
通过C语言搭建模板程序的代码框架,并在框架内部使用内联汇编设计指令。具体方法为:
(31)确定生成的模板程序的目标参数,参考典型片段,在一个模板程序中,实现所有与指令混合比相关的维度,对于其他每类微架构无关特征,只实现特定的一个维度。
对于指令混合比维度,根据所有典型片段中每类指令占比的范围,使用均匀随机函数生成每类指令的占比值作为生成模板的脚本的输入参数;对于其他每类维度参数,根据所有典型片段每类特征的取值分布,使用按比例选取的方法,每次选取该类特征的一个值作为生成模板的脚本的输入参数;将指令混合比及每类维度的参数用Json文件的形式保存;
(32)设计模板程序的生成规则和步骤,保证生成程序的微架构无关特征与Json指定的参数表现相同。
首先设计多种代码框架,实现分支跳转变化率,通过对每类代码框架中的参数在所有典型片段的分支跳转变化率范围内随机取值,生成代码框架库;再根据Json文件中指定的参数遍历代码框架库寻找合适的代码框架,用汇编设计指令填充框架内部的基本块,实现其他微架构无关特征参数;
(33)编译生成的模板程序并在模拟器上运行,提取每个模板的微架构无关特征值。
步骤四:以典型片段为目标,使用遗传算法对模板程序进行选取,包括模板程序类型与迭代次数,使得所有选取的模板程序的各项特征绝对数值总和分别匹配目标片段的各项特征值。
如图3所示为遗传算法选取模板的流程图,使用遗传算法进行模板选取的具体方法为:
(41)首先对模板及目标片段进行数学建模,将模板的微架构无关特征绝对数值构成向量(例如指令数而非指令比例),每个程序片段对应一个向量,将这些模板向量作为遗传算法的染色体,并进行二进制编码,选中该模板向量为1,未选中则标记为0。将由模板合成的测试程序作为个体,个体由染色体组成,即每个个体为一组0、1序列。初始代由随机算法产生这种0、1序列,产生N个个体作为父类;
(42)将N个个体分别与目标特征向量计算欧氏距离,以欧氏距离的倒数作为该个体的适应度,即欧氏距离越小,适应度越大;
(43)根据每个个体的适应度对个体进行排序,将适应度最高的个体记录,根据适应度高低对个体进行选择,选取适应度高的保留到下一代;
(44)对作为父类的个体两两进行交叉,即在规定的交叉率允许的范围内,对两个个体的0、1进行个别互换,将未进行交叉的父类个体根据变异率进行变异操作,即随机将0、1序列进行个别翻转,交叉变异操作后将这些个体作为子代;
(45)计算子代个体的适应度,满足规定的容错率要求则输出最好适应度个体的0、1序列,不满足则进入步骤(42)继续遗传算法;
步骤五:根据选取的各类型模板迭代次数的公约数R,将所有模板分成R组进行顺序拼接生成一个基准测试程序,其中,每组的模板类型相同。
如图4所示,为确定模板顺序的示意图,生成对应一个目标片段的基准测试程序的具体方法为:
(51)根据选取的各类型模板迭代次数的公约数R,将模板分成R组,每组内每种模板的迭代次数为目标片段要求的总迭代次数的1/R;
(52)将步骤(51)中的一组模板按类进行顺序拼接;
(53)将步骤(52)中拼好的模板代码紧接其后复制R-1次,形成匹配目标片段的一个基准测试程序,该测试程序的权重即为目标片段的权重。
步骤六:对于每一个典型片段,重复步骤四和五,最终生成基准测试程序集。形成的基准测试程序集包含原始应用在不同阶段表现出的特征,结合每个测试程序的权重,即可用测试集的运行性能预测整个原始应用的运行性能。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
Claims (10)
1.一种基于遗传算法的CPU基准测试程序集构造方法,其特征在于,包括如下步骤:
S01:按照固定的动态指令数对应用程序进行切片,分别统计每个片段的微架构无关特征;
S02:根据微架构无关特征,将应用程序片段进行聚类,提取每类的中心片段作为该应用程序的典型片段;
S03:以典型片段的微架构无关特征值作为基础,设计生成模板程序,编译模板程序并统计每个模板程序的微架构无关特征;
S04:以典型片段为目标,使用遗传算法对模板程序进行选取,包括模板程序类型与迭代次数,使得所有选取的模板程序的各项特征值总和分别匹配目标片段的各项特征值;
S05:根据选取的各类型模板程序迭代次数的公约数R,将所有模板程序分成R组进行顺序拼接生成一个基准测试程序,每组的模板程序类型相同;
S06:对每一典型片段,重复步骤S04和S05,生成基准测试程序集。
2.根据权利要求1所述的基于遗传算法的CPU基准测试程序集构造方法,其特征在于,所述微架构无关特征包括分支跳转比例、分支跳转变换率、指令混合比、访存步长、重用距离、关键路径长度和串行指令。
3.根据权利要求1所述的基于遗传算法的CPU基准测试程序集构造方法,其特征在于,所述步骤S02中,对应用程序片段进行聚类,具体包括:
根据微架构无关特征向量之间的距离,对所有程序片段进行SOM聚类,再以SOM聚类后得到的中心点作为K-means聚类的初始化中心进行二次聚类,提取每类中心特征向量对应的片段作为典型片段。
4.根据权利要求1所述的基于遗传算法的CPU基准测试程序集构造方法,其特征在于,所述步骤S03,具体方法为:
S31:确定生成的模板程序的目标参数,参考典型片段,在一个模板程序中,实现所有与指令混合比相关的维度,对于其他每类微架构无关特征,只实现特定的一个维度;
S32:设计模板程序的生成规则和步骤,保证生成程序的微架构无关特征与目标参数表现相同:首先设计多种代码框架,实现分支跳转变化率,通过对每类代码框架中的参数在所有典型片段的分支跳转变化率范围内随机取值,生成代码框架库;再根据目标参数遍历代码框架库寻找合适的代码框架,用汇编设计指令填充框架内部的基本块,实现其他微架构无关特征参数;
S33:编译生成的模板程序并运行,提取每个模板程序的微架构无关特征值。
5.根据权利要求4所述的基于遗传算法的CPU基准测试程序集构造方法,其特征在于,所述步骤S31中,对于指令混合比维度,根据所有典型片段中每类指令占比的范围,使用均匀随机函数生成每类指令的占比值作为生成模板的脚本的输入参数;对于其他每类维度参数,根据所有典型片段每类特征的取值分布,使用按比例选取的方法,每次选取该类特征的一个值作为生成模板的脚本的输入参数。
6.根据权利要求1所述的基于遗传算法的CPU基准测试程序集构造方法,其特征在于,所述步骤S04中,使用遗传算法进行模板程序选取的具体方法为:
S41:对模板程序及目标片段进行数学建模,将模板程序的微架构无关特征值构成向量,每个程序片段对应一个向量,将这些模板向量作为遗传算法的染色体,并进行二进制编码,选中该模板向量为1,未选中则标记为0;将由模板程序合成的测试程序作为个体,个体由染色体组成0、1序列,产生N个个体作为父类;
S42:将N个个体分别与目标特征向量计算欧氏距离,以欧氏距离的倒数作为该个体的适应度;
S43:根据每个个体的适应度对个体进行排序,选取适应度高的保留到下一代;
S44:对作为父类的个体两两进行交叉,将未进行交叉的父类个体根据变异率进行变异操作,交叉变异操作后将这些个体作为子代;
S45:计算子代个体的适应度,满足规定的容错率要求则输出最好适应度个体的0、1序列,不满足则进入步骤S42继续遗传算法。
7.根据权利要求1所述的基于遗传算法的CPU基准测试程序集构造方法,其特征在于,所述步骤S05中,将模板程序拼接成一个基准测试程序的具体方法为:
S51:根据选取的各类型模板程序迭代次数的公约数R,将模板程序分成R组,每组内每种模板程序的迭代次数为目标片段要求的总迭代次数的1/R;
S52:将步骤S51中的一组模板程序按类进行顺序拼接;
S53:将步骤S52中拼好的模板程序紧接其后复制R-1次,形成匹配目标片段的一个基准测试程序,该测试程序的权重即为目标片段的权重。
8.一种基于遗传算法的CPU基准测试程序集构造系统,其特征在于,包括:
微架构无关特征生成模块,按照固定的动态指令数对应用程序进行切片,分别统计每个片段的微架构无关特征;
典型片段提取模块,根据微架构无关特征,将应用程序片段进行聚类,提取每类的中心片段作为该应用程序的典型片段;
模板程序生成模块,以典型片段的微架构无关特征值作为基础,设计生成模板程序,编译模板程序并统计每个模板程序的微架构无关特征;
模板程序选取模块,以典型片段为目标,使用遗传算法对模板程序进行选取,包括模板程序类型与迭代次数,使得所有选取的模板程序的各项特征值总和分别匹配目标片段的各项特征值;
基准测试程序生成模块,根据选取的各类型模板程序迭代次数的公约数R,将所有模板程序分成R组进行顺序拼接生成一个基准测试程序,每组的模板程序类型相同;
基准测试程序集生成模块,将每一典型片段的基准测试程序构造基准测试程序集。
9.根据权利要求8所述的基于遗传算法的CPU基准测试程序集构造系统,其特征在于,所述典型片段提取模块对应用程序片段进行聚类,具体方法包括:
根据微架构无关特征向量之间的距离,对所有程序片段进行SOM聚类,再以SOM聚类后得到的中心点作为K-means聚类的初始化中心进行二次聚类,提取每类中心特征向量对应的片段作为典型片段。
10.根据权利要求8所述的基于遗传算法的CPU基准测试程序集构造系统,其特征在于,所述模板程序选取模块使用遗传算法进行模板程序选取的具体方法为:
S41:对模板程序及目标片段进行数学建模,将模板程序的微架构无关特征值构成向量,每个程序片段对应一个向量,将这些模板向量作为遗传算法的染色体,并进行二进制编码,选中该模板向量为1,未选中则标记为0;将由模板程序合成的测试程序作为个体,个体由染色体组成0、1序列,产生N个个体作为父类;
S42:将N个个体分别与目标特征向量计算欧氏距离,以欧氏距离的倒数作为该个体的适应度;
S43:根据每个个体的适应度对个体进行排序,选取适应度高的保留到下一代;
S44:对作为父类的个体两两进行交叉,将未进行交叉的父类个体根据变异率进行变异操作,交叉变异操作后将这些个体作为子代;
S45:计算子代个体的适应度,满足规定的容错率要求则输出最好适应度个体的0、1序列,不满足则进入步骤S42继续遗传算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710789634.3A CN107678734B (zh) | 2017-09-05 | 2017-09-05 | 基于遗传算法的cpu基准测试程序集构造方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710789634.3A CN107678734B (zh) | 2017-09-05 | 2017-09-05 | 基于遗传算法的cpu基准测试程序集构造方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107678734A CN107678734A (zh) | 2018-02-09 |
CN107678734B true CN107678734B (zh) | 2020-12-08 |
Family
ID=61135559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710789634.3A Active CN107678734B (zh) | 2017-09-05 | 2017-09-05 | 基于遗传算法的cpu基准测试程序集构造方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107678734B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115543719B (zh) * | 2022-11-24 | 2023-04-07 | 飞腾信息技术有限公司 | 基于芯片设计的组件优化方法、装置、计算机设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902448A (zh) * | 2012-12-28 | 2014-07-02 | 中国科学院深圳先进技术研究院 | 多核处理器软错误压力测试程序生成系统及方法 |
CN105677521A (zh) * | 2015-12-29 | 2016-06-15 | 东南大学—无锡集成电路技术研究所 | 一种面向移动智能终端处理器的基准测试程序合成方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2486431A1 (en) * | 2002-05-20 | 2003-12-04 | Rosetta Inpharmatics Llc | Computer systems and methods for subdividing a complex disease into component diseases |
CN106598850B (zh) * | 2016-12-03 | 2019-05-28 | 浙江理工大学 | 一种基于程序失效聚类分析的错误定位方法 |
-
2017
- 2017-09-05 CN CN201710789634.3A patent/CN107678734B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902448A (zh) * | 2012-12-28 | 2014-07-02 | 中国科学院深圳先进技术研究院 | 多核处理器软错误压力测试程序生成系统及方法 |
CN105677521A (zh) * | 2015-12-29 | 2016-06-15 | 东南大学—无锡集成电路技术研究所 | 一种面向移动智能终端处理器的基准测试程序合成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107678734A (zh) | 2018-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bell Jr et al. | Improved automatic testcase synthesis for performance model validation | |
CN110070117A (zh) | 一种数据处理方法及装置 | |
CN109542783B (zh) | 一种基于变量分割的扩展有限状态机测试数据生成方法 | |
Charif-Rubial et al. | CQA: A code quality analyzer tool at binary level | |
US6918098B2 (en) | Random code generation using genetic algorithms | |
CN105677521B (zh) | 一种面向移动智能终端处理器的基准测试程序合成方法 | |
CN116432570A (zh) | 一种芯片的测试用例生成方法、装置及存储介质 | |
Lopes et al. | A machine learning approach to accelerating DSE of reconfigurable accelerator systems | |
Zhang et al. | A comprehensive deep learning library benchmark and optimal library selection | |
Zhang et al. | An empirical study on clone consistency prediction based on machine learning | |
CN107678734B (zh) | 基于遗传算法的cpu基准测试程序集构造方法 | |
Goswami et al. | Machine learning based fast and accurate High Level Synthesis design space exploration: From graph to synthesis | |
CN112783747B (zh) | 一种应用程序的执行时间预测方法及装置 | |
Calotoiu et al. | Lightweight requirements engineering for exascale co-design | |
Domínguez et al. | A methodology for comparing the execution time of metaheuristics running on different hardware | |
CN108008999B (zh) | 指标评估方法及装置 | |
Zhang et al. | ANN-based performance estimation of embedded software for risc-v processors | |
Zhao et al. | AutoGraph: Optimizing DNN computation graph for parallel GPU kernel execution | |
Anuradha et al. | Efficient workload characterization technique for heterogeneous processors | |
Letras et al. | Decision tree-based throughput estimation to accelerate design space exploration for multi-core applications | |
Tompazi et al. | Instruction-aware learning-based timing error models through significance-driven approximations | |
CN112882917A (zh) | 一种基于贝叶斯网络迁移的虚拟机服务质量动态预测方法 | |
Bell Jr et al. | The case for automatic synthesis of miniature benchmarks | |
Guo et al. | A general-purpose framework for FPGA-accelerated genetic algorithms | |
Bird et al. | Performance modelling of magnetohydrodynamics codes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190411 Address after: 215123 Linquan Street 399, Dushu Lake Higher Education District, Suzhou Industrial Park, Jiangsu Province Applicant after: Suzhou Institute, Southeast University Address before: 210008 No. 2, Four Brand Building, Xinjiekou Street, Xuanwu District, Nanjing City, Jiangsu Province Applicant before: Southeast University |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |