System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及深度学习编译优化,尤其涉及一种跨平台张量程序性能预测方法。
技术介绍
1、深度学习已经在众多领域取得了前所未有的成功,但它巨大的计算量也给模型的落地带来了巨大的挑战。如何充分利用现有的计算资源,最大化提升模型的推理速度,提高模型在实际生产环境中的实时性,是当前深度学习发展的热点问题之一。
2、经验搜索(empirical search)方法被广泛应用于优化深度学习推理,典型的代表工作有基于模板的autotvm和不依赖模板的ansor等。这些方法通过一定策略产生很多等价的张量程序,然后对它们进行性能评估,最终挑选出性能最优的张量程序。
3、近年来,使用基于学习的方式预测张量程序性能越来越流行,这种方式虽然可以简化性能预测模型的开发,并实现较高的预测精度,但依赖目标硬件的大规模性能数据(数百万)。由于不同平台上的程序和硬件是绑定的,跨平台之间的性能测试不能交互使用,增加了张量程序性能预测的成本。
4、一些现有技术使用迁移学习的方法缓解这一问题,例如tenset、tlp、moss等,然而它们依旧需要相当多的性能数据(数万)。现有技术(名为“ppt-multicore:performanceprediction of openmp applications using reuse profiles and analyticalmodeling”的论文,作者为atanu barai等人)提出了一个名为ppt-multicore的框架,用于实现针对openmp并行程序的性能预测。这个框架并不
技术实现思路
1、基于
技术介绍
存在的技术问题,本专利技术提出了一种跨平台张量程序性能预测方法,规避了在目标平台上进行性能测量的巨大开销。
2、本专利技术提出的一种跨平台张量程序性能预测方法,基于在目标平台上复用张量程序中与硬件无关的程序特征,实现张量程序的快速性能预测,张量程序性能预测方法包括如下步骤:
3、步骤一、定义张量程序p的总体执行代价cost(p);
4、
5、其中,n是张量程序p中函数的数量,mi是第i个函数中的基本块数量,cost(bbij)和ecount(bbij)分别表示第i个函数中第j个基本块bbij的执行代价和有效执行次数;
6、步骤二、在源平台上未执行张量程序p时,直接从张量程序p的llvm ir中提取与硬件无关的静态程序特征,所述静态程序特征包括每个函数的控制流图cfg和每个基本块的任务图;
7、步骤三、在源平台上执行张量程序p时,提取与硬件无关的动态程序特征,所述动态程序特征包括每个基本块的有效执行计数和张量程序的重用配置文件,将每个基本块的有效执行计数添加到每个函数的控制流图cfg中,以完善每个函数的控制流图cfg;
8、步骤四、基于张量程序的重用配置文件和目标平台的缓存参数,计算得到访存指令代价,通过在目标平台执行目标硬件的微基准测试获取计算指令代价;
9、步骤五、将每个基本块的任务图、访存指令代价和计算指令代价输入到流水线模拟器中,为每个基本块预测执行代价,基于每个基本块预测执行代价以及完善后的每个函数的控制流图cfg得到在目标平台上张量程序p的预测执行代价。
10、进一步地,在步骤一中,基本块bbij的执行代价cost(bbij)定义如下:
11、cost(bbij)=pipeline(tg(bbij),cost(insts))
12、其中,tg(bbii)代表基本块bbij的任务图,用任务图的形式描述基本块中的指令和指令之间的数据依赖关系;cost(insts)代表在目标平台上各种指令的执行代价集合,pipeline表示流水线模拟器,根据输入的任务图和每种指令的执行代价计算给定基本块的执行代价。
13、进一步地,在步骤一中,基本块bbij的有效执行次数ecount(bbij)定义如下:
14、
15、其中,count(fi)表示函数fi的执行次数,count(bbij)表示每次执行函数fi时基本块bbij的执行次数,threads表示如果函数fi是并行执行时所使用的线程数,iffiparallel表示如果函数fi是并行执行,iffiserial表示如果函数fi是串行执行。
16、进一步地,在步骤二中,静态程序特征的生成过程如下:
17、对张量程序p的llvm ir进行控制流分析,获取每个函数的控制流图cfg;
18、对张量程序p的llvm ir进行数据依赖分析,获取每个基本块的任务图。
19、进一步地,在对张量程序p的llvm ir进行控制流分析,获取每个函数的控制流图cfg中,具体包括:
20、遍历张量程序p的llvm ir中的每个函数;
21、对于每一个函数,遍历其中的每一个基本块,以图的形式记录当前基本块与前驱基本块、后继基本块的关系,得到每个函数的控制流图cfg。
22、进一步地,在对张量程序p的llvm ir进行数据依赖分析,获取每个基本块的任务图中,具体包括:
23、遍历每个基本块中的每条指令,对于每一条指令,获取其输出变量;
24、检查当前指令的所有后续指令,如果输出变量是后续指令的操作数,则将后续指令添加到当前指令的child列表中;
25、重复上述遍历过程,完成遍历后以图的形式记录每条指令和各自child列表中各条指令之间的关系,得到每个基本块的任务图。
26、进一步地,在步骤三中,动态程序特征的生成过程如下:
27、基于重用跟踪器对张量程序p执行时跟踪,得到张量程序的重用配置文件;
28、通过计数仪器插桩的方式在张量程序p运行时获取每个基本块的有效执行计数。
29、进一步地,在步骤四中,访存指令代价的生成如下:将张量程序的重用配置文件和目标平台的缓存参数输入到内存分析单元,计算得到访存指令代价。
30、进一步地,在步骤五中,每个基本块预测执行代价以及目标平台上张量程序p的预测执行代价的生成如下:
31、根据每个基本块的任务图、访存指令代价和计算指令代价,使用流水线模拟器为每个基本块预测执行代价;
32、根据每个基本块预测执行代价、通过每个基本块的有效执行计数标注的控制流图cfg以及目标平台的可用线程数,得到在张量程序p的预测执行代价。
33、本专利技术提供的一种跨平台张量程序性能预测方法的优点在于:核心是解耦程序特征与硬件特征,并在多个平台上复用硬件无关的程序特征,实现快速张量程序性能预测。基于给定的目标平台参数化硬件特征,通过结合预先收集的硬件无关的张量程序特征为目标平台预测张量程序性能,规避了在目标平台上进行性能测量的巨大开销。
本文档来自技高网...【技术保护点】
1.一种跨平台张量程序性能预测方法,其特征在于,基于在目标平台上复用张量程序中与硬件无关的程序特征,实现张量程序的快速性能预测,张量程序性能预测方法包括如下步骤:
2.根据权利要求1所述的跨平台张量程序性能预测方法,其特征在于,在步骤一中,基本块BBij的执行代价Cost(BBij)定义如下:
3.根据权利要求1所述的跨平台张量程序性能预测方法,其特征在于,在步骤一中,基本块BBij的有效执行次数ECount(BBij)定义如下:
4.根据权利要求1所述的跨平台张量程序性能预测方法,其特征在于,在步骤二中,静态程序特征的生成过程如下:
5.根据权利要求4所述的跨平台张量程序性能预测方法,其特征在于,在对张量程序P的LLVM IR进行控制流分析,获取每个函数的控制流图CFG中,具体包括:
6.根据权利要求4所述的跨平台张量程序性能预测方法,其特征在于,在对张量程序P的LLVM IR进行数据依赖分析,获取每个基本块的任务图中,具体包括:
7.根据权利要求1所述的跨平台张量程序性能预测方法,其特征在于,在步骤三中,
8.根据权利要求1所述的跨平台张量程序性能预测方法,其特征在于,在步骤四中,访存指令代价的生成如下:将张量程序的重用配置文件和目标平台的缓存参数输入到内存分析单元,计算得到访存指令代价。
9.根据权利要求1所述的跨平台张量程序性能预测方法,其特征在于,在步骤五中,每个基本块预测执行代价以及目标平台上张量程序P的预测执行代价的生成如下:
...【技术特征摘要】
1.一种跨平台张量程序性能预测方法,其特征在于,基于在目标平台上复用张量程序中与硬件无关的程序特征,实现张量程序的快速性能预测,张量程序性能预测方法包括如下步骤:
2.根据权利要求1所述的跨平台张量程序性能预测方法,其特征在于,在步骤一中,基本块bbij的执行代价cost(bbij)定义如下:
3.根据权利要求1所述的跨平台张量程序性能预测方法,其特征在于,在步骤一中,基本块bbij的有效执行次数ecount(bbij)定义如下:
4.根据权利要求1所述的跨平台张量程序性能预测方法,其特征在于,在步骤二中,静态程序特征的生成过程如下:
5.根据权利要求4所述的跨平台张量程序性能预测方法,其特征在于,在对张量程序p的llvm ir进行控制...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。