CN117349585A - 一种基于加速器约束的算子性能优化方法 - Google Patents
一种基于加速器约束的算子性能优化方法 Download PDFInfo
- Publication number
- CN117349585A CN117349585A CN202311644953.7A CN202311644953A CN117349585A CN 117349585 A CN117349585 A CN 117349585A CN 202311644953 A CN202311644953 A CN 202311644953A CN 117349585 A CN117349585 A CN 117349585A
- Authority
- CN
- China
- Prior art keywords
- matrix
- constraint
- value
- array
- test
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000005457 optimization Methods 0.000 title claims abstract description 19
- 239000011159 matrix material Substances 0.000 claims abstract description 153
- 238000012360 testing method Methods 0.000 claims abstract description 59
- 238000013135 deep learning Methods 0.000 claims abstract description 19
- 238000004364 calculation method Methods 0.000 claims abstract description 18
- 238000000354 decomposition reaction Methods 0.000 claims abstract description 12
- 238000002922 simulated annealing Methods 0.000 claims abstract description 7
- 239000013598 vector Substances 0.000 claims description 34
- 238000003491 array Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 8
- 230000009467 reduction Effects 0.000 claims description 3
- 230000001131 transforming effect Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000010339 dilation Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012545 processing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于加速器约束的算子性能优化方法,基于获取到的加速器第一参数确定第一约束,再根据第一约束建立测试矩阵组集合及与测试矩阵组集合对应的测试矩阵组组合集合,再采用目标深度学习加速器完成所有测试子矩阵组的矩阵乘法运算并记录运算时间,将最小组合运算时间的矩阵组组合作为测试矩阵组的选定矩阵组组合并将选定矩阵组组合作为第二约束,对于待执行运算的输入数组分解确定目标组合,基于目标组合确定受限探索空间,最后以第二约束作为约束采用基于约束的模拟退火算法在该受限探索空间中执行寻优得到最优分解组合,从而有效提高相同加速器上的算子计算性能。
Description
技术领域
本发明属于深度学习加速器技术领域,具体涉及一种基于加速器约束的算子性能优化方法。
背景技术
随着深度学习应用的不断增加,对于高性能计算的需求也越来越大。深度学习的加速主要是通过提高深度学习算子的计算效率和能耗效率,如何通过算法的计算特点与硬件架构的特点之间的匹配来实现最佳的性能和能耗效率仍然具有挑战。现有的性能优化方式主要是通过为CPU和GPU设计软件库,通过优化内存子***实现矩阵乘法的优化,此外,还有通过对数组进行分解以提高算子性能的方式,然而上述方式都未关注加速器的自身特性,因此未能有效解决加速器与算子的匹配问题,对算子性能的优化效果不佳。
发明内容
有鉴于此,本发明提供了一种基于加速器约束的算子性能优化方法,实现了基于约束的数组分解以获取最优的数组分解方式,进而得到最优的矩阵组合。
本发明提供的一种基于加速器约束的算子性能优化方法,包括以下步骤:
步骤1、获取目标深度学习加速器的第一参数,第一参数是指目标深度学习加速器能够支持的矩阵乘法运算的最小计算单元的尺寸记为(M,N,K),将第一参数和第一参数中M、N及K三者的乘积共同作为第一约束;构建由测试矩阵组组成的测试矩阵组集合,在第一约束下将测试矩阵组分解为测试子矩阵组g(m,n,k)形成多种矩阵组组合G(M,N,K),由所有矩阵组组合构成测试矩阵组集合对应的测试矩阵组组合集合,采用目标深度学习加速器完成测试矩阵组的每个矩阵组组合中所有测试子矩阵组的矩阵乘法运算并记录运算时间得到每个矩阵组组合的组合运算时间,将最小组合运算时间及与之对应的矩阵组组合的最大集合规模作为第二约束;
步骤2、对于待执行运算的输入数组A和B,数组A的维度为d_A、数组B的维度为d_B,且d_A和d_B均为不小于2的整数;若d_A和d_B均等于2且数组A与数组B的行数或列数相等则执行步骤3,若d_A和d_B一个等于2另一个等于3且数组A与数组B的行数或列数相等则执行步骤4,若d_A和d_B均不小于3则执行步骤5;
步骤3、将A与B的矩阵乘法运算表示为mma(num,O1,O2)且num=1、O1=A、O2=B、O1_c=O2_r,其中,num为参与运算矩阵的组数,O1及O2均为参与运算的矩阵,O1表示为(O1_r,O1_c),O2表示为(O2_r,O2_c),执行步骤6;
步骤4、将维度为3的数组分解为多个矩阵和一个向量,执行步骤6;
步骤5、令A为输入数组A=(n,ci,wi,hi),B为卷积核B=(co,ci,kw,kh),其中,n为卷积批次数,ci为输入通道数,wi为输入宽度,hi为输入高度,co为输出通道数,kw为卷积核宽度,kh为卷积核高度;若A或B的维度为2x+1,则将其分解为x-1个矩阵及由最后三个元素所组成的数组降维变形得到的矩阵A_ch′或B_ch′;若A或B的维度为2x,则将其分解为x个矩阵,并将最后一个矩阵变形为A_ch′或B_ch′;再将A与B的矩阵乘法运算表示为mma(num,O1,O2)且num=n*ci、O1=A_ch′、O2=B_ch′、O1_c=O2_r,执行步骤6;x为任意自然数;
步骤6、对于mma(num,O1,O2)中的矩阵O1(O1_r,O1_c)及O2(O2_r,O2_c),将O1_r、O1_c或O2_r、O2_c作为待比较数值,若待比较数值中存在大于下阈值的值则执行步骤7,若待比较数值均不大于下阈值则将下阈值添加到待比较数值对应向量X的子集LX中再执行步骤10;
步骤7、若待比较数值大于上阈值则执行步骤8,否则执行步骤10;
步骤8、对待比较数值对应的向量执行模2除法,若结果为0则将待比较数值的取值设置为运算结果,并且记录模2除法的次数,执行步骤7;否则执行步骤9;
步骤9、对待比较数值对应的向量执行补零操作,将待比较数值设置为下一个待比较数值后执行步骤8;
步骤10、分解待比较数值对应的向量X,令2i为大于或等于第一最小值且小于或等于第一最大值的值,采用X=X-2i的方式分解X直到X小于或等于下阈值,记录所有i的取值,再将以2为底以i的取值为指数的结果作为维度保存到向量X的子集LX中,执行步骤6;当所有向量均完成分解后,执行步骤11;
步骤11、对所有向量子集LX中的数值进行排列组合得到num个矩阵组组合的集合GA(M,N,K),由num个GA (M,N,K)得到受限探索空间,采用基于约束的模拟退火算法以第二约束为约束在该受限探索空间中执行寻优,得到满足最优计算时间的输入数组A和B的最优分解组合。
进一步地,所述步骤1中所述构建由测试矩阵组组成的测试矩阵组集合的方式为:以第一约束M、N及K中的最大值作为单个维度的最小值记为第一最小值MIN,设定单个维度的最大值记为第一最大值MAX,第一最大值选取大于第一最小值且为2的指数倍的数值;选取第一最小值与第一最大值之间的2的指数倍的数值构建测试矩阵组(mTA,nTB,kTA),由所有的测试矩阵组组成测试矩阵组集合。
进一步地,所述步骤1中所述组合运算时间为矩阵组组合内的所有测试子矩阵组的矩阵乘法运算时间之和。
进一步地,所述步骤4中所述将维度为3的数组分解为多个矩阵和一个向量的方式为:假定A为3维数组A=(a_1,a_2,a_3),B为2维数组B=(a_4,a_1),那么将A分解为A′和A′′,其中A′=(a_1,a_2)、A′′=(a_3),再将A与B的矩阵乘法运算表示为mma(num,O1,O2)且num=a_3、O1=A′、O2=B、O1_c=O2_r。
进一步地,所述步骤5中所述将最后一个矩阵变形为A_ch′或B_ch′的方式为:
令卷积运算的步长s=1、卷积填充p=0,则二维卷积运算得到的输出长为wo=(wi-kw+2p)/s+1、宽为ho=(hi-kh+2p)/s+1;对于每个通道的计算过程,均有n=1、ci=1则A_ch=(1,1,wi,hi)、B_ch=(co,1,kw,kh);将A_ch降维为矩阵C=(wi,hi),再将C变形为A_ch′=(kw*kh,wo*ho),将B_ch降维为B_ch′=(co,kw*kh)。
有益效果
本发明基于获取到的加速器第一参数确定第一约束,再根据第一约束建立测试矩阵组集合及与测试矩阵组集合对应的测试矩阵组组合集合,再采用目标深度学习加速器完成所有测试子矩阵组的矩阵乘法运算并记录运算时间,将最小组合运算时间的矩阵组组合作为测试矩阵组的选定矩阵组组合并将选定矩阵组组合作为第二约束,对于待执行运算的输入数组分解确定目标组合,基于目标组合确定受限探索空间,最后以第二约束作为约束采用基于约束的模拟退火算法在该受限探索空间中执行寻优得到最优分解组合,从而有效提高相同加速器上的算子计算性能。
附图说明
图1为本发明提供的一种基于加速器约束的算子性能优化方法中数组分解过程示意图。
具体实施方式
下面列举实施例,对本发明进行详细描述。
本发明提供的一种基于加速器约束的算子性能优化方法,其核心思想是:基于获取到的加速器第一参数确定第一约束,再根据第一约束建立测试矩阵组集合及与测试矩阵组集合对应的测试矩阵组组合集合,再采用目标深度学习加速器完成所有测试子矩阵组的矩阵乘法运算并记录运算时间,将最小组合运算时间的矩阵组组合作为测试矩阵组的选定矩阵组组合并将选定矩阵组组合作为第二约束,对于待执行运算的输入数组分解确定目标组合,基于目标组合确定受限探索空间,最后以第二约束作为约束采用基于约束的模拟退火算法在该受限探索空间中执行寻优得到最优分解组合。
本发明提供的一种基于加速器约束的算子性能优化方法,具体包括以下步骤:
步骤1、获取目标深度学习加速器的型号和第一参数,第一参数是指目标深度学习加速器能够支持的矩阵乘法运算的最小计算单元的尺寸记为(M,N,K),即深度学习加速器能够支持的最小计算为矩阵A=M*K与矩阵B=K*N间的乘法运算;将第一参数和第一参数中M、N及K三者的乘积共同作为第一约束。
步骤2、以第一约束M、N及K中的最大值作为单个维度的最小值记为第一最小值MIN,设定单个维度的最大值记为第一最大值MAX,第一最大值选取大于第一最小值且为2的指数倍的数值;选取第一最小值与第一最大值之间的2的指数倍的数值构建测试矩阵组(mTA,nTB,kTA),该测试矩阵组可表示为矩阵TA=mTA*kTA和矩阵TB=kTB*nTB,由所有的测试矩阵组组成测试矩阵组集合。
步骤3、针对测试矩阵组集合中的每个测试矩阵组,在第一约束下将其分解为多种矩阵组组合G(M,N,K),由所有矩阵组组合构成测试矩阵组集合对应的测试矩阵组组合集合。其中,矩阵组组合包含多个由测试矩阵组分解得到的测试子矩阵组g(m,n,k),矩阵组组合内的所有测试子矩阵组的矩阵乘法运算时间之和为该矩阵组组合的矩阵乘法运算时间记为组合运算时间。
由于不同测试子矩阵组的矩阵乘法运算时间不同所以不同矩阵组组合的组合计算时间也不同。
步骤4、对于测试矩阵组的每个矩阵组组合,改变矩阵组组合中元素的数据类型,再采用目标深度学习加速器完成其中所有测试子矩阵组的矩阵乘法运算并记录运算时间,由此得到每个矩阵组组合的组合运算时间;将多种矩阵组组合中具有最小组合运算时间且集合规模最大的矩阵组组合作为测试矩阵组的选定矩阵组组合,将选定矩阵组组合的组合运算时间及集合规模作为第二约束。
其中,矩阵组组合实际为由测试子矩阵组g(m,n,k)组成的集合,因此集合规模是指该矩阵组组合中元素的数量。本发明建立的第二约束实际反应了目标深度学习加速器在相对最短运算时间内所能支持的最大运算数量。
步骤5、对于待执行运算的输入数组A和B,数组A的维度为d_A、数组B的维度为d_B,且d_A和d_B均为不小于2的整数;若d_A和d_B均等于2且数组A与数组B的行数或列数相等则执行步骤6,若d_A和d_B一个等于2另一个等于3且数组A与数组B的行数或列数相等则执行步骤7,若d_A和d_B均不小于3则执行步骤8。
具体来说,本发明中执行矩阵乘法运算的输入数组,其维度可为二维、三维、四维、…、N维等,二维数组即为矩阵,三维数组是指由多个矩阵构成的数组,四维数组是指由多个三维数组构成的数组,以此类推,N维数组是指由多个N-1维数组构成的数组。例如,三维数组可表示为(a_1,a_2,a_3),其含义为该三维数组是由a_3个(a_1,a_2)矩阵构成;四维数组可表示为(a_1,a_2,a_3,a_4),其含义为该四维数组是由a_4个(a_1,a_2,a_3)三维数组构成;以此类推,N维数组可表示为(a_1,a_2,a_3,…,a_(N-1),a_N),其含义为该N维数组是由a_N个(a_1,a_2,a_3,…,a_(N-1))N-1维数组构成,其中,a_1、a_2、a_3、…、a_(N-1)均为数组的元素。
步骤6、对输入数组A和B,将A与B的矩阵乘法运算表示为mma(num,O1,O2)且num=1、O1=A、O2=B、O1_c=O2_r,即1组矩阵A与矩阵B执行矩阵乘法运算,再执行步骤9。其中,mma(num,O1,O2)为本发明定义的矩阵乘法运算函数,num为参与运算矩阵的组数,O1及O2均为参与运算的矩阵,O1表示为(O1_r,O1_c),O2表示为(O2_r,O2_c)。
步骤7、将维度为3的数组分解为多个矩阵和一个向量,假定输入数组A为3维数组表示为A=(a_1,a_2,a_3),输入数组B为2维数组表示为B=(a_4,a_1),那么将A分解为A′和A′′,其中A′=(a_1,a_2)、A′′=(a_3),再将A与B的矩阵乘法运算表示为mma(num,O1,O2)且num=a_3、O1=A′、O2=B、O1_c=O2_r,即a_3组矩阵A′与矩阵B执行矩阵乘法运算,执行步骤9。
步骤8、这种情况通常是卷积运算,因此令A为输入数组表示为A=(n,ci,wi,hi),B为卷积核表示为B=(co,ci,kw,kh),其中,n为卷积批次数,ci为输入通道数,wi为输入宽度,hi为输入高度,co为输出通道数,kw为卷积核宽度,kh为卷积核高度;若A或B的维度为奇数即其维度可表示为2x+1,则将其分解为x-1个矩阵及由最后三个元素所组成数组降维变形得到的矩阵A_ch′或B_ch′;若A或B的维度为偶数即其维度可表示为2x,则将其分解为x个矩阵,并将最后一个矩阵变形为A_ch′或B_ch′;再将A与B的矩阵乘法运算表示为mma(num,O1,O2)且num=n*ci、O1=A_ch′、O2=B_ch′、O1_c=O2_r,即n*ci组矩阵A_ch′与矩阵B_ch′执行矩阵乘法运算,执行步骤9。
深度学习中最为常用也是最为基础的算子就是二维卷积,三维卷积、反卷积和膨胀卷积等都是以二维卷积为基础只是维度或尺寸不同。对于A为输入数组A=(n,ci,wi,hi)、B为卷积核B=(co,ci,kw,kh)的卷积运算,上述将最后一个矩阵变形为A_ch′或B_ch′的过程如下:
假设卷积运算的步长s=1、卷积填充p=0,则二维卷积运算得到的输出长为wo=(wi-kw+2p)/s+1、宽为ho=(hi-kh+2p)/s+1;
对于每个通道的计算过程,均有n=1、ci=1则A_ch=(1,1,wi,hi)、B_ch=(co,1,kw,kh);
将A_ch降维为C=(wi,hi),再将C变形为A_ch′=(kw*kh,wo*ho);将B_ch降维为B_ch′=(co,kw*kh)。
上述变形过程如图1所示,图1中第一通道即第一行中的输入数组A_1=(1,3,5,5)、卷积核B_1=(2,3,3,3),下面仅以第一通道中深色部分的处理为例进行说明:此时n=1,ci=1,A_1=(1,1,wi,hi),B_1=(co,1,kw,kh),将A_1降维处理为C(wi,hi),再将C变形成A_1′(kw*kh,wo*ho),将B_1降维处理为B_1′(co,kw*kh),当完成所有通道的计算后得到n*ci个A_1′和B_1′进行矩阵乘法运算,即F(A_1,B_1)=mma(n*ci,A_1′,B_1′)。
步骤9、对于mma(num,O1,O2)中的矩阵O1(O1_r,O1_c)及O2(O2_r,O2_c),将O1_r、O1_c或O2_r、O2_c作为待比较数值,分别依次比较待比较数值与2MIN及2MAX的关系,若待比较数值中存在大于2MIN的值则执行步骤10,若待比较数值均不大于2MIN则将2MIN添加到待比较数值对应向量X的子集LX中再执行步骤13。
步骤10、若待比较数值大于2MAX则执行步骤11,否则执行步骤13。
步骤11、对待比较数值对应的向量执行模2除法,若模2除法的结果为0则说明该值能被2整除,将待比较数值的取值设置为运算结果,并且记录模2除法的次数,执行步骤10;否则执行步骤12。
步骤12、对待比较数值对应的向量执行补零操作,即在该向量的末尾添加0,将当前待比较数值设置为下一个待比较数值后执行步骤11。
步骤13、分解待比较数值对应的向量X,令2i为大于或等于MIN且小于或等于MAX的值,采用X=X-2i的方式分解X直到X小于或等于2MIN,记录过程中所有i的取值i1、i2、i3等,再将以2为底以这些取值为指数的结果作为维度保存到向量X的子集LX中,再执行步骤9;当所有向量均完成分解后,执行步骤14。
例如,MIN=2、MAX=8,则i满足1≤i≤3。此时,当待比较数值为8时说明向量X具有8个元素,则当i取到3时向量X能够被分解,将23添加到子集LX中,即LX={23};当待比较数值为7时说明向量X具有7个元素,则首先令i取2即将22个元素从向量X中分解出来得到向量X′,再令i取1即将21个元素从向量X′中分解出来,此时向量X剩余的维度小于21因此记为21,将22、21、21添加到子集LX中,即LX={22,21,21}。
步骤14、对所有向量子集LX中的数值进行排列组合形成矩阵组组合集合GA(M,N,K),且存在num个GA(M,N,K)。
步骤15、根据步骤14确定的num个GA(M,N,K)得到受限探索空间,以第二约束作为约束,采用基于约束的模拟退火算法在该受限探索空间中执行寻优,得到满足最优计算时间的最优分解组合。
基于约束的模拟退火算法在该受限探索空间中执行寻优的具体探索步骤如下:
步骤15.1、初始化,设置温度的初始值为T=100,设置初始解状态S为:输入数组为A、B,矩阵乘法运算的最小计算单元的尺寸(M,N,K),M、N及K中的最大值MAX(M,N,K),自定义第一最大值MAX为214,实测的AB计算的计算时间Time(S)。
步骤15.2、将步骤15.3到步骤15.5重复执行100次。
步骤15.3、产生新解S'为:输入数组为A、B,矩阵乘法运算的最小计算单元的尺寸(M,N,K),M、N及K中的最大值MAX(M,N,K),Time(S') 为新解实测的AB计算的计算时间。
步骤15.4、计算增量Δt'= Time(S')- Time(S)。
步骤15.5、若Δt'<0,则接受S'作为新的当前解,否则以概率exp(-Δt'/T)接受S'作为新的当前解。
步骤15.6、若连续20次新解S'都未被接受或当T<=1时,则输出当前解作为最优解,该最优解包括最优的计算时间Time(S')、算子最优分解和组合GA(M,N,K)、GA的数量及模2除法的次数,退出本流程。其中,GA(M,N,K)包含矩阵组组合G(M,N,K)及子矩阵组g(m,n,k)。
步骤15.7、令T=0.95T,执行步骤15.2。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于加速器约束的算子性能优化方法,其特征在于,包括以下步骤:
步骤1、获取目标深度学习加速器的第一参数,第一参数是指目标深度学习加速器能够支持的矩阵乘法运算的最小计算单元的尺寸记为(M,N,K),将第一参数和第一参数中M、N及K三者的乘积共同作为第一约束;构建由测试矩阵组组成的测试矩阵组集合,在第一约束下将测试矩阵组分解为测试子矩阵组g(m,n,k)形成多种矩阵组组合G(M,N,K),由所有矩阵组组合构成测试矩阵组集合对应的测试矩阵组组合集合,采用目标深度学习加速器完成测试矩阵组的每个矩阵组组合中所有测试子矩阵组的矩阵乘法运算并记录运算时间得到每个矩阵组组合的组合运算时间,将最小组合运算时间及与之对应的矩阵组组合的最大集合规模作为第二约束;
步骤2、对于待执行运算的输入数组A和B,数组A的维度为d_A、数组B的维度为d_B,且d_A和d_B均为不小于2的整数;若d_A和d_B均等于2且数组A与数组B的行数或列数相等则执行步骤3,若d_A和d_B一个等于2另一个等于3且数组A与数组B的行数或列数相等则执行步骤4,若d_A和d_B均不小于3则执行步骤5;
步骤3、将A与B的矩阵乘法运算表示为mma(num,O1,O2)且num=1、O1=A、O2=B、O1_c=O2_r,其中,num为参与运算矩阵的组数,O1及O2均为参与运算的矩阵,O1表示为(O1_r,O1_c),O2表示为(O2_r,O2_c),执行步骤6;
步骤4、将维度为3的数组分解为多个矩阵和一个向量,执行步骤6;
步骤5、令A为输入数组A=(n,ci,wi,hi),B为卷积核B=(co,ci,kw,kh),其中,n为卷积批次数,ci为输入通道数,wi为输入宽度,hi为输入高度,co为输出通道数,kw为卷积核宽度,kh为卷积核高度;若A或B的维度为2x+1,则将其分解为x-1个矩阵及由最后三个元素所组成的数组降维变形得到的矩阵A_ch′或B_ch′;若A或B的维度为2x,则将其分解为x个矩阵,并将最后一个矩阵变形为A_ch′或B_ch′;再将A与B的矩阵乘法运算表示为mma(num,O1,O2)且num=n*ci、O1=A_ch′、O2=B_ch′、O1_c=O2_r,执行步骤6;x为任意自然数;
步骤6、对于mma(num,O1,O2)中的矩阵O1(O1_r,O1_c)及O2(O2_r,O2_c),将O1_r、O1_c或O2_r、O2_c作为待比较数值,若待比较数值中存在大于下阈值的值则执行步骤7,若待比较数值均不大于下阈值则将下阈值添加到待比较数值对应向量X的子集LX中再执行步骤10;
步骤7、若待比较数值大于上阈值则执行步骤8,否则执行步骤10;
步骤8、对待比较数值对应的向量执行模2除法,若结果为0则将待比较数值的取值设置为运算结果,并且记录模2除法的次数,执行步骤7;否则执行步骤9;
步骤9、对待比较数值对应的向量执行补零操作,将待比较数值设置为下一个待比较数值后执行步骤8;
步骤10、分解待比较数值对应的向量X,令2i为大于或等于第一最小值且小于或等于第一最大值的值,采用X=X-2i的方式分解X直到X小于或等于下阈值,记录所有i的取值,再将以2为底以i的取值为指数的结果作为维度保存到向量X的子集LX中,执行步骤6;当所有向量均完成分解后,执行步骤11;
步骤11、对所有向量子集LX中的数值进行排列组合得到num个矩阵组组合的集合GA(M,N,K),由num个GA(M,N,K)得到受限探索空间,采用基于约束的模拟退火算法以第二约束为约束在该受限探索空间中执行寻优,得到满足最优计算时间的输入数组A和B的最优分解组合。
2.根据权利要求1所述的算子性能优化方法,其特征在于,所述步骤1中所述构建由测试矩阵组组成的测试矩阵组集合的方式为:以第一约束M、N及K中的最大值作为单个维度的最小值记为第一最小值MIN,设定单个维度的最大值记为第一最大值MAX,第一最大值选取大于第一最小值且为2的指数倍的数值;选取第一最小值与第一最大值之间的2的指数倍的数值构建测试矩阵组(mTA,nTB,kTA),由所有的测试矩阵组组成测试矩阵组集合。
3.根据权利要求1所述的算子性能优化方法,其特征在于,所述步骤1中所述组合运算时间为矩阵组组合内的所有测试子矩阵组的矩阵乘法运算时间之和。
4.根据权利要求1所述的算子性能优化方法,其特征在于,所述步骤4中所述将维度为3的数组分解为多个矩阵和一个向量的方式为:假定A为3维数组A=(a_1,a_2,a_3),B为2维数组B=(a_4,a_1),那么将A分解为A′和A′′,其中A′=(a_1,a_2)、A′′=(a_3),再将A与B的矩阵乘法运算表示为mma(num,O1,O2)且num=a_3、O1=A′、O2=B、O1_c=O2_r。
5.根据权利要求1所述的算子性能优化方法,其特征在于,所述步骤5中所述将最后一个矩阵变形为A_ch′或B_ch′的方式为:
令卷积运算的步长s=1、卷积填充p=0,则二维卷积运算得到的输出长为wo=(wi-kw+2p)/s+1、宽为ho=(hi-kh+2p)/s+1;对于每个通道的计算过程,均有n=1、ci=1则A_ch=(1,1,wi,hi)、B_ch=(co,1,kw,kh);将A_ch降维为矩阵C=(wi,hi),再将C变形为A_ch′=(kw*kh,wo*ho),将B_ch降维为B_ch′=(co,kw*kh)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311644953.7A CN117349585B (zh) | 2023-12-04 | 2023-12-04 | 一种基于加速器约束的算子性能优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311644953.7A CN117349585B (zh) | 2023-12-04 | 2023-12-04 | 一种基于加速器约束的算子性能优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117349585A true CN117349585A (zh) | 2024-01-05 |
CN117349585B CN117349585B (zh) | 2024-02-23 |
Family
ID=89361719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311644953.7A Active CN117349585B (zh) | 2023-12-04 | 2023-12-04 | 一种基于加速器约束的算子性能优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117349585B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899182A (zh) * | 2015-06-09 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
US20200026992A1 (en) * | 2016-09-29 | 2020-01-23 | Tsinghua University | Hardware neural network conversion method, computing device, compiling method and neural network software and hardware collaboration system |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
CN114781629A (zh) * | 2022-04-06 | 2022-07-22 | 合肥工业大学 | 基于并行复用的卷积神经网络的硬件加速器及并行复用方法 |
CN114925823A (zh) * | 2022-05-12 | 2022-08-19 | 南京航空航天大学 | 一种卷积神经网络压缩方法及边缘侧fpga加速器 |
CN115994861A (zh) * | 2021-10-20 | 2023-04-21 | 珠海一微半导体股份有限公司 | 一种基于卷积算法的图像处理方法及芯片 |
-
2023
- 2023-12-04 CN CN202311644953.7A patent/CN117349585B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899182A (zh) * | 2015-06-09 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
US20200026992A1 (en) * | 2016-09-29 | 2020-01-23 | Tsinghua University | Hardware neural network conversion method, computing device, compiling method and neural network software and hardware collaboration system |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
CN115994861A (zh) * | 2021-10-20 | 2023-04-21 | 珠海一微半导体股份有限公司 | 一种基于卷积算法的图像处理方法及芯片 |
CN114781629A (zh) * | 2022-04-06 | 2022-07-22 | 合肥工业大学 | 基于并行复用的卷积神经网络的硬件加速器及并行复用方法 |
CN114925823A (zh) * | 2022-05-12 | 2022-08-19 | 南京航空航天大学 | 一种卷积神经网络压缩方法及边缘侧fpga加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN117349585B (zh) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200151541A1 (en) | Efficient Convolutional Neural Networks | |
Alaghi et al. | A spectral transform approach to stochastic circuits | |
CN111542839B (zh) | 一种反卷积神经网络的硬件加速方法、装置和电子设备 | |
CN113850389B (zh) | 一种量子线路的构建方法及装置 | |
CN111563599A (zh) | 一种量子线路的分解方法、装置、存储介质及电子装置 | |
EP4071615A1 (en) | Quantum error correction decoding system and method, fault-tolerant quantum error correction system, and chip | |
CN113035280A (zh) | 一种基于深度学习的rbp结合位点预测算法 | |
CN114418105A (zh) | 一种基于量子线路处理量子应用问题的方法及装置 | |
US11704604B2 (en) | Optimization method, apparatus, computer device and storage medium for engine model | |
Chen et al. | An efficient proximal-gradient method for single and multi-task regression with structured sparsity | |
Jiang et al. | Convolutional neural network pruning based on multi-objective feature map selection for image classification | |
CN114399044A (zh) | 一种子阵级稀疏阵列发射波束旁瓣电平优化方法 | |
CN117407966B (zh) | 融合分布式剪枝和遗传算法的多规格钢筋下料方法及装置 | |
KR102643431B1 (ko) | 심층 강화학습을 위한 심층 신경망 학습 가속 장치 및 그 방법 | |
CN117349585B (zh) | 一种基于加速器约束的算子性能优化方法 | |
CN111967184B (zh) | 一种基于序列模型的多目标天线设计方法 | |
Yu et al. | Memristor parallel computing for a matrix-friendly genetic algorithm | |
CN115881209B (zh) | 一种rna二级结构预测的处理方法和装置 | |
CN111723906A (zh) | 一种循环神经网络的加速计算方法、***及相关装置 | |
CN114519429B (zh) | 获取目标体系的可观测量的方法、装置及介质 | |
CN115908909A (zh) | 基于贝叶斯卷积神经网络的进化神经架构搜索方法及*** | |
CN111788584A (zh) | 一种神经网络计算方法和装置 | |
Kwon et al. | Critical heat flux function approximation using genetic algorithms | |
Gao et al. | Multiple sequence alignment based on combining genetic algorithm with chaotic sequences | |
Mühlenstädt et al. | How much data do you need? Part 2: Predicting DL class specific training dataset sizes |
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 |