CN116150563B - 一种业务执行方法、装置、存储介质及电子设备 - Google Patents
一种业务执行方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN116150563B CN116150563B CN202310199501.6A CN202310199501A CN116150563B CN 116150563 B CN116150563 B CN 116150563B CN 202310199501 A CN202310199501 A CN 202310199501A CN 116150563 B CN116150563 B CN 116150563B
- Authority
- CN
- China
- Prior art keywords
- matrix
- layer
- target
- calculation mode
- determining
- 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
- 238000000034 method Methods 0.000 title claims abstract description 79
- 239000011159 matrix material Substances 0.000 claims abstract description 377
- 238000004364 calculation method Methods 0.000 claims abstract description 171
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 40
- 230000004044 response Effects 0.000 claims abstract description 7
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012216 screening Methods 0.000 claims description 3
- 239000010410 layer Substances 0.000 description 283
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 19
- 238000003062 neural network model Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 230000006872 improvement Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本说明书提供了一种业务执行方法、装置、存储介质及电子设备。在本说明书提供的业务执行方法中,响应于业务的执行请求,获取用于执行业务的目标模型,并确定目标模型中的目标网络层;根据目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定目标网络层的候选计算方式,其中,不同候选计算方式对应的执行矩阵乘法运算时的循环次序不同;针对每个候选计算方式,根据特征矩阵的大小,确定目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率;根据各总缓存复用率,在各候选计算方式中确定目标计算方式;将目标计算方式更新为目标网络层的计算方式,并采用更新后的目标模型执行业务。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及一种业务执行方法、装置、存储介质及电子设备。
背景技术
如今,神经网络模型被应用于各种业务的执行过程中。在神经网络模型的各网络层中,存在着大量的卷积计算过程。通常情况下,神经网络模型中的卷积运算是通过矩阵乘法的方式来实现的。
然而目前,对于许多神经网络模型来说,在实现矩阵乘法的计算时速度较慢,导致神经网络模型的整体运行效率较低,进而使业务的执行过程变得缓慢,给执行业务的用户带去较差的体验。
为解决上述问题,本说明书提供一种能够提高执行业务所需要的神经网络模型中卷积运算速度的业务执行方法。
发明内容
本说明书提供一种业务执行方法、装置、存储介质及电子设备,以至少部分地解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种业务执行方法,包括:
响应于业务的执行请求,获取用于执行所述业务的目标模型,并确定所述目标模型中的目标网络层;
根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层的候选计算方式,其中,不同候选计算方式对应的执行矩阵乘法运算时的循环次序不同;
针对每个候选计算方式,根据所述特征矩阵的大小,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率;
根据各总缓存复用率,在各候选计算方式中确定目标计算方式;
将所述目标计算方式更新为所述目标网络层的计算方式,并采用更新后的目标模型执行所述业务。
可选的,根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层的候选计算方式,具体包括:
根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层在执行矩阵乘法时的循环层数;
根据所述循环层数,确定所述目标网络层的候选计算方式。
可选的,针对每个候选计算方式,根据所述特征矩阵的大小,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率,具体包括:
针对每个候选计算方式,确定所述目标网络层在该候选计算方式下执行矩阵乘法时的循环次序;
根据所述循环次序以及所述特征矩阵的大小,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率。
可选的,根据所述循环次序以及所述特征矩阵的大小,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率,具体包括:
根据所述循环次序以及所述特征矩阵的大小,确定所述特征矩阵在每层循环下的缓存复用率;
根据所述特征矩阵在每层循环下的缓存复用率,确定所述特征矩阵的总缓存复用率,作为所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率。
可选的,根据所述循环次序以及所述特征矩阵的大小,确定所述特征矩阵在每层循环下的缓存复用率,具体包括:
根据所述循环次序,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,各层循环所在的位置;
针对每层循环,根据所述特征矩阵的大小以及该层循环所在的位置,确定所述特征矩阵在该层循环下的缓存复用率。
可选的,所述位置包括最内层、最外层、以及至少一层中间层。
可选的,所述特征矩阵至少包括:第一矩阵、第二矩阵、目标矩阵,所述目标矩阵为所述第一矩阵与所述第二矩阵通过矩阵乘法得到的矩阵;
确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率,具体包括:
确定所述第一矩阵、第二矩阵、目标矩阵在该候选计算方式下的总缓存复用率;
根据所述第一矩阵、第二矩阵、目标矩阵的总缓存复用率,确定该候选计算方式的总缓存复用率。
可选的,根据各总缓存复用率,在各候选计算方式中确定目标计算方式,具体包括:
在各候选计算方式中,选择总缓存复用率最高的候选计算方式,作为目标计算方式。
本说明书提供的一种业务执行的装置,所述装置包括:
响应模块,用于响应于业务的执行请求,获取用于执行所述业务的目标模型,并确定所述目标模型中的目标网络层;
计算方式确定模块,用于根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层的候选计算方式,其中,不同候选计算方式对应的执行矩阵乘法运算时的循环次序不同;
复用率模块,用于针对每个候选计算方式,根据所述特征矩阵的大小,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率;
筛选模块,用于根据各总缓存复用率,在各候选计算方式中确定目标计算方式;
更新模块,用于将所述目标计算方式更新为所述目标网络层的计算方式,并采用更新后的目标模型执行所述业务。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述业务执行方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述业务执行方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本说明书提供的业务执行方法中,响应于业务的执行请求,获取用于执行业务的目标模型,并确定目标模型中的目标网络层;根据目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定目标网络层的候选计算方式,其中,不同候选计算方式对应的执行矩阵乘法运算时的循环次序不同;针对每个候选计算方式,根据特征矩阵的大小,确定目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率;根据各总缓存复用率,在各候选计算方式中确定目标计算方式;将目标计算方式更新为目标网络层的计算方式,并采用更新后的目标模型执行业务。
在采用本说明书提供的业务执行方法执行业务时,可自动寻找业务中采用的目标模型中的目标网络层在执行矩阵乘法时的最优计算方式,并采用最优计算方式替代目标网络层中原本的计算方式,使目标网络层在执行矩阵乘法运算时具有较高的缓存复用率,从而提高目标网络层执行矩阵乘法运算的速度,进而加快业务的执行效率,提升用户执行业务的体验。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中一种循环次序为i、j、k的二维矩阵运算对应的代码示意图;
图2为本说明书中一种业务执行方法的流程示意图;
图3a为本说明书中一种循环次序为i、j、k的二维矩阵运算对应的代码示意图;
图3b为本说明书中一种循环次序为i、k、j的二维矩阵运算对应的代码示意图;
图3c为本说明书中一种循环次序为j、i、k的二维矩阵运算对应的代码示意图;
图3d为本说明书中一种循环次序为k、i、j的二维矩阵运算对应的代码示意图;
图3e为本说明书中一种循环次序为k、j、i的二维矩阵运算对应的代码示意图;
图4a为本说明书提供的执行二维矩阵乘法运算时第一矩阵的示意图;
图4b为本说明书提供的执行二维矩阵乘法运算时第二矩阵的示意图;
图4c为本说明书提供的执行二维矩阵乘法运算时目标矩阵的示意图;
图5为本说明书提供的执行矩阵乘法运算时单层循环在不同情况下的缓存复用率的计算示意图;
图6为本说明书提供的一种业务执行装置的示意图;
图7为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
通常情况下,神经网络模型中的网络层会通过矩阵乘法的形式来实现卷积运算。可以想到的,对于神经网络模型来说,实现任何功能的实质均为运行相应的代码。同样的,实现矩阵乘法的过程也是如此。
以二维矩阵的乘法为例,假设神经网络模型的一个网络层中需要实现两个二维矩阵Ax,z与Bz,y之间的相乘,得到矩阵Cx,y。其中,Ax,z表示高为x,长为z的矩阵A,Bz,y表示高为z,长为y的矩阵B,Gx,y表示高为x,长为y的矩阵C。那么,在现有的神经网络模型的网络层对应的代码中,可以存在如图1所示的代码。
可以看出,在神经网络模型的网络层对应的代码中,二维矩阵相乘是通过三层循环实现的,其中,最外层循环为i,中间层循环为j,最内层循环为k。在最内层循环中,存在执行语句C[i][j]+=A[i][k]*B[k][j],其中C[i][j]表示矩阵C中第i行,第j列的元素,A[i][k]表示矩阵A中第i行,第k列元素,B[k][j]表示矩阵B中第k行,第j列元素。该执行语句的含义为,C[i][j]的增量等于A[i][k]与B[k][j]的乘积。换句话说,在i、j保持不变的情况下,C[i][j]的值等于遍历k所有可取值下的A[i][k]与B[k][j]的乘积之和。
实际上,上述代码的运行逻辑就是在正常情况下计算二维矩阵乘法时,常见的运算逻辑。通俗地举例,当i、j均为0时,C[0][0]也就是矩阵C的第一个元素,等于每个可取的k下的A[0][k]与B[k][0]的乘积之和,也就是矩阵A的第一行元素与矩阵B的第一列元素对位相乘后的累加。
目前,绝大多数神经网络模型均采用上述计算方式实现卷积运算中的矩阵乘法。而本领域技术人员应当明白,在矩阵乘法的计算规则下,只要最内层循环中的执行语句正确且不发生改变,上述i、j、k三层循环的次序实际上对计算结果不会产生任何影响。换句话说,无论i、j、k三层循环哪一个为最内层、哪一个为中间层、哪一个为最外层,对于同一运算,得到的最终结果都是相同的。
但可以想到的,虽然i、j、k的循环次序不会对运算结果产生影响,但确实改变了运算的中间过程。同时,由于高速缓冲存储器对矩阵数据的缓存规则固定为当从内存中重新读取或向内存中存储矩阵中的任一项元素时,高速缓冲存储器会缓存该项元素所在的一整行数据,这导致了在不同循环次序下,系统从缓存中读取的数据量都可能是不同的。
在调用的总数据量不变的情况下,不同的缓存读取量显然代表着不同的处理速度。由于处理器与缓存交互的速度远快于与内存交互的速度,因此从缓存中读取的数量越多,从内存中读取的数量越少,处理速度就越快。而目前大多数神经网络模型中的网络层在执行卷积运算时都只会采用同一种固定的循环次序来执行矩阵乘法,很多情况下并不能保证最少的内存读取量,这使得采用这部分神经网络模型来执行相应的业务时,业务处理速度较低、响应较慢,给用户的体验较差。
为解决上述问题,本说明书提供一种能够在神经网络模型的网络层中确定出最优的执行矩阵乘法的循环次序的业务执行方法。
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图2为本说明书中一种业务执行方法的流程示意图,具体包括以下步骤:
S100:响应于业务的执行请求,获取用于执行所述业务的目标模型,并确定所述目标模型中的目标网络层。
本说明书所提供的业务执行方法中的所有步骤均可由任何具有计算功能的电子设备实现,例如终端、服务器等设备。
在本说明书提供的业务执行方法中,响应的执行请求可以是针对任一业务的执行请求;目标模型可以是执行请求对应的业务在执行过程中使用到的模型;目标网络层可以是目标模型中任一包含卷积运算的网络层。
S102:根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层的候选计算方式,其中,不同候选计算方式对应的执行矩阵乘法运算时的循环次序不同。
在步骤S100中确定出的目标网络层中,可以存在用于矩阵乘法的特征矩阵。特征矩阵可以是目标网络层接收到的矩阵,也可以是目标网络成自身生成的矩阵,本说明书对此不做具体限制,只需确保特征矩阵用于目标网络层中的矩阵乘法运算中即可。
通常情况下,特征矩阵可至少包括第一矩阵、第二矩阵、目标矩阵。其中,第一矩阵和第二矩阵为矩阵乘法中的两个因数,目标矩阵为第一矩阵与第二矩阵相乘得到的积。值得一提的是,在一般的矩阵乘法中,作为因数相乘的两个矩阵的维度数量应相同。对应于本方法中,即为第一矩阵和第二矩阵应为同维矩阵,而第一矩阵与第二矩阵相乘得到的目标矩阵的维度数量也应与第一矩阵、第二矩阵的维度数量相同。
根据特征矩阵的维度,能够确定出目标网络层的各候选计算方式。具体的,可根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层在执行矩阵乘法时的循环层数;根据所述循环层数,确定所述目标网络层的候选计算方式。
根据多维矩阵乘法的计算规则可以得知,对于网络层中任意维度的矩阵相乘,在相对应的代码中实现时所需要的循环数量为维度数量+1。具体来说,对于传统的矩阵乘法来说,要求两个相乘的矩阵的最后两维满足二维矩阵乘法条件,其它维度的大小均需要相同。举例来说,以(a,b,……,c)的形式表示一个矩阵,其中,括号内元素的数量表示该矩阵的维度数量,每个元素值表示对应维度的大小,即该维度下向量的长度。那么假设存在一个五维矩阵(8,6,3,7,10),那么与该矩阵进行矩阵乘法的矩阵应为(8,6,3,n,7)或(8,6,3,10,m),分别对应于在前和在后的情况。可以看出,在上例中,两个相乘的矩阵前三维相同,后两维满足二维矩阵乘法规则,而相乘得到的矩阵为(8,6,3,n,10)或(8,6,3,7,m)。而更优的,介于广播机制的出现,如今的矩阵乘法中,两个相乘的矩阵除最后两维外的其它维度的大小可不必再相同,在得到的结果的矩阵中,最后两维依旧遵循二维矩阵乘法规则,而其它各维均取两个矩阵的对应维度中的较大值。例如,当一个矩阵(8,10,5,6,4)与另一个矩阵(3,2,9,4,7)相乘时,得到的结果就为(8,10,9,6,7)的矩阵。
基于此,便能够确定出循环的数量。而由于在执行语句正确的情况下,循环的次序对计算结果不产生影响,因此可进一步确定出所有能够实现矩阵乘法的循环次序,也就是确定出所有候选计算方式。
举例来说,仍以二维矩阵Ax,z与Bz,y之间的相乘为例,由于矩阵A的第二维的大小必须与矩阵B的第一维的大小相同,也就是矩阵A的长与矩阵B的高必须相同,因此可确定出矩阵A与矩阵B相乘时共存在基于x、y、z确定出的三层循环i、j、k。对i、j、k进行任意排序,不难得到共存在六种不同的排序方式,对应于六种不同的循环次序,也就是六种不同的候选计算方式。其中,以i、j、k次序进行循环的代码可如图1所示,其余五种循环次序的代码可如图3a~图3e所示。
S104:针对每个候选计算方式,根据所述特征矩阵的大小,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率。
在本说明书提供的业务执行方法中,缓存复用率用于表征高速缓冲存储器在中缓存的数据被重复利用的情况。缓存复用率越高,表示高速缓冲存储器中缓存的数据被复用的越频繁。本领域技术人员应当明白,在系统调用数据时,系统中的处理器会优先从缓存中查找数据,当未在缓存中查找到数据时,再去访问内存;同时,处理器与缓存交互的速度远快于与内存交互的速度,因此,可以想到的,在系统调用数据时,从缓存中查找到的数据越多,系统整体的处理速度就越快。基于此,本说明书提供的业务执行方法中采用缓存复用率能够用于表征系统的运行速度。其中,目标网络层在一个候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率表示目标网络层在该候选计算方式下执行矩阵乘法的过程中,缓存中的数据被调用的情况。可以想到的,无论采用哪一种候选计算方式,目标网络层在执行同样的矩阵乘法运算时,需要调用的总数据量都是相同的。因此,目标网络层在一个候选计算方式下的总缓存复用率越高,就表示该候选计算方式下从内存中读取的数据量越少,从缓存中读取的数据量越多,计算速度越快。
具体的,可针对每个候选计算方式,确定所述目标网络层在该候选计算方式下执行矩阵乘法时的循环次序;根据所述循环次序以及所述特征矩阵的大小,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率。
正如步骤S104中阐述的,不同的候选计算方式对应于不同的循环次序,而受到高速缓冲存储器对矩阵中数据的存储规则的影响,在不同的循环次序下,执行矩阵乘法运算时的总缓存复用率都是不同的。因此,在确定一个候选计算方式的总缓存复用率时,需要首先确定该候选计算方式下的循环次序。
除循环次序外,总缓存复用率还会受到目标网络层中用于矩阵相乘的特征矩阵本身的大小的影响。在本说明书提供的业务执行方法中,一个矩阵的大小指该矩阵在各维度下的向量的长度。在步骤S102的示例中,(a,b,……,c)便是通过矩阵的大小来表示一个矩阵,其中,括号内元素的个数表示矩阵的维度数量,各元素的值表示对应维度的大小,也就是对应维度下的向量长度,a、b、c均可为任意常数。不难想到,在分别计算不同大小矩阵的矩阵乘法时,总缓存复用率也可不相同。
S106:根据各总缓存复用率,在各候选计算方式中确定目标计算方式。
根据步骤S104中确定出的目标网络层在各候选计算方式下的总缓存复用率,可在各候选计算方式中选择出目标计算方式。具体的,可在各候选计算方式中,选择总缓存复用率最高的候选计算方式,作为目标计算方式。
由于同一目标网络层在采用不同的候选计算方式执行相同的矩阵乘法运算时,需要调取的总数据量不变。因此,总缓存复用率越高意味着从缓存中调用的数据量越多,从内存中调用的数据量越少,目标网络层计算矩阵乘法的速度越快。
基于此,可将目标网络层在各候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率最高的候选计算方式确定为目标计算方式。
S108:将所述目标计算方式更新为所述目标网络层的计算方式,并采用更新后的目标模型执行所述业务。
在此步骤中,可将步骤S106中确定出的目标计算方式更新为目标网络层在执行矩阵乘法运算时的计算方式,并在后续的业务执行过程中,采用更新后的目标模型来执行业务。
可以想到的,当目标网络层中的参数,也就是目标网络层中用于矩阵乘法的特征矩阵的维度、大小均不变时,那么采用本说明书中提供的方法更新后的目标网络层中采用的计算方式便始终为计算速度最快的计算方式。而当目标网络层中的参数发生改变时,可重新采用本说明书提供的方法,重新确定出目标计算方式并对目标网络层进行更新。
在采用本说明书提供的业务执行方法执行业务时,可自动寻找业务中采用的目标模型中的目标网络层在执行矩阵乘法时的最优计算方式,并采用最优计算方式替代目标网络层中原本的计算方式,使目标网络层在执行矩阵乘法运算时具有较高的缓存复用率,从而提高目标网络层执行矩阵乘法运算的速度,进而加快业务的执行效率,提升用户执行业务的体验。
额外的,在确定目标网络层在一个候选计算方式下的总缓存复用率时,可具体的,根据所述循环次序以及所述特征矩阵的大小,确定所述特征矩阵在每层循环下的缓存复用率;根据所述特征矩阵在每层循环下的缓存复用率,确定所述特征矩阵的总缓存复用率,作为所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率。
正如步骤S102中介绍的,目标网络层中的矩阵乘法是通过多层循环嵌套实现的,通过反复执行最内层循环中的执行语句,得到最终的计算结果。而实际上,针对候选计算方式中的每一层循环,都可单独确定出该循环下的缓存复用率。具体的,可根据所述循环次序,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,各层循环所在的位置;针对每层循环,根据所述特征矩阵的大小以及该层循环所在的位置,确定所述特征矩阵在该层循环下的缓存复用率。
在目标网络层中的矩阵乘法对应的循环结构的代码中,各层循环的循环次序决定了目标网络层采用的计算方式,不同的循环次序对应了不同的候选计算方式。每层循环在不同循环次序下所处的位置可能不同,因此该层循环对应的代码中的指针的移动方式也会不同,相应的,就会产生不同的缓存复用率。
仍以二维矩阵Ax,z与Bz,y相乘,得到矩阵Cx,y为例。矩阵中的维度大小x、y、z分别对应三层不同的循环i、j、k。当目标网络层以循环次序为i、j、k的候选计算方式进行矩阵乘法运算时,对应的代码如图1所示。此时,系统内部实际发生的运算情况如下:
假设x取值为3,y取值为2,k取值为4,那么此时矩阵A为3行4列的矩阵,矩阵B为4行2列的矩阵,相乘得到的矩阵C为3行2列的矩阵。
1)对于最内层循环k:
在k取值为4的情况下,在完整地运行一轮最内层循环k的过程中,共需要运行执行语句4次。
矩阵Ax,z中与x对应的最外层循环i固定不变,与z对应的最内层循环k发生改变,每次运行执行语句调用的元素A[i][k]为Ax,z第i行的其中一个元素。一个完整的内层循环中,调用的元素为Ax,z第i行中的所有元素,例如在第一次循环中调用的全部元素为Ai=0,k=0,1,2,3,也就是Ax,z第1行中的所有元素。
矩阵Bz,y中与y对应的中间层循环j固定不变,与z对应的最内层循环k发生改变,每次运行执行语句调用的元素B[k][j]为Bz,y第j列的其中一个元素。一个完整的内层循环中,调用的元素为Bz,y第j列中的所有元素,例如在第一次循环中调用的全部元素为Bk=0,1,2,3,j=0,也就是Bz,y第1列中的所有元素。
矩阵Cx,y中与x对应的最外层循环i固定不变,与y对应的中间层循环j也固定不变,每次运行执行语句调用的元素C[i][j]固定为Cx,y第i行第j列的元素。每次执行循环语句时,计算得到的结果均为元素C[i][j]的增量,在以i、j、k循环次序下,一个完整的内层循环k中,便能够得到C[i][j]最终的元素值。例如在第一次循环中,4次执行语句可分别为:
C[0][0]+=A[0][0]*B[0][0]
C[0][0]+=A[0][1]*B[1][0]
C[0][0]+=A[0][2]*B[2][0]
C[0][0]+=A[0][3]*B[3][0]
图4a、图4b、图4c给出了示例中矩阵Ax,z与Bz,y相乘,得到矩阵Cx,y的过程中,执行第一轮最内层循环的过程。结合图4a、图4b、图4c,将上面四次执行语句采用数学表达式整合到一起,可以为C[0][0]=A[0][0]*B[0][0]+A[0][1]*B[1][0]+A[0][2]*B[2][0]+C[0][0]+=A[0][3]*B[3][0]。不难看出,上述公式便是矩阵A的第一行每个元素与矩阵B第一列每个元素对位相乘得到矩阵C的第一行第一列的元素。
2)对于中间层循环j:
在j取值为2的情况下,在完整地运行一次中间层循环j的过程中,共需要运行最内层循环2次。换句话说,就是分别在j=0和j=1的情况下,按照上述1)中阐述的方式,执行2次最内层循环。
每执行一轮最内层循环,得到的结果为矩阵C中一个元素的元素值。中间层循环j对应于矩阵C的列数y,而与最外层循环i对应的行数x不发生改变,可以得出,执行一次中间层循环,可以计算出矩阵C中第i行中各元素的元素值。
3)对于最外层循环i:
在i取值为3的情况下,在完整地运行一次最外层循环i的过程中,共需要运行中间层循环3次。换句话说,就是分别在i=0、i=1、i=2的情况下,按照上述2)中阐述的方式,执行3次中间层循环。
每执行一次中间层循环,得到的结果为矩阵C中一行中各元素的元素值。最外层循环i对应于矩阵C的行数x,可以得出,执行一次最外层循环,可以计算出矩阵C中每一行中各元素的元素值,也就是得到了矩阵C中所有元素的元素值。
综上可以得出,在以i、j、k循环次序的候选计算方式下,运行一次最外层循环的过程中,需要运行i次中间层循环,i×j次最内层循环,执行i×j×k次执行语句。而上述过程实际上相当于运行一次整个循环,可以完整地计算出矩阵C。同样的,其它循环次序的候选计算方式也可得到相似的结论,例如,当循环次序为j、k、i时,最外层循环为j,中间层循环为k,最内层循环为i,那么运行一次最外层循环,也就是一次完整地整个循环的过程中,需要运行j次中间层循环、j×k次最内层循环,执行j×k×i次执行语句。对于任何循环次序,该结论均使用,且结论的论证方式与上述对i、j、k循环次序下的论证方式相同,本说明书在此不再进行赘述。
根据上述矩阵乘法中代码的实现过程,结合高速缓冲存储器对矩阵数据按行读取、按行存储的规则,便能够得到每种循环次序下,也就是每个候选计算方式在执行矩阵乘法时的总缓存复用率。
结合图4a、图4b、图4c中的循环过程,以及相对应的图1中的代码,可以看出,在图1代码中每层循环中的位置指针,具象化到图4a、图4b、图4c的矩阵中时,都存在着沿行移动、沿列移动、固定不动三种情况。例如,在图4a所示的矩阵A中,位置指针i为沿列移动,位置指针j为固定不动,位置指针k为沿行移动;在图4b所示的矩阵B中,位置指针i为固定不动,位置指针j为沿行移动,位置指针k为沿列移动;在图4c所示的矩阵C中,位置指针i为沿列移动,位置指针j为沿行移动,位置指针k为固定不动。
需要说明的是,上述每层循环的位置指针在各矩阵中的移动方式,与采用何种候选计算方式,也就是与循环次序无关。在上例中,无论位置指针i、j、k对应的三层循环为何种循环次序,位置指针i、j、k的移动方式均不会发生任何改变。在其它任何矩阵中也皆是如此,位置指针的移动方式只与矩阵本身的维度相关,与对应的循环层的次序无关。
在上述基础下,便能够确定出每种候选计算方式的缓存复用率。在本说明书提供的业务执行方法中,缓存复用率可通过计算过程中从缓存中调用的元素的数量、从内存中读取到缓存中的元素的数量、以及循环次数得到。
仍以二维矩阵Ax,z与Bz,y相乘,得到二维矩阵Cx,y,在循环次序为i、j、k的候选计算方式下进行矩阵乘法为例。矩阵A、矩阵B、矩阵C的总缓存复用率可分别计算。
对于矩阵A,最内层循环的位置指针k沿行移动,在每一轮最内层循环中,需要调用到的元素均为矩阵A第i行的所有元素,也就是A[i][0]~A[i][z-1],共z个元素。按照按行读取的规则,从内存读取到缓存中的数据也是第i行的所有元素A[i][0]~A[i][z-1],共z个元素。最内层循环共需要从缓存中调用z个元素,同时,从内存中读取到缓存的元素数量也为z。也就是说,最内层自身的缓存利用率为z÷z=1(100%)。而由于中间层、最外层循环运行的过程中,需要不断重复运行最内层循环,也就是不断复用最内层循环中的元素,因此矩阵A的最内层循环的缓存复用率为x×y×z×1=x×y×z。
对于矩阵A,中间层的位置指针j固定不动,在每一次中间层循环中,需要从缓存调用到的元素均为矩阵A第i行第k个元素,也就是A[i][k],共1个元素。而由于中间层循环复用最内层循环,中间层循环同样需要从内存中读取矩阵A中一行,也就是z个元素。也就是说,中间层自身的缓存利用率为1÷z。而由于最外层循环运行的过程中,需要不断重复运行中间层循环,因此矩阵A的中间层循环的缓存复用率为x×y×(1÷z)=x×y÷z。
对于矩阵A,最外层的位置指针i沿列移动,在每一次最外层循环中,不会调用缓存中的元素。也就是说,矩阵A的最外层的缓存复用率为0。
将矩阵A中各层循环的缓存复用率相加,便能够得到在i、j、k循环次序的计算方式下,矩阵A的总缓存复用率为x×y×z+x×y÷z+0=x×y×z+x×y÷z。
对于矩阵B,最内层循环的位置指针k沿列移动。最内层循环中,需要调用到的元素均为矩阵B第j列的所有元素,也就是B[0][j]~A[k-1][j],共z个元素。虽然每一次运行执行语句时,仅需调用到矩阵B中的一个元素,按照按行读取的规则,高速缓冲存储器仍需要从内存中读取对应的一整行元素。而因为一轮最内层循环所调用的所有元素均不在同一行,因此每次运行执行语句时,高速缓冲存储器都需要重新从内存中读取一行新的元素。可以得出,共需要从内存中读取到缓存中y×z个元素。同时,最外层和中间层均需要复用最内层,因此矩阵B最内层的缓存复用率为z÷(y×z)×(x×y×z)=x×z。
对于矩阵B,中间层的位置指针j沿行移动,在每一次中间层循环中,需要从缓存调用到的元素为矩阵B第k行的所有元素,也就是B[k][0]~B[k][y-1],共y个元素。而中间层循环同样需要从内存中读取矩阵B中各行元素,也就是y×z个元素。而由于最外层循环运行的过程中,需要不断重复运行中间层循环,因此矩阵B的中间层循环的缓存复用率为y÷(y×z)×(x×y)=x×y÷z。
对于矩阵B,最外层的位置指针i固定不动,在每一次最外层循环中,需要从缓存中调用的元素为C[k][j],共1个元素。而由于最外层循环复用中间层循环和最内层循环,因此最外层循环同样需要从内存中读取y×z个元素到缓存中。可以得出,最外层循环的缓存复用率为1÷(y×z)×x=x÷(y×z)。
将矩阵B中各层循环的缓存复用率相加,便能够得到在i、j、k循环次序的计算方式下,矩阵B的总缓存复用率为x×z+x×y÷z+x÷(y×z)。
最后,对于矩阵C,最内层循环的位置指针k固定不动。每次运行执行语句,需要调用的元素均为C[i][j]这一个元素,也就是说在一轮最内层循环中,需要从缓存中调用的元素仅有C[i][j]。而高速缓冲存储器需要从内存中读取C[i][j]所在的一整行的y个元素,并且最外层循环与中间层循环复用最内层循环。可以得出,最内层循环的缓存复用率为1÷y×(x×y×z)=x×z。
对于矩阵C,中间层的位置指针j沿行移动,在每一次中间层循环中,需要从缓存调用到的元素为矩阵C第i行的所有元素,也就是C[i][0]~C[i][y-1],共y个元素。而中间层循环同样需要从内存中读取矩阵C中第i行元素,也就是y个元素。而由于最外层循环运行的过程中,需要不断重复运行中间层循环,因此矩阵C的中间层循环的缓存复用率为y÷y×(x×y)=x×y。
对于矩阵C,最外层的位置指针i沿列移动,在每一次最外层循环中,不会调用缓存中的元素。也就是说,矩阵C的最外层的缓存复用率为0。
将矩阵C中各层循环的缓存复用率相加,便能够得到在i、j、k循环次序的计算方式下,矩阵C的总缓存复用率为x×z+x×y+0=x×(y+z)。
最终,可将矩阵A、矩阵B、矩阵C的总缓存复用率相加,得到目标网络层在循环次序为i、j、k的候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率。具体可为x×y×z+x×y÷z+x×z+x×y÷z+x÷(y×z)+x×(y+z)=(2×x×y^2+y)÷(y×z)+{x×[z×(2+y)+y]}。
以上为二维矩阵Ax,z与Bz,y相乘,得到矩阵Cx,y的矩阵运算,在循环次序为i、j、k的候选计算方式下,得到的目标网络层读取数据的缓存复用率。其中,i对应于x,j对应于y,k对应于z。可以想到的,在其它候选计算方式,也就是其它循环次序下,例如i、k、j;j、k、i;k、j、i等循环次序下,也可用同样的方式得到目标网络层的缓存复用率。本说明书在此不再进行赘述。
不难想象,不同循环次序下,目标网络层读取数据的缓存复用率均不相同。并且可以看出,循环复用率最终的大小取决于x、y、z的取值,也就是矩阵本身的大小。当目标网络层中用于进行矩阵乘法运算的特征矩阵本身的大小改变时,各循环次序下得到的目标网络层的缓存复用率在代入矩阵大小后的数值也会发生改变。也就是说,并不存在固定的某一种候选计算方式下的循环次序为最优的,当矩阵大小的取值发生变化时,缓存复用率最大的循环次序也可能会变化。
同时,不难看出,由于高速缓冲存储器对矩阵数据的存取规则为按行读取,按行存储。因此,当一层循环的位置指针为沿行移动时,便能够与存取规则相对应,得到较高的缓存复用率;相反的,当一层循环的位置指针为沿列移动时,会导致高速缓冲存储器需要额外从内存中读取最多的数据,得到较低的缓存复用率。而在矩阵乘法对应的代码形成的循环中,最内层循环会被复用最多次,最外层循环被复用最少次。因此,可以得出,通常情况下,对于任一矩阵,当最内层循环的位置指针为沿行移动,最外层循环的位置指针为沿列移动时,能够得到最高的缓存复用率。
另外,经过上述论述,可以总结得到,对于矩阵乘法运算中的任一层循环,其位置指针的移动方式存在沿行移动、沿列移动、固定不动三种情况;同时,任一层循环所在的位置存在最内层、最外层、中间层三种情况。将上述三种移动方式与三种所在位置进行排列组合,总共可得到九种不同的组合。不难想象,针对每一种组合,均可得到该层循环对应的缓存复用率。上述九种不同组合下,一层循环的缓存复用率可如图5所示。
当一层循环的位置指针沿列移动时,如果该层循环为最内层循环,那么该层循环的缓存复用率为(指针沿列移动的次数÷从内存中读取的元素数量)×循环复用次数;如果该层循环为中间层循环或最外层循环,那么该层循环的缓存复用率为0。
当一层循环的位置指针沿行移动时,如果该层循环为最内层循环,那么该层循环得到缓存复用率为循环复用次数;如果该层循环为中间层循环,那么在最内层循环为沿列移动的情况下,该层循环的缓存复用率为(指针沿行移动的次数÷从内存中读取的元素数量)×循环复用次数,否则该层循环的缓存复用率为循环复用次数;如果该层循环为最外层循环,那么在最内层循环为沿列移动的情况下,该层循环的缓存复用率为(指针沿行移动的次数÷从内存中读取的元素数量)×循环复用次数,否则该层循环的缓存复用率为循环复用次数。
当一层循环的位置指针固定不动时,如果该层循环为最内层循环,那么该层循环的缓存复用率为(指针沿行移动的次数÷从内存中读取的元素数量)×循环复用次数;如果该层循环为中间层循环,那么最内层循环为沿列移动的情况下,该层循环的缓存复用率为(1÷从内存中读取的元素数量)×循环复用次数,否则该层循环的缓存复用率为(指针沿行移动的次数÷从内存中读取的元素数量)×循环复用次数;如果该层循环为最外层循环,那么在最内层循环为沿列移动的情况下,该层循环的缓存复用率为(1÷从内存中读取的元素数量)×循环复用次数,否则该层循环的缓存复用率为(指针沿行移动的次数÷从内存中读取的元素数量)×循环复用次数。
在上述结果中,指针沿行移动的次数和指针沿列移动的次数,实际上都是从缓存中调用的元素的数量在矩阵中的具体体现。换句话说,当一层循环中的位置指针沿行移动时,那么该层循环从缓存中调用的元素的数量就是位置指针沿行移动的次数;当一层循环中的位置指针沿列移动时,那么该层循环从缓存中调用的元素的数量就是位置指针沿列移动的次数;当一层循环中的位置指针固定不动时,那么该层循环从缓存中调用的元素的数量就是1。因此,实际上所有缓存复用率的结果均可统一化为(从缓存中调用的元素的数量÷从内存中读取的元素数量)×循环复用次数。而其中,循环复用次数可理解为该层循环在一次完整地矩阵乘法运算中总共运行的次数。可以想到的,循环复用次数是由该层循环所处的位置决定的,针对任一层循环,当该层循环所处的位置为最内层时,那么该层的循环复用次数为(最外层循环大小×中间层循环大小×最内层循环大小);当该层循环所处的位置为最内层时,那么该层的循环复用次数为(最外层循环大小×中间层循环大小);当该层循环所处的位置为最内层时,那么该层的循环复用次数为(最外层循环大小)。对应到本说明书提供的二维矩阵Ax,z与Bz,y相乘的实施例中,位置指针i、j、k,分别对应于矩阵维度的大小x、y、z,当循环次序为i、j、k时,最外层循环大小为x,中间层循环大小为y,最内层循环大小为z。换句话说,每一层循环的大小就是矩阵每一维度的大小在代码执行过程中的体现。
综上可得,本说明书提供的业务执行方法中,在得到缓存复用率时存在一定的规律,拥有较强的可实施性。
额外的,为了便于理解,以上仅提供了常见的二维矩阵乘法的缓存复用率的计算方式。而实际上,对于二维以上的多维矩阵乘法的计算,可利用递归的思想,采用与上述实施例相近的方式计算出循环复用率。
以四维矩阵相乘为例,根据多维矩阵相乘的规则,两个相乘的多维矩阵的最后两位必须满足二维矩阵乘法的条件,其它维度应相等。例如,可存在矩阵Da,b,c,d和矩阵Ea,b,d,e相乘,得到矩阵Fa,b,c,e。其中,循环层数应等于矩阵的维度数量+1,也就是说在进行计算时存在五层循环。此时,各层循环的所处的位置可包括最内层、最外层、以及至少一层中间层。其中,假设五层循环对应的位置指针分别为m、n、o、p、q,分别对应矩阵的维度的大小a、b、c、d、e。当循环次序为m、n、o、p、q时,最外层循环为m,最内层循环为q,中间层循环为n、o、p。此时,三个中间层均可按照本说明书提供的中间层的缓存复用率的计算方式,确定出缓存复用率。
以上是本说明书提供的业务执行方法,基于同样的思路,本说明书还提供了相应的业务执行装置,如图6所示。
图6为本说明书提供的一种业务执行装置示意图,具体包括:
响应模块200,用于响应于业务的执行请求,获取用于执行所述业务的目标模型,并确定所述目标模型中的目标网络层;
计算方式确定模块202,用于根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层的候选计算方式,其中,不同候选计算方式对应的执行矩阵乘法运算时的循环次序不同;
复用率确定模块204,用于针对每个候选计算方式,根据所述特征矩阵的大小,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率;
筛选模块206,用于根据各总缓存复用率,在各候选计算方式中确定目标计算方式;
更新模块208,用于将所述目标计算方式更新为所述目标网络层的计算方式,并采用更新后的目标模型执行所述业务。
可选的,所述计算方式确定模块202,具体用于根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层在执行矩阵乘法时的循环层数;根据所述循环层数,确定所述目标网络层的候选计算方式。
可选的,所述复用率确定模块204,具体用于针对每个候选计算方式,确定所述目标网络层在该候选计算方式下执行矩阵乘法时的循环次序;根据所述循环次序以及所述特征矩阵的大小,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率。
可选的,所述复用率确定模块204,具体用于根据所述循环次序以及所述特征矩阵的大小,确定所述特征矩阵在每层循环下的缓存复用率;根据所述特征矩阵在每层循环下的缓存复用率,确定所述特征矩阵的总缓存复用率,作为所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率。
可选的,所述复用率确定模块204,具体用于根据所述循环次序,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,各层循环所在的位置;针对每层循环,根据所述特征矩阵的大小以及该层循环所在的位置,确定所述特征矩阵在该层循环下的缓存复用率。
可选的,所述位置包括最内层、最外层、以及至少一层中间层。
可选的,所述特征矩阵至少包括:第一矩阵、第二矩阵、目标矩阵,所述目标矩阵为所述第一矩阵与所述第二矩阵通过矩阵乘法得到的矩阵;
所述复用率确定模块204,具体用于确定所述第一矩阵、第二矩阵、目标矩阵在该候选计算方式下的总缓存复用率;根据所述第一矩阵、第二矩阵、目标矩阵的总缓存复用率,确定该候选计算方式的总缓存复用率。
可选的,所述计算方式确定模块202,具体用于在各候选计算方式中,选择总缓存复用率最高的候选计算方式,作为目标计算方式。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的业务执行方法。
本说明书还提供了图7所示的电子设备的示意结构图。如图7所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的业务执行方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(ProgrammableLogic Device,PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware DescriptionLanguage,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced BooleanExpression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java HardwareDescription Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware DescriptionLanguage)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated CircuitHardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (9)
1.一种业务执行方法,其特征在于,包括:
响应于业务的执行请求,获取用于执行所述业务的目标模型,并确定所述目标模型中通过矩阵乘法实现卷积运算的目标网络层;
根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层的候选计算方式,其中,不同候选计算方式对应的执行矩阵乘法运算时的循环次序不同;其中,所述特征矩阵包括为二维矩阵以及二维以上的矩阵,所述特征矩阵的行和列不相等;
针对每个候选计算方式,确定所述目标网络层在该候选计算方式下执行矩阵乘法时的循环次序,根据所述循环次序以及所述特征矩阵的大小,确定所述特征矩阵在每层循环下的缓存复用率,根据所述特征矩阵在每层循环下的缓存复用率,确定所述特征矩阵的总缓存复用率,作为所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率;
根据各总缓存复用率,在各候选计算方式中确定目标计算方式;
将所述目标计算方式更新为所述目标网络层的计算方式,并采用更新后的目标模型执行所述业务。
2.如权利要求1所述的方法,其特征在于,根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层的候选计算方式,具体包括:
根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层在执行矩阵乘法时的循环层数;
根据所述循环层数,确定所述目标网络层的候选计算方式。
3.如权利要求1所述的方法,其特征在于,根据所述循环次序以及所述特征矩阵的大小,确定所述特征矩阵在每层循环下的缓存复用率,具体包括:
根据所述循环次序,确定所述目标网络层在该候选计算方式下执行矩阵乘法时,各层循环所在的位置;
针对每层循环,根据所述特征矩阵的大小以及该层循环所在的位置,确定所述特征矩阵在该层循环下的缓存复用率。
4.如权利要求3所述的方法,其特征在于,所述位置包括最内层、最外层、以及至少一层中间层。
5.如权利要求1所述的方法,其特征在于,所述特征矩阵至少包括:第一矩阵、第二矩阵、目标矩阵,所述目标矩阵为所述第一矩阵与所述第二矩阵通过矩阵乘法得到的矩阵;
确定所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率,具体包括:
确定所述第一矩阵、第二矩阵、目标矩阵在该候选计算方式下的总缓存复用率;
根据所述第一矩阵、第二矩阵、目标矩阵的总缓存复用率,确定该候选计算方式的总缓存复用率。
6.如权利要求1所述的方法,其特征在于,根据各总缓存复用率,在各候选计算方式中确定目标计算方式,具体包括:
在各候选计算方式中,选择总缓存复用率最高的候选计算方式,作为目标计算方式。
7.一种业务执行装置,其特征在于,包括:
响应模块,用于响应于业务的执行请求,获取用于执行所述业务的目标模型,并确定所述目标模型中通过矩阵乘法实现卷积运算的目标网络层;
计算方式确定模块,用于根据所述目标网络层中用于执行矩阵乘法的特征矩阵的维度,确定所述目标网络层的候选计算方式,其中,不同候选计算方式对应的执行矩阵乘法运算时的循环次序不同;其中,所述特征矩阵包括为二维矩阵以及二维以上的矩阵,所述特征矩阵的行和列不相等;
复用率模块,用于针对每个候选计算方式,确定所述目标网络层在该候选计算方式下执行矩阵乘法时的循环次序,根据所述循环次序以及所述特征矩阵的大小,确定所述特征矩阵在每层循环下的缓存复用率,根据所述特征矩阵在每层循环下的缓存复用率,确定所述特征矩阵的总缓存复用率,作为所述目标网络层在该候选计算方式下执行矩阵乘法时,读取数据的总缓存复用率;
筛选模块,用于根据各总缓存复用率,在各候选计算方式中确定目标计算方式;
更新模块,用于将所述目标计算方式更新为所述目标网络层的计算方式,并采用更新后的目标模型执行所述业务。
8.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~6任一项所述的方法。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310199501.6A CN116150563B (zh) | 2023-02-24 | 2023-02-24 | 一种业务执行方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310199501.6A CN116150563B (zh) | 2023-02-24 | 2023-02-24 | 一种业务执行方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116150563A CN116150563A (zh) | 2023-05-23 |
CN116150563B true CN116150563B (zh) | 2024-01-05 |
Family
ID=86358084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310199501.6A Active CN116150563B (zh) | 2023-02-24 | 2023-02-24 | 一种业务执行方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116150563B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116415103B (zh) * | 2023-06-09 | 2023-09-05 | 之江实验室 | 一种数据处理的方法、装置、存储介质以及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111542818A (zh) * | 2018-12-12 | 2020-08-14 | 深圳鲲云信息科技有限公司 | 一种网络模型数据存取方法、装置及电子设备 |
CN111898752A (zh) * | 2020-08-03 | 2020-11-06 | 乐鑫信息科技(上海)股份有限公司 | 执行lstm神经网络运算的装置和方法 |
WO2021143881A1 (zh) * | 2020-01-17 | 2021-07-22 | 北京达佳互联信息技术有限公司 | 直播流的拉流方法及设备 |
CN113691598A (zh) * | 2021-08-15 | 2021-11-23 | 南京理工大学 | 一种星地融合网络的协同缓存策略 |
WO2022178660A1 (zh) * | 2021-02-23 | 2022-09-01 | 华为技术有限公司 | 一种数据处理方法、装置、设备及介质 |
CN115269631A (zh) * | 2022-07-01 | 2022-11-01 | 阿里巴巴(中国)有限公司 | 数据查询方法、数据查询系统、设备及存储介质 |
CN115271047A (zh) * | 2021-04-29 | 2022-11-01 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN115661602A (zh) * | 2022-09-21 | 2023-01-31 | 之江实验室 | 一种图像识别的方法、装置、存储介质及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020050886A1 (en) * | 2018-09-05 | 2020-03-12 | Futurewei Technologies, Inc. | Compiler-level general matrix multiplication configuration optimization |
US20210303574A1 (en) * | 2020-03-31 | 2021-09-30 | Paul Geoffrey Brown | Matrix-related operations in relational databases systems including massively parallel processing systems |
US20230056246A1 (en) * | 2021-08-03 | 2023-02-23 | Micron Technology, Inc. | Parallel matrix operations in a reconfigurable compute fabric |
-
2023
- 2023-02-24 CN CN202310199501.6A patent/CN116150563B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111542818A (zh) * | 2018-12-12 | 2020-08-14 | 深圳鲲云信息科技有限公司 | 一种网络模型数据存取方法、装置及电子设备 |
WO2021143881A1 (zh) * | 2020-01-17 | 2021-07-22 | 北京达佳互联信息技术有限公司 | 直播流的拉流方法及设备 |
CN111898752A (zh) * | 2020-08-03 | 2020-11-06 | 乐鑫信息科技(上海)股份有限公司 | 执行lstm神经网络运算的装置和方法 |
WO2022178660A1 (zh) * | 2021-02-23 | 2022-09-01 | 华为技术有限公司 | 一种数据处理方法、装置、设备及介质 |
CN115271047A (zh) * | 2021-04-29 | 2022-11-01 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN113691598A (zh) * | 2021-08-15 | 2021-11-23 | 南京理工大学 | 一种星地融合网络的协同缓存策略 |
CN115269631A (zh) * | 2022-07-01 | 2022-11-01 | 阿里巴巴(中国)有限公司 | 数据查询方法、数据查询系统、设备及存储介质 |
CN115661602A (zh) * | 2022-09-21 | 2023-01-31 | 之江实验室 | 一种图像识别的方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116150563A (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116225669B (zh) | 一种任务执行方法、装置、存储介质及电子设备 | |
CN116150563B (zh) | 一种业务执行方法、装置、存储介质及电子设备 | |
CN116010299B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN115981870B (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN116432778B (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN115829017B (zh) | 一种基于芯粒的数据处理的方法、装置、介质及设备 | |
CN116185532B (zh) | 一种任务执行系统、方法、存储介质及电子设备 | |
CN117312394B (zh) | 一种数据访问方法、装置、存储介质及电子设备 | |
CN109308191A (zh) | 分支预测方法及装置 | |
CN116663618A (zh) | 一种算子优化方法、装置、存储介质及电子设备 | |
CN116306856A (zh) | 一种基于搜索的深度学习模型部署方法及装置 | |
CN116107636B (zh) | 一种硬件加速方法、装置、存储介质及电子设备 | |
CN116776135B (zh) | 一种基于神经网络模型的物理场数据预测方法及装置 | |
CN116306855B (zh) | 一种基于存算一体系统的数据处理方法及装置 | |
CN115827918B (zh) | 一种执行业务的方法、装置、存储介质及电子设备 | |
CN116304212A (zh) | 一种数据处理系统、方法、设备及存储介质 | |
CN116384505A (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN116402113A (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
CN116136952A (zh) | 一种针对元器件的仿真测试方法及装置 | |
CN117171577B (zh) | 一种高性能算子选择的动态决策方法及装置 | |
CN118466863B (zh) | 一种数据存储方法、装置、存储介质及电子设备 | |
CN114520770B (zh) | 一种网络设备的拓扑图生成方法、装置、设备及介质 | |
CN116415103B (zh) | 一种数据处理的方法、装置、存储介质以及电子设备 | |
CN116991388B (zh) | 一种深度学习编译器的图优化序列生成方法及装置 | |
CN114091085B (zh) | 用于二元操作的数据访问控制系统及其方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |