CN103049384A - 一种基于众核的多线程极限能耗测试源程序自动生成框架 - Google Patents
一种基于众核的多线程极限能耗测试源程序自动生成框架 Download PDFInfo
- Publication number
- CN103049384A CN103049384A CN2012105894270A CN201210589427A CN103049384A CN 103049384 A CN103049384 A CN 103049384A CN 2012105894270 A CN2012105894270 A CN 2012105894270A CN 201210589427 A CN201210589427 A CN 201210589427A CN 103049384 A CN103049384 A CN 103049384A
- Authority
- CN
- China
- Prior art keywords
- module
- energy consumption
- limit energy
- instruction
- branch
- 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.)
- Pending
Links
Images
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明提供了一种基于众核的多线程极限能耗测试源程序自动生成框架,包括:抽象负载模块、代码生成器模块、编译汇编器模块、全系统模拟器模块和机器学习模块;所述抽象负载模块抽象出负载模型,接收用户输入的模型参数;所述机器学习模块对用户输入的模型参数进行处理产生多组候选的负载模型对象;所述代码生成器模块根据负载模型对象的参数生成候选极限能耗测试源程序;所述编译汇编器模块对所述候选极限能耗测试源程序进行编译产生多个可执行的合成程序;所述全系统模拟器模块对所述多个可执行的合成程序的极限能耗进行评测,并将评测结果反馈至所述机器学习模块;所述机器学习模块进一步根据反馈的评测结果进行迭代操作。
Description
技术领域
本发明涉及处理器体系结构领域,具体设计一种基于众核的多线程极限能耗测试源程序自动生成框架。
背景技术
通常计算机系统主要分为三个部分处理器(CPU)、存储系统(memory)和互连通信(interconnections),每部分对整个计算机系统的能耗都有重要的影响。手工编写的极限能耗测试程序要达到系统真实的极限能耗,必须尽量同时使计算机系统的各个部分的活动因子都达到极限。因此手工编写一些极限能耗测试源程序烦琐而耗时,一般要花费几个星期甚至几个月的时间,而且要求设计人员对计算机系统的微体系结构有非常专业的认识。这种手工编写极限能耗测试源程序的方法只适用于专业的设计人员且难以保证其能耗是最高的,当涉及到众核系统时其烦琐程度更令人无法接受。工业界使用的Mprime和CPUburn-in等能耗极限程序,都是做大量运算让处理器一直处于发热状态,使处理器的温度达到其所能容忍的极限,但此方法针对单核系统的CPU且没有考虑其他部件,所以这些工业界的极限能耗程序并不能使整个系统能耗达到最大,不能作为测试多核和众核系统极限能耗的最优选择。而利用已有的系统级极限程序生成的技术SYMPO产生的极限程序虽然考虑到了存储(memory)的因素,相比一些工业界的测试程序能产生较优的极限能耗。但是其针对单核系统,没有充分考虑计算机系统的整体性和众核体系结构的复杂性,所以其对众核系统不适用。即便是基于多核的极限能耗程序生成技术MAMPO线程并行度最大也只有32,只能针对核数较少的系统,当应用于众核系统时其测得的极限能耗明显不足。当计算机的核数超过一定数目时,核心之间的内部互连(interconnections)、共享缓存(shared cache),缓存一致性目录(cache coherence directory)等部件产生的能耗比重比处理器的能耗要大很多,所以对于众核系统使用基于单核或者多核系统的极限程序生成技术都不能产生一个有效的极限能耗测试源程序。
发明内容
本发明所要解决的技术问题是提供一种与体系结构无关、代码生成简便、优化极限能耗测试源程序时间快且准确性高的基于众核的多线程极限能耗测试源程序自动生成框架。
为达到上述目的,本发明提供如下的技术方案:
一种基于众核的多线程极限能耗测试源程序自动生成框架,包括:
抽象负载模块、代码生成器模块、编译汇编器模块、全系统模拟器模块和机器学习模块;所述抽象负载模块抽象出负载模型,接收用户输入的模型参数;所述机器学习模块对用户输入的模型参数进行处理产生多组候选的负载模型对象;所述代码生成器模块根据负载模型对象的参数合成多个嵌入了汇编代码的C程序,作为候选极限能耗测试源程序;所述编译汇编器模块对所述候选极限能耗测试源程序进行编译产生多个可执行的合成程序;所述全系统模拟器模块对所述多个可执行的合成程序的极限能耗进行评测,并将评测结果反馈至所述机器学习模块;所述机器学习模块进一步根据反馈的评测结果进行迭代操作。
进一步的,所述抽象负载模块通过负载模型的分支分歧率参数来控制众核系统中程序的分支分歧情况。
进一步的,所述抽象负载模块采用分支转换率来刻画分支跳转的频率。
进一步的,所述机器学习模块采用遗传算法进行迭代操作。
进一步的,所述代码生成器模块包括主函数,所述主函数用于:声明和分配共享数据空间,产生一组指向整型或是浮点型数组的指针供每个线程使用;初始化线程数量和同步障;调用线程子函数创建一定数量的线程。
进一步的,所述代码生成器模块还包括线程子函数,所述线程子函数用于:声明和分配私有数据空间;为本线程分配处理器ID号;同步各个线程;根据抽象模型参数生成外循环和两个内循环的循环体。
进一步的,所述代码生成器模块合成多个嵌入了汇编代码的C程序时使用的算法为:
基于模型中的平均共享访存率、混合指令中的内存操作比例、工作集大小,生成分配私有数据空间的代码;
基于分配的处理器ID号,接下来生成调用同步障函数代码;
基于根据动态指令数生成外循环的代码,并根据基本块大小和基本块数确定分支;
基于基本块数和大小,生成第一个内循环的程序骨架;
对于第一个内循环的每个基本块,根据指令混合比例配置每条指令的指令类型,如果加载指令和存储指令参数为真的话,就会对指令进行冒泡排序把存储指令放在加载指令之后,并且设置相同的指令操作数地址;
基于平均分支可预测性,确定分支组和取模操作的次数。然后根据取模操作进行分支预测。确定分支预测的同时根据配置的平均分支分歧率参数,减少同一类型线程中出现的分支分歧;
使用平均的指令依赖距离为每条指令的操作数分配一条生产者指令,实现对指令级并行的配置。同时根据内存级并行信息,分配加载-加载依赖;
基于共享访存率,将内存操作分为共享数据访存和私有数据访存,然后根据相应内存操作的跨步,直接计算指令操作数的地址;
以罗宾环的方式分配目的寄存器和源寄存器,根据相应的依赖距离,将一条指令操作数的源寄存器作为生产者指令的目的寄存器;
基于工作集大小确定内循环的循环次数,产生循环终止的比较指令;
生成第二个内循环,如果内存级并行频率参数设置较大时,直接拷贝第一个内循环,反之,则除去第一个内循环里的内存操作然后拷贝成为第二个循环。
进一步的,所述全系统模拟器模块在内部互联方式模拟器上选择开源的网络互联模拟器Booksim。
进一步的,所述全系统模拟器模块在共享二级缓存和一致性目录能耗模拟器上选择模拟器CACTI。
与现有技术相比,本发明所提供的基于众核的多线程极限能耗测试源程序自动生成框架具有以下优势:与体系结构无关:其抽象负载模块抽象出来的负载模型都是与微体系结构无关的程序特征,所以生成的程序可以适用于多种体系结构。简易性:由于本发明实现了多线程代码生成器,其能基于抽象负载模型参数,利用代码生成算法自动生成多线程极限能耗测试源程序;代码生成过程操作简单,避免手工编写程序的繁琐,而且不需专业的体系结构方面的知识。快速最优:本发明采用机器学习的方法,机器学习模块实现的遗传算法经过多次迭代后可以很快地达到一个稳定的状态,找出最优的极限能耗测试源程序。遗传算法一般经过几十次或是近百次迭代即可找到最优解。因此相比其他技术耗时较短,而且还可以保证找到的极限能耗程序近乎最优。准确性:在众核系统中,各部件之间互连方式和共享缓存一致性较多核系统都更为复杂,另外,由于线程并行度和数据并行度的增大,在一组同构的线程中可能会出现分支分歧,这会降低众核系统的能耗。本专利提出的方案充分考虑众核系统的特性,同时模拟处理器、内存、内部互连、共享二级缓存以及一致性目录等部件的能耗,因此本发明提出的方案获得极限能耗要比其他技术获得的要更加准确,更加接近真实的极限能耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于众核的多线程极限能耗测试源程序自动生成框架的结构图。
图2为本发明实施例提供的一种基于众核的多线程极限能耗测试源程序自动生成框架的工作流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例和附图,对本发明实施例中的技术方案进行清楚、完整地描述。需要说明的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
如图1所示,本实施例提供的一种基于众核的多线程极限能耗测试源程序自动生成框架(AM3P,Automatic Multithreaded MaximumMany-core Power),包括:
抽象负载模块、代码生成器模块、编译汇编器模块、全系统模拟器模块和机器学习模块;所述抽象负载模块抽象出负载模型,接收用户输入的模型参数;所述机器学习模块对用户输入的模型参数进行处理产生多组候选的负载模型对象;所述代码生成器模块根据负载模型对象的参数合成多个嵌入了汇编代码的C程序,作为候选极限能耗测试源程序;所述编译汇编器模块对所述候选极限能耗测试源程序进行编译产生多个可执行的合成程序;所述全系统模拟器模块对所述多个可执行的合成程序的极限能耗进行评测,并将评测结果反馈至所述机器学习模块;所述机器学习模块进一步根据反馈的评测结果进行迭代操作。上述为本实施例所提供的解决方案的简要概述,下面将对上述的抽象负载模块、代码生成器模块、编译汇编器模块、全系统模拟器模块和机器学习模块进行分别阐述:
抽象负载模块
首先,抽象负载模块要基于多核系统,其每一维(因子)都要尽可能的独立于具体的微体系结构,这样合成的极限能耗程序才能适用于多种体系结构;其次,所述抽象负载模块抽象出来的负载模型的每一维都要足够健壮,能够通过改变参数的值来改变合成程序在众核系统每个组件上的执行行为,所述负载模型的维数不能太多,否则耗时就会过长,甚至会导致搜索空间过大而不能达到一个稳定的状态;最后,所述负载模型的每个维度要能代表众核系统上的真实程序的特征,其性能要和真实程序的性能相当,否则合成的极限能耗程序就没有意义。
在AM3P的设计中,抽象负载模块采用和基于多核的抽象负载模型类似的程序特征,然后考虑众核系统高线程并行度和数据并行度等特点,增大线程类型参数的范围,方便用户配置线程的类型。AM3P的负载模块抽象出来含有22个维(因子)的负载模型,这些特征都是通过对大量真实程序进行实验,分析其对程序性能和能耗的影响后抽象出来的,既是与具体的体系结构无关的,又能代表真实程序的特征。
作为优选,在众核系统中,数据并行度更高,线程的并行度也更大。在执行一组线程时有些线程可能会发生执行路径不一致,出现分支分歧(branch divergence)的情况导致程序执行串行化,严重影响线程的并行执行,进而降低众核系统的能耗。AM3P通过负载模型的参数分支分歧率(branch divergence rate)参数来控制众核系统中程序的分支分歧情况。另外,考虑到众核系统的线程数较大,在处理多线程时,为了降低线程异构带来的搜索空间急剧膨胀的影响,AM3P在实现抽象负载模型时只提供了4种异构的线程类型。
作为优选,对于访存模型,AM3P采用通用的访存模型,即由用户配置任意组合的四种数据共享模式(生产者-消费者模式、只读模式、流浪者模式、非常用模式)。由于程序中的锁和同步故障会产生处理器的等待和其他延时,AM3P省略了并行程序中的锁和同步故障来减少程序执行时间,保证各模块一直处于忙碌状态。AM3P在实现访存时采用基于跨步的访存模型,对共享数据访存和私有数据访存的访存跨步独立处理,将每种数据访存方式的跨步分布到两个区间里,然后把两个区间的跨步等概率的分配给一种访存指令。
作为优选,对于程序中的分支预测,AM3P抽象负载模块采用分支转换率来刻画分支跳转的频率,分支转换率等于分支改变的次数与分支总数之比。如果分支转换率高,可认为其分支在短时间内改变次数多,在做分支预测的时候不能准确的预测分支是跳转还是不跳转;如果分支转换率低,则可认为分支改变次数很少,在进行预测的时候可以偏向于跳转或是不跳转。
充分考虑以上几个方面,AM3P提取以下主要程序特征构成其抽象出来的负载模型:
线程数:线程的数量控制多线程极限程序的线程并行度,最多可设置1024个线程;
线程类型和处理器分配:控制线程的类型和分配处理器I D;
平均共享数据访存率:控制访问共享数据的比例,可以为每种线程类型设置此参数;
共享数据访存跨步:控制访问共享数据的访存开销,可以为每种线程类型设置此参数;
Average Branch Divergence:控制合成程序的线程分支分歧;
Coupled Load-store:如果设置为真,则数据加载和存储必须成对出现以模拟流浪者数据访问模式;
工作集大小:合成程序工作集的大小,在生成实际代码时控制内循环的循环次数;
内存级并行(Memery Level Parallelism):控制实际代码中的并行发生的访存次数,可以为每种线程类型独立设置;
内存级并行频率(MLP frequency):控制实际代码中的访存突发率;
指令类型组合:每种指令类型的所占比例;
平均基本块大小:生成代码中每个基本块的指令数;
寄存器依赖距离:一条寄存器数据的生产者和消费者指令之间的指令数,控制生成的实际代码中的指令级并行;
分支可预测性:影响程序中的分支跳转。
代码生成器模块
代码生成器模块根据基于众核的抽象负载模型参数合成代码,是极限能耗程序自动生成框架的核心部分。作为优选,所述代码生成器模块生成的合成程序代码包括一个主函数和一个线程子函数,在AM3P中使用pthread线程库来实现多线程,每个线程由系统调用pthread_creat()回调线程子函数产生。合成代码的主函数主要完成以下工作:
声明和分配共享数据空间,产生一组指向整型或是浮点型数组的指针供每个线程使用;
初始化线程数量和同步障;
调用线程子函数创建一定数量的线程。
合成代码中的线程子函数负责创建一个线程,子函数包括一个外循环和两个嵌入汇编代码的内循环。子函数主要完成以下工作:
声明和分配私有数据空间;
为本线程分配处理器ID号;
同步各个线程;
根据抽象模型参数生成外循环和两个内循环的循环体。
作为优选,代码生成器模块根据给定的模型参数生成嵌入汇编代码的多线程C程序,这种程序具有真实程序的性能和能耗特征。所述代码生成器模块在实现合成代码生成时采用如下算法:
基于模型中的平均共享访存率、混合指令中的内存操作比例、工作集大小,生成分配私有数据空间的代码;
基于分配的处理器ID号,接下来生成调用同步障函数代码;
基于根据动态指令数生成外循环的代码,并根据基本块大小和基本块数确定分支;
基于基本块数和大小,生成第一个内循环的程序骨架;
对于第一个内循环的每个基本块,根据指令混合比例配置每条指令的指令类型,如果加载指令和存储指令参数为真的话,就会对指令进行冒泡排序把存储指令放在加载指令之后,并且使指令操作数地址相同;
基于平均分支可预测性,确定分支组和取模操作的次数。然后根据取模操作进行分支预测。确定分支预测的同时根据配置的平均分支分歧率参数,减少同一类型线程中出现的分支分歧;
使用平均的指令依赖距离为每条指令的操作数分配一条生产者指令,实现对指令级并行的配置。同时根据内存级并行信息,分配加载-加载依赖;
基于共享访存率,将内存操作分为共享数据访存和私有数据访存,然后根据相应内存操作的跨步,直接计算指令操作数的地址;
以罗宾环的方式分配目的寄存器和源寄存器,根据相应的依赖距离,将一条指令操作数的源寄存器作为生产者指令的目的寄存器;
基于工作集大小确定内循环的循环次数,产生循环终止的比较指令;
生成第二个内循环,如果内存级并行频率参数设置较大时,直接拷贝第一个内循环,反之,则除去第一个内循环里的内存操作然后拷贝成为第二个循环。
编译汇编器模块
作为优选,所述编译汇编器模块包括:编译器、ASM后期处理器和汇编器。
所述代码生成器模块生成的多线程合成程序,所述多线程合成程序是包含有汇编代码的C程序,其包含的汇编代码都是根据抽象模型的参数生成,所述编译汇编器模块就对所述C程序直接进行汇编,产生第一代程序的汇编代码,然后把产生的汇编代码交由ASM后期处理器进行处理,取出不必要的指令,接着把处理过的汇编代码送至汇编器,生成针对某种众核系统配置的二进制可执行程序。
全系统模拟器模块
全系统模拟器模块负责模拟众核计算机系统各部分的行为,并测试各部分产生的能耗。
作为优选,AM3P中使用全系统模拟器Simics,其中性能模拟方面:处理器选用Opal性能模拟器,存储器选用Ruby性能模拟器,内部互连选用Booksim性能模拟器;能耗评估模拟方面:处理器选用Wattch能耗模拟器,存储器选用DRAMsim能耗模拟器,内部互连选用Orion能耗模拟器,对于共享的二级缓存和一致性目录能耗的评估则使用最新的模拟器CACTI。
需要说明的是,在AM3P的实现中,内部互连模拟器和共享的二级缓存和一致性目录模拟器的选择尤为重要。对于众核系统其互连方式不能像多核系统那样采用传统的基于共享存储的总线互连,而是采用一种NOC(片上网络,network on chip)的互连方式,AM3P在实现这个模块时使用开源的网络互连模拟器Booksim。对于众核系统,由于处理器较多,共享缓存的数据很容易出现不一致情况,当对共享缓存数据操作较多时,维护缓存一致性的目录能耗必然很大,因此,选择合适的共享二级缓存和一致性目录能耗模拟器对于评估众核系统的能耗有重要影响,在AM3P实现共享缓存和一致性目录能耗评测时,使用稳定的、可以模拟众核系统的模拟器CACTI。
机器学习模块
所述机器学习模块负责搜索所述抽象负载模块抽象出来的负载模型来找到最优的极限能耗测试源程序,本实施林实现该模块时使用遗传算法GA(Genetic Algorithm),遗传算法是一种通过模拟自然进化过程搜索最优解的方法,在利用遗传算法时,问题的解被当作生物的染色体,这些染色体经过遗传、变异、重组形成新的染色体,遗传空间里的人口被定义为一组染色体,在AM3P里,一个合成程序的一组抽象模型参数被定义为一个染色体,算法首先初始化若干组模型参数产生第一代个体,然后评估第一代个体的适应性(即系统的极限能耗),接着根据个体的适应性进行一些遗传学操作,比如:变异、交叉、复制来产生下一代个体,然后再对下一代个体的适应性进行评估直至整个群体达到一个稳定的最优解。本实施例选择遗传算法主要借鉴经验法则,遗传算法比其他算法如随机搜索算法、暴力方法更有效。通过实验发现,遗传算法在搜索最优极限能耗测试源程序时非常有效。因为结果较优的一些程序的特征被遗传下来,经过相互交叉或变异可以获得更优的程序。
以上对AM3P的具体结构做了较为详细的描述,为使使用者对本实施例有一个更为全面的了解,下面对AM3P的工作流程做一个简要说明:
基于众核的多线程极限程序自动生成框架生成合成极限能耗测试源程序的工作流程如图2所示。
首先AM3P的机器学习模块接收用户输入的负载模型参数,其实现的遗传算法GA工具集根据用户输入的参数随机地初始化第一代多线程合成程序个体的程序特征(抽象负载模型的对象);然后代码生成器根据这些负载模型的参数,利用上面提到的合成代码生成的算法生成第一代多线程合成程序,这些多线程合成程序是包含有汇编代码的C程序,其包含的汇编代码都是根据负载模型的参数生成;随后编译器对所述C程序直接进行汇编,产生第一代程序的汇编代码;然后把产生的汇编代码交由ASM后期处理器进行处理,去除不必要的指令;接着把处理过的汇编代码送至汇编器,生成针对某种众核系统配置的二进制可执行程序;当第一代多线程合成程序可执行程序(即前面所属的二进制可执行程序)生成后,即可对这些程序进行极限能耗评估;接下来将第一代合成的可执行程序送至全系统模拟器SIMICS进行能耗评估,分别由wattch、DRAMsim、Orion和CACTI模拟器对处理器、内存DRAM、内部互连方式以及二级缓存和一致性目录的能耗进行模拟,计算出整个众核系统的极限能耗;然后将第一代多线程合成程序反馈给机器学习模块,若负载模型已经达到一个稳定的状态,则输出最优的多线程极限能耗测试源程序,否则,由遗传算法GA工具集根据每个个体的适应性(即系统的极限能耗)进行遗传操作,按照一定的比例选择极限能耗较优的一些个体,再将一些个体的负载模型的参数进行变异、交叉,以形成下一代多线程合成程序个体;最后再将这些负载模型对象集合送至代码生成器模块,生成新一代多线程合成程序,并对个体进行迭代,直至负载模型达到一个稳定的状态。
与现有技术相比,本实施例所提供的基于众核的多线程极限能耗测试源程序自动生成框架具有以下优势:与体系结构无关:其抽象负载模块抽象出来的负载模型都是与微体系结构无关的程序特征,所以生成的程序可以适用于多种体系结构。简易性:由于本实施例实现了多线程代码生成器,其能基于抽象负载模型参数,利用代码生成算法自动生成多线程极限能耗测试源程序;代码生成过程操作简单,避免手工编写程序的繁琐,而且不需要专业的体系结构方面的知识。快速最优:本实施例采用机器学习的方法,机器学习模块实现的遗传算法经过多次迭代后可以很快地达到一个稳定的状态,找出最优的极限能耗测试源程序。遗传算法一般经过几十次或是近百次迭代即可找到最优解。因此相比其他技术耗时较短,而且还可以保证找到的极限能耗程序近乎最优。准确性:在众核系统中,各部件之间互连方式和共享缓存一致性较多核系统都更为复杂,另外,由于线程并行度和数据并行度的增大,在一组同构的线程中可能会出现分支分歧,这会降低众核系统的能耗。本实施例提出的方案充分考虑众核系统的特性,同时模拟处理器、内存、内部互连、共享二级缓存以及一致性目录等部件的能耗,因此本实施例提出的方案获得极限能耗要比其他技术获得的要更加准确,更加接近真实的极限能耗。
以上所述实施例仅表达了本发明的一种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种基于众核的多线程极限能耗测试源程序自动生成框架,其特征在于,包括:
抽象负载模块、代码生成器模块、编译汇编器模块、全系统模拟器模块和机器学习模块;所述抽象负载模块抽象出负载模型,接收用户输入的模型参数;所述机器学习模块对用户输入的模型参数进行处理产生多组候选的负载模型对象;所述代码生成器模块根据负载模型对象的参数合成多个嵌入了汇编代码的C程序,作为候选极限能耗测试源程序;所述编译汇编器模块对所述候选极限能耗测试源程序进行编译产生多个可执行的合成程序;所述全系统模拟器模块对所述多个可执行的合成程序的极限能耗进行评测,并将评测结果反馈至所述机器学习模块;所述机器学习模块进一步根据反馈的评测结果进行迭代操作。
2.根据权利要求1所述的基于众核的多线程极限能耗测试源程序自动生成框架,其特征在于,所述抽象负载模块通过负载模型的分支分歧率参数来控制众核系统中程序的分支分歧情况。
3.根据权利要求1所述的基于众核的多线程极限能耗测试源程序自动生成框架,其特征在于,所述抽象负载模块采用分支转换率来刻画分支跳转的频率。
4.根据权利要求1所述的基于众核的多线程极限能耗测试源程序自动生成框架,其特征在于,所述机器学习模块采用遗传算法进行迭代操作。
5.根据权利要求1所述的基于众核的多线程极限能耗测试源程序自动生成框架,其特征在于,所述代码生成器模块包括主函数,所述主函数用于:声明和分配共享数据空间,产生一组指向整型或是浮点型数组的指针供每个线程使用;初始化线程数量和同步障;调用线程子函数创建一定数量的线程。
6.根据权利要求1所述的基于众核的多线程极限能耗测试源程序自动生成框架,其特征在于,所述代码生成器模块还包括线程子函数,所述线程子函数用于:声明和分配私有数据空间;为本线程分配处理器ID号;同步各个线程;根据抽象模型参数生成外循环和两个内循环的循环体。
7.根据权利要求1所述的基于众核的多线程极限能耗测试源程序自动生成框架,其特征在于,所述代码生成器模块合成多个嵌入了汇编代码的C程序时使用的算法为:
基于模型中的平均共享访存率、混合指令中的内存操作比例、工作集大小,生成分配私有数据空间的代码;
基于分配的处理器ID号,接下来生成调用同步障函数代码;
基于根据动态指令数生成外循环的代码,并根据基本块大小和基本块数确定分支;
基于基本块数和大小,生成第一个内循环的程序骨架;
对于第一个内循环的每个基本块,根据指令混合比例配置每条指令的指令类型,如果加载指令和存储指令参数为真的话,就会对指令进行冒泡排序把存储指令放在加载指令之后,并且设置相同的指令操作数地址;
基于平均分支可预测性,确定分支组和取模操作的次数。然后根据取模操作进行分支预测。确定分支预测的同时根据配置的平均分支分歧率参数,减少同一类型线程中出现的分支分歧;
使用平均的指令依赖距离为每条指令的操作数分配一条生产者指令,实现对指令级并行的配置。同时根据内存级并行信息,分配加载-加载依赖;
基于共享访存率,将内存操作分为共享数据访存和私有数据访存,然后根据相应内存操作的跨步,直接计算指令操作数的地址;
以罗宾环的方式分配目的寄存器和源寄存器,根据相应的依赖距离,将一条指令操作数的源寄存器作为生产者指令的目的寄存器;
基于工作集大小确定内循环的循环次数,产生循环终止的比较指令;
生成第二个内循环,如果内存级并行频率参数设置较大时,直接拷贝第一个内循环,反之,则除去第一个内循环里的内存操作然后拷贝成为第二个循环。
8.根据权利要求1所述的基于众核的多线程极限能耗测试源程序自动生成框架,其特征在于,所述全系统模拟器模块在内部互联方式模拟器上选择开源的网络互联模拟器Booksim。
9.根据权利要求1所述的基于众核的多线程极限能耗测试源程序自动生成框架,其特征在于,所述全系统模拟器模块在共享二级缓存和一致性目录能耗模拟器上选择模拟器CACTI。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012105894270A CN103049384A (zh) | 2012-12-29 | 2012-12-29 | 一种基于众核的多线程极限能耗测试源程序自动生成框架 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012105894270A CN103049384A (zh) | 2012-12-29 | 2012-12-29 | 一种基于众核的多线程极限能耗测试源程序自动生成框架 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103049384A true CN103049384A (zh) | 2013-04-17 |
Family
ID=48062031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012105894270A Pending CN103049384A (zh) | 2012-12-29 | 2012-12-29 | 一种基于众核的多线程极限能耗测试源程序自动生成框架 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103049384A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015027403A1 (en) * | 2013-08-28 | 2015-03-05 | Hewlett-Packard Development Company, L.P. | Testing multi-threaded applications |
CN105242909A (zh) * | 2015-11-24 | 2016-01-13 | 无锡江南计算技术研究所 | 一种基于多版本代码生成的众核循环分块方法 |
CN105404575A (zh) * | 2015-10-27 | 2016-03-16 | 国网智能电网研究院 | 一种移动终端应用能耗度量方法和装置 |
CN105677521A (zh) * | 2015-12-29 | 2016-06-15 | 东南大学—无锡集成电路技术研究所 | 一种面向移动智能终端处理器的基准测试程序合成方法 |
CN105786512A (zh) * | 2016-02-29 | 2016-07-20 | 浪潮(苏州)金融技术服务有限公司 | 一种程序生成的方法和维度管理器 |
CN107851066A (zh) * | 2015-07-16 | 2018-03-27 | 高通股份有限公司 | 基于运行时硬件计数器和对应用的离线建立简档的自适应高速缓存架构 |
CN109344074A (zh) * | 2018-10-19 | 2019-02-15 | 中国银行股份有限公司 | 一种跨平台自动化测试方法及系统 |
CN109783222A (zh) * | 2017-11-15 | 2019-05-21 | 杭州华为数字技术有限公司 | 一种消除分支分歧的方法及设备 |
CN110376969A (zh) * | 2018-04-13 | 2019-10-25 | 发那科株式会社 | 调整装置以及调整方法 |
CN111782320A (zh) * | 2020-06-23 | 2020-10-16 | 上海赛昉科技有限公司 | 用于调试cache一致性C用例的GUI界面方法及电子设备 |
CN112445661A (zh) * | 2019-08-29 | 2021-03-05 | 无锡江南计算技术研究所 | 并行访存汇编程序自动生成系统和存储一致性测试方法 |
CN113297072A (zh) * | 2021-05-17 | 2021-08-24 | 阿里巴巴新加坡控股有限公司 | 容器测试方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1877545A (zh) * | 2006-07-04 | 2006-12-13 | 浙江大学 | 一种嵌入式系统模拟器中的动态软件能耗测试方法 |
US20100269121A1 (en) * | 2009-04-17 | 2010-10-21 | Accenture Global Services Gmbh | Exchangeable application components |
-
2012
- 2012-12-29 CN CN2012105894270A patent/CN103049384A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1877545A (zh) * | 2006-07-04 | 2006-12-13 | 浙江大学 | 一种嵌入式系统模拟器中的动态软件能耗测试方法 |
US20100269121A1 (en) * | 2009-04-17 | 2010-10-21 | Accenture Global Services Gmbh | Exchangeable application components |
Non-Patent Citations (3)
Title |
---|
HANGSHENG WANG等: "A Power-Performance Simulator for", 《IN PROCEEDINGS OF MICRO 35》 * |
JOSHI A M等: "Automated microprocessor stressmark generation", 《HIGH PERFORMANCE COMPUTER ARCHITECTURE》 * |
KARTHIK GANESAN AND LIZY K JOHN: "MAximum Multicore POwer (MAMPO) - An Automatic", 《PROCEEDINGS OF 2011 INTERNATIONAL CONFERENCE FOR HIGH PERFORMANCE COMPUTING,NETWORKING,STORAGEAND ANALYSIS》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015027403A1 (en) * | 2013-08-28 | 2015-03-05 | Hewlett-Packard Development Company, L.P. | Testing multi-threaded applications |
US10725889B2 (en) | 2013-08-28 | 2020-07-28 | Micro Focus Llc | Testing multi-threaded applications |
CN107851066A (zh) * | 2015-07-16 | 2018-03-27 | 高通股份有限公司 | 基于运行时硬件计数器和对应用的离线建立简档的自适应高速缓存架构 |
CN105404575A (zh) * | 2015-10-27 | 2016-03-16 | 国网智能电网研究院 | 一种移动终端应用能耗度量方法和装置 |
CN105242909A (zh) * | 2015-11-24 | 2016-01-13 | 无锡江南计算技术研究所 | 一种基于多版本代码生成的众核循环分块方法 |
CN105677521B (zh) * | 2015-12-29 | 2019-06-18 | 东南大学苏州研究院 | 一种面向移动智能终端处理器的基准测试程序合成方法 |
CN105677521A (zh) * | 2015-12-29 | 2016-06-15 | 东南大学—无锡集成电路技术研究所 | 一种面向移动智能终端处理器的基准测试程序合成方法 |
CN105786512A (zh) * | 2016-02-29 | 2016-07-20 | 浪潮(苏州)金融技术服务有限公司 | 一种程序生成的方法和维度管理器 |
CN109783222A (zh) * | 2017-11-15 | 2019-05-21 | 杭州华为数字技术有限公司 | 一种消除分支分歧的方法及设备 |
CN110376969A (zh) * | 2018-04-13 | 2019-10-25 | 发那科株式会社 | 调整装置以及调整方法 |
CN110376969B (zh) * | 2018-04-13 | 2021-04-20 | 发那科株式会社 | 调整装置以及调整方法 |
CN109344074A (zh) * | 2018-10-19 | 2019-02-15 | 中国银行股份有限公司 | 一种跨平台自动化测试方法及系统 |
CN112445661A (zh) * | 2019-08-29 | 2021-03-05 | 无锡江南计算技术研究所 | 并行访存汇编程序自动生成系统和存储一致性测试方法 |
CN112445661B (zh) * | 2019-08-29 | 2022-09-13 | 无锡江南计算技术研究所 | 并行访存汇编程序自动生成系统和存储一致性测试方法 |
CN111782320A (zh) * | 2020-06-23 | 2020-10-16 | 上海赛昉科技有限公司 | 用于调试cache一致性C用例的GUI界面方法及电子设备 |
CN113297072A (zh) * | 2021-05-17 | 2021-08-24 | 阿里巴巴新加坡控股有限公司 | 容器测试方法及装置 |
CN113297072B (zh) * | 2021-05-17 | 2023-11-03 | 阿里巴巴新加坡控股有限公司 | 容器测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103049384A (zh) | 一种基于众核的多线程极限能耗测试源程序自动生成框架 | |
CN102902512B (zh) | 一种基于多线程编程及消息队列的多线程并行处理方法 | |
Yang et al. | Adaptive optimization for petascale heterogeneous CPU/GPU computing | |
Shen et al. | Performance gaps between OpenMP and OpenCL for multi-core CPUs | |
Li et al. | A simple yet effective balanced edge partition model for parallel computing | |
Wang et al. | Performance optimizations for scalable CFD applications on hybrid CPU+ MIC heterogeneous computing system with millions of cores | |
Zuckerman et al. | Cohmeleon: Learning-based orchestration of accelerator coherence in heterogeneous SoCs | |
Banerjee et al. | A highly configurable hardware/Software stack for DNN inference acceleration | |
Jahr et al. | Automatic multi-objective optimization of parameters for hardware and code optimizations | |
Jahr et al. | Finding near‐perfect parameters for hardware and code optimizations with automatic multi‐objective design space explorations | |
Yoshida et al. | Analyzing the impact of CUDA versions on GPU applications | |
Halbiniak et al. | Exploration of OpenCL heterogeneous programming for porting solidification modeling to CPU‐GPU platforms | |
Pedemonte et al. | A systolic genetic search for reducing the execution cost of regression testing | |
Reguly et al. | Benchmarking the IBM Power8 processor. | |
Wu et al. | MIC acceleration of short-range molecular dynamics simulations | |
Lundvall et al. | Automatic parallelization of simulation code for equation-based models with software pipelining and measurements on three platforms | |
Halver et al. | Using heterogeneous GPU nodes with a Cabana-based implementation of MPCD | |
Anuradha et al. | Efficient workload characterization technique for heterogeneous processors | |
US7689958B1 (en) | Partitioning for a massively parallel simulation system | |
CN102981805B (zh) | 串行软件的响应方法和系统 | |
Marin | Gpu-enhanced power flow analysis | |
Subhlok | Automatic mapping of task and data parallel programs for efficient execution on multicomputers | |
Faber et al. | Efficient parallel execution of genetic algorithms on Epiphany manycore processor | |
Lübeck et al. | Automatic generation of fast and accurate performance models for deep neural network accelerators | |
Mudalige et al. | Predictive modeling and analysis of OP2 on distributed memory GPU clusters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130417 |