优化计算图的布局格式的方法、系统、设备和介质与流程

未命名 08-26 阅读:107 评论:0


1.本技术涉及人工智能领域,且更具体地涉及优化计算图的布局格式的方法、系统、电子设备和非暂时存储介质。


背景技术:

2.人工智能学习任务的核心是模型的定义和模型的参数求解方式,这两者可以抽象为一个唯一的计算逻辑,即计算图。计算图中的节点代表算子(operator或op)。算子对应的是计算逻辑,例如,卷积层(convolution layer)是一个算子;全连接层(fully-connected layer,fc layer)中的权值求和过程是一个算子,而tanh、relu等是用做激活函数的算子。而每个节点之间连接线代表着节点之间的流动关系。在创建计算图的过程中,需要对计算图进行一系列处理,包括设备放置(device placement),图优化、图分区等。而图优化贯穿计算图处理过程的不同阶段,是最重要的节省计算资源的步骤之一。


技术实现要素:

3.根据本技术的一个方面,提供一种优化计算图的布局格式的方法,包括:基于计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数;通过比较得到所述多个总成本函数中最少的总成本函数从而确定以多个布局格式中与所述最少的总成本函数对应的布局格式来优化计算图。
4.根据本技术的另一个方面,提供一种优化计算图的布局格式的系统,包括:计算装置,被配置为基于计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数;确定装置,被配置为通过比较得到所述多个总成本函数中最少的总成本函数从而确定以多个布局格式中与所述最少的总成本函数对应的布局格式来优化计算图。
5.根据本技术的另一个方面,提供一种电子设备,包括:存储器,用于存储指令;处理器,用于读取所述存储器中的指令,并执行根据本技术的实施例的方法。
6.根据本技术的另一个方面,提供一种非暂时存储介质,其上存储有指令,其中,所述指令在被处理器读取时,使得所述处理器执行根据本技术的实施例的方法。
7.如此,通过考虑计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数,能够更准确地考虑到由于各个算子期望被执行的次数而带来的各个算子实际带来的性能影响,从而确定更优化的那个布局格式,来以那个布局格式来优化计算图。
附图说明
8.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
9.图1a示出了a、b算子间有布局的约束冲突的带有分支的计算图的示意图。
10.图1b和1c分别示出了通过插入对应的reorderop算子解决布局约束冲突的2个可选方案的示意图。
11.图2示出了张量流程软件的简档信息的示意图。
12.图3示出了计算图中分支算子和其分支的具体例子。
13.图4示出了带有循环的计算图的示意图。
14.图5a示出了在如图4所示的带有循环的计算图中r算子将布局格式l0转换为布局格式l1的方案1的示意图。
15.图5b示出了在如图4所示的带有循环的计算图中r算子将布局格式l0转换为布局格式l2的方案2的示意图。
16.图6示出了根据本技术的实施例的一种优化计算图的布局格式的方法的流程图。
17.图7示出了根据本技术的实施例的一种优化计算图的布局格式的系统的方框图。
18.图8示出了适于用来实现本技术的实施例的示例性电子设备的框图。
19.图9示出了根据本技术的实施例的非暂时性计算机可读存储介质的示意图。
具体实施方式
20.现在将详细参照本技术的具体实施例,在附图中例示了本技术的例子。尽管将结合具体实施例描述本技术,但将理解,不是想要将本技术限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本技术的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
21.为了让算子在特定芯片上发挥最佳的性能,可以给特定的算子,设计特定的数据布局/格式(layout/format)。算子以相应的数据布局格式执行,会获得更好的性能。算子支持的数据布局/格式(以下统称布局格式)有时可以有多种。例如,数据布局格式的类型包括colmajor(列主序)、rowmajor(行主序)、buffer(缓冲器)等,数据格式包括nchw、nhwc、hwio、oihw,其中n表示批大小,即一次选取几个元素;c表示特征图的数量,又称之为通道数;h表示高度,w表示宽度,i表示输入通道,o表示输出通道。
22.在可选择两种或更多种数据布局格式的情况下,如何优化计算图来得到性能更优的解,现有技术是通过直接计算两种可选择数据布局格式下,各个算子的性能参数的总和(例如用成本函数来表示)来确定选择哪种数据布局格式来优化计算图。
23.但这种确定方式不够准确,没有考虑到各个算子期望被执行的次数信息,因此不能准确地考虑到由于各个算子期望被执行的次数而带来的各个算子实际带来的性能影响。
24.图6示出了根据本技术的实施例的一种优化计算图的布局格式的方法600的流程图。
25.如图6所示,一种优化计算图的布局格式的方法600包括:步骤610,基于计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数;步骤620,通过比较得到多个总成本函数中最少的总成本函数从而确定以多个布局格式中与所述最少的总成本函数对应的布局格式来优化计算图。
26.如此,通过考虑计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数,能够更准确地考虑到由于各个算子期望被执行的次数而带来的各个算子实际带来的性能影响,从而确定更优化的那个布局格式,来以那个布局格式来优化计算图。
27.步骤610,基于计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数。
28.在一个实施例中,计算图中的算子被期望执行的次数信息包括在条件分支的情况下算子被分支执行的概率或在循环迭代的情况下算子被循环迭代的次数。
29.可以在采样阶段得到计算图中的算子被期望执行的次数信息。采样例如如下2个方面信息:
30.l条件分支概率:计算图中,条件判断的不同分支算子被执行的概率。
31.l循环迭代次数:计算图中,算子被循环的迭代次数统计。
32.基于这2方面信息,更好指导布局优化过程(pass),选择最佳的优化方案。
33.在一个实施例中,计算图中的算子被期望执行的次数信息基于计算图的简档信息(profile)来计算,其中,算子被分支执行的概率等于该算子被分支执行的次数除以条件分支算子被执行的次数,算子被循环迭代的次数等于负责执行下一个迭代的算子被执行的次数加1后除以负责开始进入循环的算子被执行的次数。
34.在一个实施例中,基于计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数包括:通过多个布局格式中的每个布局格式下的计算图中的算子的成本函数分别乘以计算图中的算子被期望执行的次数信息加上其他各个算子的成本函数。
35.在一个实施例中,成本函数包括耗时。
36.步骤620,通过比较得到多个总成本函数中最少的总成本函数从而确定以多个布局格式中与所述最少的总成本函数对应的布局格式来优化计算图。
37.接下来,通过在条件分支的情况和在循环迭代的情况的两种情况来分别详细描述根据本技术的各个实施例以及其对现有技术的改进效果。
38.图1a示出了a、b算子间有布局的约束冲突的带有分支的计算图的示意图。
39.如图1a所示,a、b算子间有布局的约束冲突。一种张量流程软件的布局处理过程通过插入对应的reorderop算子(图1b和1c中的r算子),解决布局约束冲突。注意,张量流程软件是一种深度学习框架,可以训练和运行深度神经网络,因此可以对张量的计算图进行优化等处理。
40.图1b和1c分别示出了通过插入对应的reorderop算子解决布局约束冲突的2个可选方案的示意图。
41.如图1b和1c所示,有2种可选方案。图1b示出了用reorderop算子将布局格式l0转换为布局格式l1来解决布局冲突(方案1)。
42.其中,a算子的输入布局是l0,输出布局是l0,用reorderop算子将布局格式l0转换为布局格式l1,于是后续算子b、c、d的输入布局都是l1,输出布局都是l1,其中s算子是控制流算子,可以选择c算子通道,也可以选择d算子通道。
43.图1c示出了用reorderop算子将布局格式l0转换为布局格式l2来解决布局冲突
(方案2)。
44.其中,a算子的输入布局是l0,输出布局是l0,用reorderop算子将布局格式l0转换为布局格式l2,于是后续算子b、c、d的输入布局都是l2,输出布局都是l2,其中s算子是控制流算子,可以选择c算子通道,也可以选择d算子通道。
45.具体的布局约束表1如下:
[0046][0047]
表1
[0048]
算子s、m为控制流算子,其性能对布局不敏感。下面权衡性能时,可以不考虑这2个算子。假设不使用根据本技术的实施例的优化,选择方案1或方案2的耗时,可以通过opcost函数(算子成本函数)来衡量。
[0049]
opcost函数的第一个参数为对应算子,第二个参数为该算子计算所使用的布局方案。opcost函数的值是对应算子使用相应布局方案(指定输入布局和输出布局)而得到的耗时。
[0050]
结合图1b,方案1的总成本函数=opcost(a,{l0,l0})+opcost(r,{l0,l1})+opcost(b,{l1,l1})+opcost(c,{l1,l1})+opcost(d,{l1,l1})
[0051]
这表示总成本函数包括l0布局运算的a算子的成本函数+从l0布局转换为l1布局的r算子的成本函数+l1布局运算的b算子的成本函数+l1布局运算的c算子的成本函数+l1布局运算的d算子的成本函数。
[0052]
结合图1c,方案2的总成本函数=opcost(a,{l0,l0})+opcost(r,{l0,l2})+opcost(b,{l2,l2})+opcost(c,{l2,l2})+opcost(d,{l2,l2})
[0053]
这表示总成本函数包括l0布局运算的a算子的成本函数+从l0布局转换为l2布局的r算子的成本函数+l2布局运算的b算子的成本函数+l2布局运算的c算子的成本函数+l2布局运算的d算子的成本函数。
[0054]
为简化讨论,假设:算子r、b在方案1、方案2中性能一样。
[0055]
为方便描述,假设计算成本函数是计算耗时。
[0056]
假设,不考虑分支概率时,默认算子c、d被执行的概率一样,那么选择r算子转换为l1布局的方案1,算子c和算子d的总耗时为10ms+90ms=100ms,则选择r算子转换为l1布局的方案1,算子c和算子d的总耗时为20ms+30ms=50ms。
[0057]
假设,opcost(a,{l0,l0})=2ms,opcost(r,{l0,l1})和opcost(r,{l0,l2})相等
且=2ms,opcost(b,{l2,l2})=1ms。
[0058]
可见,方案1的总耗时=2+2+1+10+90=105ms。而方案2的总耗时=2+2+1+20+30=55ms。
[0059]
在这种情况下,会考虑选择方案2来优化计算图,因为总耗时55ms更少。
[0060]
但是这种优化方式没有考虑分支算子c和分支算子d的期望被执行的次数。
[0061]
下面介绍根据本技术的实施例通过采样条件分支概率,来指导过程选择更优的布局方案。
[0062]
考虑分支概率,参见图1b和1c,假设s算子分支为c算子的概率为90%,s算子分支为d算子的概率为10%。那么,计算总耗时的时候需要考虑乘以相应的概率,以得到c算子的耗时的期望值,以及d算子的耗时的期望值。
[0063]
也就是说,方案1的总耗时=2+2+1+0.9*10+0.1*90=23ms。而方案2的总耗时=2+2+1+0.9*20+0.1*30=26ms。
[0064]
于是,考虑了分支概率之后,发现方案1的总耗时更少。
[0065]
因此,考虑了分支概率之后,应该选择方案1来优化计算图,即要采用转换为l2布局格式来优化计算图,而不是转换为l1布局格式。
[0066]
可见,考虑分支概率可以更准确地估算两个方案的期望的总耗时,如此决定的优化策略比不考虑分支概率而做的优化策略更优。
[0067]
下面介绍根据本技术的实施例的如何计算分支概率。
[0068]
图2示出了张量流程软件的简档信息的示意图。
[0069]
如图2所示,张量流程软件的简档信息示出了各个输入运算及其按执行时间分类的统计信息。注意,张量流程软件的简档信息是通过简档器随附的工具跟踪张量流程软件模型的性能而得到的信息。
[0070]
简档信息中的每个条目了包含以下各个栏的信息:
[0071]
输入算子(input op):显示输入运算的一种张量流程软件的运算名称。图2所示的输入算子为interator::prefetch::generator。
[0072]
次数(count):显示性能剖析期间运算执行的实例总数。例如,图2所示的输入算子执行的实例总数为80。
[0073]
总时间(单位ms)(total time(in ms)):显示每个实例所用时间的累计和。例如,图2所示的输入算子每个实例所用时间的累计和为89,282ms。
[0074]
总时间(%)(total time%):显示在一个运算上花费的总时间占输入处理总时间的比例。例如,图2所示的输入算子在一个运算上花费的总时间占输入处理总时间的比例为43.3%。
[0075]
总自我时间(单位ms)(total self time(in ms))-显示其中每个实例所用的自我时间的累计和。此处的自我时间是指在函数体内部所用的时间,不包括它调用的函数所用的时间。例如,图2所示的输入算子的每个实例所用的自我时间的累计和为89,282ms。因为此处该输入算子未调用其他函数,因此其自我时间和所用时间是相同的。
[0076]
总自我时间(%)(total self time%)-显示在总自我时间占输入处理总时间的比例。例如,图2所示的输入算子在一个运算上花费的总自我时间占输入处理总时间的比例为43.3%。
[0077]
类别(category)-显示输入运算的处理类别。例如,图2所示的输入算子的处理类别是预处理(preprocessing)。
[0078]
因此,要计算各个算子的耗时,可以利用简档信息表格中的总时间(total time)参数。
[0079]
要计算某个算子的分支概率,可以利用简档信息表格中的次数(count)参数。
[0080]
例如,具体步骤如下:
[0081]
步骤1:找到计算图中所有的分支算子(conditionop):switchop,以及其真(true)分支的第一个算子truebranchop、假(false)分支的第一个算子falsebranchop,组成三元组:{conditionop,truebranchop,falsebranchop}。图3示出了计算图中分支算子和其分支的具体例子。如图3所示,真(true)分支的第一个算子为fusedbatchnormv3,假(false)分支的第一个算子为sub。即三元组为{switchop,fusedbatchnormv3,sub}。
[0082]
注意,在张量流程软件中,算子图中各算子有全局唯一的名字,三元组中使用这个唯一的名字。
[0083]
步骤2:根据简档信息统计三元组中的三个算子各自的执行次数:分支算子的执行次数conditionopcount、真分支的执行次数truebranchopcount、假分支的执行次数falsebranchopcount,并计算2个分支被执行的概率(称为2个分支概率)。
[0084]
其中,分支算子的执行次数conditionopcount、真分支的执行次数truebranchopcount、假分支的执行次数falsebranchopcount都可以通过算子的名称去图2所示的简档信息的count栏中找到。
[0085]
真分支概率truebranchprobability=truebranchopcount/conditionopcount
[0086]
假分支概率falsebranchprobability=falsebranchopcount/conditionopcount
[0087]
如此,计算出两个分支的各自的分支概率和各个算子的耗时,然后代入上述成本函数公式来求总耗时。
[0088]
图4示出了带有循环的计算图的示意图。
[0089]
如图4所示,张量流程软件的计算图中循环以enter算子开始进入循环,exit算子结束循环;nextiter算子负责执行下一个迭代循环。
[0090]
假设该计算图的约束表为:
[0091]
算子布局约束a输入布局:l0,输出布局:l0b1)输入布局:l1,输出布局:l1;2)输入布局:l2,输出布局:l2gt1)输入布局:l1,输出布局:l1;2)输入布局:l2,输出布局:l2add1)输入布局:l1,输出布局:l1;2)输入布局:l2,输出布局:l2
[0092]
如图4所示,算子a与其下游算子gt、add间有布局冲突;有2种可选方案。插入相应的reordrop(r算子)将布局转换为布局格式l1或l2。因此,2个方案差异在于reorderop解决冲突时,选择转换到布局格式l1(方案1),还是布局格式l2(方案2)。
[0093]
图5a示出了在如图4所示的带有循环的计算图中r算子将布局格式l0转换为布局格式l1的方案1的示意图。图5b示出了在如图4所示的带有循环的计算图中r算子将布局格式l0转换为布局格式l2的方案2的示意图。
[0094]
为简化讨论,假设:r算子在方案1、2中性能一样。
[0095]
因为a算子在方案1、2中没有差异。所以方案选择时,不用考虑a算子的耗时。
[0096]
假设,gt算子在方案1中从布局格式l1到布局格式l1的耗时是30ms,add算子在方案1中从布局格式l1到布局格式l1的耗时是30ms,b算子在方案1中从布局格式l1到布局格式l1的耗时是30ms。
[0097]
假设,gt算子在方案2中从布局格式l2到布局格式l2的耗时是10ms,add算子在方案2中从布局格式l2到布局格式l2的耗时是10ms,b算子在方案2中从布局格式l2到布局格式l2的耗时是90ms。
[0098]
可见,如果不考虑各个算子会被循环的迭代次数时,默认各个算子的迭代次数都为1,则选择方案1,因为总耗时30+30+30=90ms,小于方案2的总耗时10+10+90=110ms。
[0099]
但上述方案未考虑算子被期望执行的次数。
[0100]
下面介绍根据本技术的实施例通过考虑算子的循环迭代次数,来指导过程选择更优的布局方案。
[0101]
首先,在计算图中会被循环的是算子gt和算子add,考虑迭代次数时,若算子gt和算子add被循环的迭代次数itercount为10,可以计算方案1的总耗时=itercount*(opcost(gt,{l1,l1})+opcost(add,{l1,l1}))+opcost(b,{l1,l1})=10*(30+30)+30=630ms。
[0102]
可以计算方案2的总耗时=itercount*(opcost(gt,{l2,l2})+opcost(add,{l2,l2}))+opcost(b,{l2,l2})=10*(10+10)+90=290ms。
[0103]
可见应该选择方案2来优化计算图,因为其总耗时290ms,明显小于方案1的总耗时630ms,即要采用转换为l2布局格式来优化计算图,而不是转换为l1布局格式。
[0104]
可见,考虑循环迭代次数可以更准确地估算两个方案的期望的总耗时,如此决定的优化策略比不考虑循环迭代次数而做的优化策略更优。
[0105]
循环迭代次数的计算方式也可以通过图2所示的简档信息来计算。具体地,avgitercount=(nextitercount+1)/entercount。
[0106]
其中nextitercount表示nextiter算子的执行次数,可以从图2所示的nextiter算子的count栏中得到,entercount表示enter算子的执行次数,可以从图2所示的enter算子的count栏中得到。因为计算图中循环以enter算子开始,exit算子结束;nextiter算子负责执行下一个迭代,因此实际上对于每次enter算子,gt和add算子经过的次数是第一次+nextiter算子执行的次数,即nextitercount+1。而(nextitercount+1)/entercount可以表示对于每次enter算子,gt和add算子经过的次数。
[0107]
如此,计算出被循环的算子的循环迭代次数和各个算子的耗时,然后代入上述成本函数公式来求总耗时。
[0108]
如此,为了进行计算图优化,本技术提出简档引导的优化(profile-guided optimization,pgo)技术。该技术可以帮助在计算图的数据布局格式优化过程中获得性能更优的解。本技术提出的pgo技术在编译器(compiler)领域,平均可以提高程序5%~8%性能。
[0109]
注意,在本文中,成本函数opcost都被设计为计算耗时这种成本,但不限于此,根据实际要关注的成本,成本函数也可以被设计为计算其他成本,例如资源占用率、存储空间、计算量等等。
[0110]
上述算子的分支概率和循环迭代次数都是基于算子被期望执行的次数信息,但是
基于算子被期望执行的次数信息不限于此,还可以直接用执行次数或者执行概率或其他与次数相关的信息。
[0111]
如此,通过利用简档信息,结合网络、训练数据集的特征,执行对一种张量流程软件的计算图的布局优化,以提升性能。方案通用泛化,可适用于各种网络,即数据集合。
[0112]
图7示出了根据本技术的实施例的一种优化计算图的布局格式的系统700的方框图。
[0113]
如图7所示,一种优化计算图的布局格式的系统700包括:计算装置710,被配置为基于计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数;确定装置720,被配置为通过比较得到多个总成本函数中最少的总成本函数从而确定以多个布局格式中与所述最少的总成本函数对应的布局格式来优化计算图。
[0114]
如此,通过考虑计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数,能够更准确地考虑到由于各个算子期望被执行的次数而带来的各个算子实际带来的性能影响,从而确定更优化的那个布局格式,来以那个布局格式来优化计算图。
[0115]
在一个实施例中,计算图中的算子被期望执行的次数信息包括在条件分支的情况下算子被分支执行的概率或在循环迭代的情况下算子被循环迭代的次数。
[0116]
在一个实施例中,计算装置710被配置为:基于计算图的简档信息来计算计算图中的算子被期望执行的次数信息,其中,算子被分支执行的概率等于该算子被分支执行的次数除以条件分支算子被执行的次数,算子被循环迭代的次数等于负责执行下一个迭代的算子被执行的次数加1后除以负责开始进入循环的算子被执行的次数。
[0117]
在一个实施例中,计算装置710被配置为:通过多个布局格式中的每个布局格式下的计算图中的算子的成本函数分别乘以计算图中的算子被期望执行的次数信息加上其他各个算子的成本函数。
[0118]
在一个实施例中,成本函数包括耗时。
[0119]
如此,通过利用简档信息,结合网络、训练数据集的特征,执行对一种张量流程软件的计算图的布局优化,以提升性能。方案通用泛化,可适用于各种网络,即数据集合。
[0120]
图8示出了适于用来实现本技术的实施例的示例性电子设备的框图。
[0121]
电子设备可以包括处理器(h1);存储介质(h2),耦合于处理器(h1),且在其中存储计算机可执行指令,用于在由处理器执行时进行本技术的实施例的各个方法的步骤。
[0122]
处理器(h1)可以包括但不限于例如一个或者多个处理器或者或微处理器等。
[0123]
存储介质(h2)可以包括但不限于例如,随机存取存储器(ram)、只读存储器(rom)、快闪存储器、eprom存储器、eeprom存储器、寄存器、计算机存储介质(例如硬碟、软碟、固态硬盘、可移动碟、cd-rom、dvd-rom、蓝光盘等)。
[0124]
除此之外,该电子设备还可以包括(但不限于)数据总线(h3)、输入/输出(i/o)总线(h4),显示器(h5)以及输入/输出设备(h6)(例如,键盘、鼠标、扬声器等)等。
[0125]
处理器(h1)可以通过i/o总线(h4)经由有线或无线网络(未示出)与外部设备(h5、h6等)通信。
[0126]
存储介质(h2)还可以存储至少一个计算机可执行指令,用于在由处理器(h1)运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
[0127]
在一个实施例中,该至少一个计算机可执行指令也可以被编译为或组成一种软件产品,其中一个或多个计算机可执行指令被处理器运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
[0128]
图9示出了根据本技术的实施例的非暂时性计算机可读存储介质的示意图。
[0129]
如图9所示,计算机可读存储介质920上存储有指令,指令例如是计算机可读指令910。当计算机可读指令910由处理器运行时,可以执行参照以上描述的各个方法。计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。例如,计算机可读存储介质920可以连接于诸如计算机等的计算设备,接着,在计算设备运行计算机可读存储介质920上存储的计算机可读指令910的情况下,可以进行如上描述的各个方法。
[0130]
当然,上述的具体实施例仅是例子而非限制,且本领域技术人员可以根据本技术的构思从上述分开描述的各个实施例中合并和组合一些步骤和装置来实现本技术的效果,这种合并和组合而成的实施例也被包括在本技术中,在此不一一描述这种合并和组合。
[0131]
注意,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本技术的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本技术为必须采用上述具体的细节来实现。
[0132]
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
[0133]
本公开中的步骤流程图以及以上方法描述仅作为例示性的例子并且不意图要求或暗示必须按照给出的顺序进行各个实施例的步骤。如本领域技术人员将认识到的,可以按任意顺序进行以上实施例中的步骤的顺序。诸如“其后”、“然后”、“接下来”等等的词语不意图限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。此外,例如使用冠词“一个”、“一”或者“该”对于单数的要素的任何引用不被解释为将该要素限制为单数。
[0134]
另外,本文中的各个实施例中的步骤和装置并非仅限定于某个实施例中实行,事实上,可以根据本技术的概念来结合本文中的各个实施例中相关的部分步骤和部分装置以构思新的实施例,而这些新的实施例也包括在本技术的范围内。
[0135]
以上描述的方法的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路、专用集成电路(asic)或处理器。
[0136]
可以利用被设计用于进行在此描述的功能的通用处理器、数字信号处理器(dsp)、asic、场可编程门阵列信号(fpga)或其他可编程逻辑器件(pld)、离散门或晶体管逻辑、离散的硬件组件或者其任意组合而实现或进行描述的各个例示的逻辑块、模块和电路。通用处理器可以是微处理器,但是作为替换,该处理器可以是任何商业上可获得的处理器、控制
器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如dsp和微处理器的组合,多个微处理器、与dsp核协作的微处理器或任何其他这样的配置。
[0137]
结合本公开描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括随机存取存储器(ram)、只读存储器(rom)、快闪存储器、eprom存储器、eeprom存储器、寄存器、硬碟、可移动碟、cd-rom等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。
[0138]
在此公开的方法包括用于实现描述的方法的动作。方法和/或动作可以彼此互换而不脱离权利要求的范围。换句话说,除非指定了动作的具体顺序,否则可以修改具体动作的顺序和/或使用而不脱离权利要求的范围。
[0139]
上述功能可以按硬件、软件、固件或其任意组合而实现。如果以软件实现,功能可以作为指令存储在切实的计算机可读介质上。存储介质可以是可以由计算机访问的任何可用的切实介质。通过例子而不是限制,这样的计算机可读介质可以包括ram、rom、eeprom、cd-rom或其他光碟存储、磁碟存储或其他磁存储器件或者可以用于携带或存储指令或数据结构形式的期望的程序代码并且可以由计算机访问的任何其他切实介质。如在此使用的,碟(disk)和盘(disc)包括紧凑盘(cd)、激光盘、光盘、数字通用盘(dvd)、软碟和蓝光盘,其中碟通常磁地再现数据,而盘利用激光光学地再现数据。
[0140]
因此,本公开还可以包括计算机程序产品,其中计算机程序产品可以进行在此给出的方法、步骤和操作。例如,这样的计算机程序产品可以是计算机软件包、计算机代码指令、具有有形存储(和/或编码)在其上的计算机指令的计算机可读的有形介质,该指令可由处理器执行以进行在此描述的操作。计算机程序产品可以包括包装的材料。
[0141]
软件或指令也可以通过传输介质而传输。例如,可以使用诸如同轴电缆、光纤光缆、双绞线、数字订户线(dsl)或诸如红外、无线电或微波的无线技术的传输介质从网站、服务器或者其他远程源传输软件。
[0142]
此外,用于进行在此描述的方法和技术的模块和/或其他适当的手段可以在适当时由用户终端和/或基站下载和/或其他方式获得。例如,这样的设备可以耦接到服务器以促进用于进行在此描述的方法的手段的传送。或者,在此描述的各种方法可以经由存储部件(例如ram、rom、诸如cd或软碟等的物理存储介质)提供,以便用户终端和/或基站可以在耦接到该设备或者向该设备提供存储部件时获得各种方法。此外,可以利用用于将在此描述的方法和技术提供给设备的任何其他适当的技术。
[0143]
其他例子和实现方式在本公开和所附权利要求的范围和精神内。例如,由于软件的本质,以上描述的功能可以使用由处理器、硬件、固件、硬连线或这些的任意的组合执行的软件实现。实现功能的特征也可以物理地位于各个位置,包括被分发以便功能的部分在不同的物理位置处实现。而且,如在此使用的,包括在权利要求中使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“a、b或c的至少一个”的列举意味着a或b或c,或ab或ac或bc,或abc(即a和b和c)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
[0144]
可以不脱离由所附权利要求定义的教导的技术而进行对在此描述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上描述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此描述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
[0145]
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本技术。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本技术的范围。因此,本技术不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
[0146]
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本技术的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

技术特征:
1.一种优化计算图的布局格式的方法,包括:基于计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数;通过比较得到所述多个总成本函数中最少的总成本函数从而确定以多个布局格式中与所述最少的总成本函数对应的布局格式来优化计算图。2.根据权利要求1所述的方法,其中,所述计算图中的算子被期望执行的次数信息包括在条件分支的情况下所述算子被分支执行的概率或在循环迭代的情况下所述算子被循环迭代的次数。3.根据权利要求2所述的方法,其中,所述计算图中的算子被期望执行的次数信息基于计算图的简档信息来计算,其中,所述算子被分支执行的概率等于该算子被分支执行的次数除以条件分支算子被执行的次数,所述算子被循环迭代的次数等于负责执行下一个迭代的算子被执行的次数加1后除以负责开始进入循环的算子被执行的次数。4.根据权利要求3所述的方法,其中,所述基于计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数包括:通过多个布局格式中的每个布局格式下的所述计算图中的算子的成本函数分别乘以所述计算图中的算子被期望执行的次数信息加上其他各个算子的成本函数。5.根据权利要求1或4所述的方法,其中,所述成本函数包括耗时。6.一种优化计算图的布局格式的系统,包括:计算装置,被配置为基于计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数;确定装置,被配置为通过比较得到所述多个总成本函数中最少的总成本函数从而确定以多个布局格式中与所述最少的总成本函数对应的布局格式来优化计算图。7.根据权利要求6所述的系统,其中,所述计算图中的算子被期望执行的次数信息包括在条件分支的情况下所述算子被分支执行的概率或在循环迭代的情况下所述算子被循环迭代的次数。8.根据权利要求7所述的系统,其中,所述计算装置被配置为基于计算图的简档信息来计算所述计算图中的算子被期望执行的次数信息,其中,所述算子被分支执行的概率等于该算子被分支执行的次数除以条件分支算子被执行的次数,所述算子被循环迭代的次数等于负责执行下一个迭代的算子被执行的次数加1后除以负责开始进入循环的算子被执行的次数。9.根据权利要求8所述的系统,其中,所述计算装置被配置为:通过多个布局格式中的每个布局格式下的所述计算图中的算子的成本函数分别乘以所述计算图中的算子被期望执行的次数信息加上其他各个算子的成本函数。10.根据权利要求6或9所述的系统,其中,所述成本函数包括耗时。11.一种电子设备,包括:存储器,用于存储指令;处理器,用于读取所述存储器中的指令,并执行如权利要求1-5中任一项所述的方法。12.一种非暂时存储介质,其上存储有指令,其中,所述指令在被处理器读取时,使得所述处理器执行如权利要求1-5中任一项所述
的方法。

技术总结
提供一种优化计算图的布局格式的方法、系统、电子设备和非暂时存储介质,该方法包括:基于计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数;通过比较得到所述多个总成本函数中最少的总成本函数从而确定以多个布局格式中与所述最少的总成本函数对应的布局格式来优化计算图。如此,通过考虑计算图中的算子被期望执行的次数信息来计算多个布局格式下的各个算子的多个总成本函数,能够更准确地考虑到由于各个算子期望被执行的次数而带来的各个算子实际带来的性能影响,从而确定更优化的那个布局格式,来以那个布局格式来优化计算图。来以那个布局格式来优化计算图。来以那个布局格式来优化计算图。


技术研发人员:请求不公布姓名
受保护的技术使用者:上海壁仞智能科技有限公司
技术研发日:2023.06.14
技术公布日:2023/8/23
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐