CN112765551B - 一种双重约化的矩阵乘法的分块参数空间优化方法 - Google Patents
一种双重约化的矩阵乘法的分块参数空间优化方法 Download PDFInfo
- Publication number
- CN112765551B CN112765551B CN202110116434.8A CN202110116434A CN112765551B CN 112765551 B CN112765551 B CN 112765551B CN 202110116434 A CN202110116434 A CN 202110116434A CN 112765551 B CN112765551 B CN 112765551B
- Authority
- CN
- China
- Prior art keywords
- parameter space
- matrix multiplication
- matrix
- dnmm
- dimension
- 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
- 239000011159 matrix material Substances 0.000 title claims abstract description 93
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000005457 optimization Methods 0.000 title claims abstract description 32
- 238000004364 calculation method Methods 0.000 claims abstract description 28
- 230000009466 transformation Effects 0.000 claims abstract description 18
- 238000001914 filtration Methods 0.000 claims abstract description 5
- 238000000638 solvent extraction Methods 0.000 claims description 18
- 230000000903 blocking effect Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 10
- 125000004122 cyclic group Chemical group 0.000 claims description 9
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 claims description 4
- 238000013178 mathematical model Methods 0.000 claims description 4
- 230000015654 memory Effects 0.000 abstract description 5
- 238000002474 experimental method Methods 0.000 description 8
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 230000001133 acceleration Effects 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 3
- 238000011773 genetically engineered mouse model Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 101100459910 Arabidopsis thaliana NCS1 gene Proteins 0.000 description 1
- 241001323321 Pluto Species 0.000 description 1
- 230000003042 antagnostic effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000012795 verification 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
本发明涉及一种双重约化的矩阵乘法的分块参数空间优化方法,属于计算机数值计算领域,该方法包括以下步骤:S1:输入矩阵乘法算子;S2:获取相关的信息,选取DNMM变换;S3:定义优化Schedule;S4:计算参数空间;S5:计算缓存复杂度约束和向量化约束;S6:对参数空间进行过滤;S7:从候选参数空间中选取优化参数,结合DNMM变换和Schedule,计算矩阵乘法。本发明能够过滤掉那些由缓存和并行理论指导下的无法提供最佳性能的候选参数组合,用以解决将矩阵乘法的分块和并行计算扩展到多维度问题,能够提高矩阵乘法的计算效率。
Description
技术领域
本发明涉及一种双重约化的矩阵乘法的分块参数空间优化方法,属于计算机数值计算领域,尤其适用于基于数组打包的矩阵乘法的分块参数空间优化。
背景技术
深度学习的发展对各个科学领域产生了深远的影响,在自然语言处理(NLP)和计算机视觉(CV)等人工智能领域有显著的价值。随着卷积神经网络(CNN)、递归神经网络(RNN)、长短时记忆(LSTM)和生成性对抗性网络(GAN)等多功能深度学习模型的出现,为了实现其广泛部署和应用于各种硬件终端设备上,尤其是边缘设备和移动终端等,必须将神经网络模型优化到极致。
在工业界和学术界,为了加速各种深度学习(Deep Learning,DL)芯片上的DL模型,将计算映射到DL高效的芯片是非常重要的。在通用芯片上,高度优化的线性代数库一一如基本线性代数子程序(BLAS)库(如MKL和cuBLAS)——是有效计算DL模型的基础。以卷积操作为例,DL框架将卷积转换为矩阵乘法,然后调用BLAS库中的通用矩阵乘法(GeneralMatrix Multiplication,GEMM)函数。然而,依赖于上述库和工具在不同的DL芯片上映射DL模型的缺点是它们通常落后于DL模型的快速发展,因而不能有效地利用DL芯片。
为了解决DL库和工具的缺陷,以及减轻手动优化每个DL芯片上的DL模型的负担,DL社区求助于领域特定的编译器技术来拯救。以陈天奇的TVM为例,DL编译器将DL框架中描述的模型定义作为输入,并在各种DL芯片上生成有效的代码实现作为输出。其中由算子操作和优化参数空间定义共同构成的调优空间决定了性能的上限,且往往这个空间是巨大的,其中造成优化参数组合爆炸的主要是多维度多层次的候选分块的参数空间过大,这又和矩阵的大小以及选择的分块策略密切相关。一种分块策略是选择2的幂次,在许多关于GEMM优化的建议中,常常假设矩阵的大小是2的幂次,这是不现实的。例如,在深层神经网络中,卷积是通过将其转化为GEMM问题来实现的,其中矩阵的大小不是2的幂次方;另一种策略则是使用因子,例如陈天奇在2018年的研究“Learning to Optimize Tensor Programs”中使用矩阵大小因子作为分块大小,这样做的一个好处是避免在代码中生成条件测试带来的开销。然而,当矩阵大小的因素较少时,在外部情况下,矩阵大小是一个素数,如此狭窄的候选分片大小范围不能保证覆盖最佳的分块大小。
Sato,Yukinori在2019年的研究“An Autotuning Framework for ScalableExecution of Tiled Code via Iterative Polyhedral Compilation”中提出应该在分块程度和并行负载之间找到最佳的平衡点,以适应缓存内存的复杂性能行为。但其方法仅考虑了单一并行维度且未能利用缓存复杂度等静态分析手段分析所使用算子用例的缓存行为特征。
发明内容
有鉴于此,本发明提供一种双重约化的矩阵乘法的分块参数空间优化方法,通过对矩阵乘法循环程序进行分块参数的优化,过滤掉那些由缓存和并行理论指导下的无法提供最佳性能的候选参数组合,用以解决将矩阵乘法的分块和并行计算扩展到多维度问题,提高矩阵乘法的计算效率。
为达到上述目的,本发明提供如下技术方案:
一种双重约化的矩阵乘法的分块参数空间优化方法,包括以下步骤:
S1:根据工程系统问题,建立数学模型,提取其中矩阵乘法算子作为输入;
S2:获取矩阵乘法算子中相乘矩阵的维度信息、运算浮点数精度要求、计算机硬件系统的信息,选取双重约化矩阵乘法(Dense No-pack Matrix Multiplication,DNMM)变换;
S3:根据DNMM变换定义优化进程(Schedule),对循环程序的分块进行优化;
S4:根据相乘矩阵的维度信息,计算出矩阵乘法算子操作的参数空间;
S5:计算针对DNMM变换的缓存复杂度约束和向量化约束;
S6:根据缓存复杂度和向量化约束,对参数空间进行过滤,得出合理的候选参数空间;
S7:采用迭代方法从候选参数空间中选取优化参数,结合DNMM变换和Schedule,计算矩阵乘法。
进一步,步骤S1和步骤S2所述的矩阵乘法的算子形如:CM×N=AM×K·(BN×K)T,将其中的矩阵AM×K、BN×K作为输入。特别地,保证输入的两个矩阵列相同,以便计算机在读取数据和判断数据的正确性等的程序结构简单,减少计算复杂度。
进一步,步骤S2中所述的维度信息为M、K、N的数值,其中,所述的运算浮点数精度要求为满足精度要求所需的字节数Dl;所述的计算机硬件系统的信息包含:CPU的核心数P,计算机缓存系统第二级缓存的大小L2(单位:字节),计算机缓存系统缓存行的大小Cl(单位:字节),向量化大小V(单位:字节)。其中,常用的运算浮点数精度float32对应的字节数Dl=4,运算浮点数精度float64对应的字节数Dl=5;在Linux系统中可利用lscpu或getconf-a等命令获取缓存信息(缓存大小L2,缓存行大小Cl);通过获取硬件支持的高级向量扩展指令集AVX(Advanced Vector Extensions)架构获取向量化大小,用于将N维度上矩阵向量化提高计算效率。特别地,本发明不仅仅针对CPU上的矩阵计算,还可以针对GPU等处理器。
为了更好的描述本发明,本发明中,表示向上取整,/为浮点数除法,Mt,Mo,Kt,Nt,No为待优化的参数。
进一步,所述的DNMM算法具体实现为:
S201:在K维度上按照Kt大小进行分块乘法计算,公式为:其中,整数i∈[0,Kt-1],整数x∈[0,N-1],整数y∈[0,M-1],整数/>表示向上取整,Kt为待优化的参数之一;
S202:按照进行求和计算。
需要说明的是,本发明所涉及的DNMM算法来源于“Learning to Optimize TensorPrograms”(TVM)基于CPU的矩阵乘法实现,本发明在其基础上做了关于分块和向量化的通用抽象。
进一步,步骤S3所述的优化Schedule为对DNMM算法的循环程序进行优化,通过对分块上限的定义,选取合适的分块因子进行循环程序的分块实现,具体循环程序的分块过程为:
(1)在N维度上进行循环程序的分块,初始对应的循环次数为N次,现将循环程序从外至内分为No、Nt三块,其中,分块后最内层的循环次数Nt为待优化的参数之一;
(2)在K维度上进行循环程序的分块,初始对应的循环次数为K次,将循环程序从外至内分为和Kt两块,并对最内层循环使用向量化技术处理;
(3)在M维度上进行循环程序的分块,初始对应的循环次数为M次,现将循环程序从外至内分为Mo、Mt三块,其中,分块后最内层的循环次数Mt为待优化的参数之一。
进一步,步骤S4所述的参数空间G的计算过程为:
S401:计算CPU的核心数P的所有整数因子序列<Px>和对应的因子序列<Py>;其中Px=P/Py;
S402:获取矩阵的维度M和N,遍历序列<Px>和<Py>,求得序列Gx=<(No,Nt)>和对应的序列Gy=<(Mo,Mt)>,其中,No·Nt为的因子,Mo·Mt为/>的因子;
S403:获取矩阵的维度K的值,计算K的所有整数因子构成的集合Gk;
S404:按顺序遍历对应的序列Gx、Gy,构造集合Gxy={(Mo,Mt,No,Nt)|(Mo,Mt)∈Gy,(No,Nt)∈Gx};
S405:构造参数空间G={(Mo,Mt,No,Nt,Kt)|(Mo,Mt,No,Nt)∈Gxy,Kt∈Gk}。
特别地,参数是以数组的形式(Mo,Mt,No,Nt,Kt)捆绑在一起作为一个元素构造成集合的,选取的时候一次必须选取一组,并非单独选取。
进一步,步骤S5所述的DNMM的缓存复杂度约束为:T<Zw/Cw,
其中,Zw=L2/Dl,Cw=Cl/Dl;
DNMM的向量化约束为:Kt≥min(K,Vw),其中,Vw=V/Dl。
进一步,步骤S6具体为:参数空间G中随机选择一组参数数组,计算出缓存复杂度和向量化约束,对参数空间中不符合约束条件的(Mo,Mt,No,Nt,Kt)进行排除,得出合理的候选参数空间。
值得一提的是,本发明将解决的问题,不仅限于深度学习编译优化框架下的分块参数空间优化,还有应用于诸如MATLAB,ATLAS,PLUTO等用于矩阵运算分块优化工具中。
本发明的有益效果在于:本发明提供了一种双重约化的矩阵乘法的分块参数空间优化方法,结合缓存复杂度分析,重新定义初始化的参数空间,通过对矩阵乘法循环程序进行分块参数的优化,过滤掉那些由缓存和并行理论指导下的无法提供最佳性能的候选参数组合,用以解决将矩阵乘法的分块和并行计算扩展到多维度问题,能够提高矩阵乘法的计算效率。
附图说明
为了使本发明的目的、技术方案,本发明提供如下附图进行说明:
图1为本发明提供的一种双重约化的矩阵乘法的分块参数空间优化方法流程构架图。
具体实施方式
为使本发明的技术方案、实施例的目的以及系统架构的优点等更为明晰,下面将结合附图1,对本发明的优选实施例进行详细的描述。
实施例1:计算机实验平台配置如下:操作系统为64位Linux4.4.0,编译器为GCC5.4.0,处理器为Intel(R)Core(TM)i7 G9700F,CPU主频为3.00GHz,核心数为8,内存为8GB。针对工程系统问题仿真实验中的数学模型在数值求解过程中的矩阵乘法问题,本发明提供了“一种双重约化的矩阵乘法的分块参数空间优化方法”,结合图1,具体步骤为:
步骤一:数学模型进行数值求解可转化为线性方程,形如:“a·x=b”,进一步求解需要计算x=a-1·b,提取其中矩阵乘法算子作为输入;所述的矩阵乘法的算子形如:CM×N=AM×K·(BN×K)T,将其中的矩阵AM×K=a-1、BN×K=bT作为输入。
步骤二:获取矩阵乘法算子中相乘矩阵的维度信息、运算浮点数精度要求、计算机硬件系统的信息,选取DNMM变换;所述的维度信息为M、K、N的数值,其中,所述的运算浮点数精度要求float32为满足精度要求所需的字节数Dl=4B;所述的计算机硬件系统的信息包含:CPU的核心数P=8,计算机缓存系统第二级缓存的大小L2=32KB,计算机缓存系统缓存行的大小Cl=64B,向量化大小V=16B。进一步,Zw=L2/Dl=8·1024,Cw=Cl/Dl=16,Vw=V/Dl=4。
进一步,所述的DNMM算法具体实现为:
(1)在K维度上按照Kt大小进行分块乘法计算,公式为:其中,整数i∈[0,kt-1],整数x∈[0,N-1],整数y∈[0,M-1],整数/>表示向上取整,Kt为待优化的参数之一;
(2)按照进行求和计算。
步骤三:根据DNMM变换定义优化Schedule,对循环程序的分块进行优化;所述的优化Schedule为对DNMM算法的循环程序进行优化,通过对分块上限的定义,选取合适的分块因子进行循环程序的分块实现,具体循环程序的分块过程为:
(1)在N维度上进行循环程序的分块,初始对应的循环次数为N次,现将循环程序从外至内分为No、Nt三块,其中,分块后最内层的循环次数Nt为待优化的参数之一;
(2)在K维度上进行循环程序的分块,初始对应的循环次数为K次,将循环程序从外至内分为和Kt两块,并对最内层循环使用向量化技术处理;
(3)在M维度上进行循环程序的分块,初始对应的循环次数为M次,现将循环程序从外至内分为Mo、Mt三块,其中,分块后最内层的循环次数Mt为待优化的参数之一。
步骤四:根据相乘矩阵的维度信息,计算出矩阵乘法算子操作的参数空间
(1):计算CPU的核心数8的所有整数因子序列<Px>=<1,2,4,8>和对应的因子序列<Py>==<8,4,2,1>;
(2):获取矩阵的维度M和N,遍历序列<Px>和<Py>,求得序列Gx=<(No,Nt)>和对应的序列Gy=<(Mo,Mt)>,其中,No·Nl为的因子,Mo·Mt为/>的因子;例如:当M=4时,Gy=<(1,1),(1,1),((1,2),(2,1)),((1,4),(4,1),(2,2))>;
(3):获取矩阵的维度K的值,计算K的所有整数因子构成的集合Gk;
(4):按顺序遍历对应的序列Gx、Gy,构造集合Gxy={(Mo,Mt,No,Nt)|(Mo,Mt)∈Gy,(No,Nt)∈Gx};
(5):构造参数空间G={(Mo,Mt,No,Nt,Kt)|(Mo,Mt,No,Nt)∈Gxy,Kt∈Gk}。
步骤五:计算针对DNMM变换的缓存复杂度约束和向量化约束;所述的DNMM的缓存复杂度约束为:T<512,
其中,
DNMM的向量化约束为:Kt≥min(K,4)。
步骤六:根据缓存复杂度和向量化约束,对参数空间进行过滤,得出合理的候选参数空间。
步骤七:采用迭代方法从候选参数空间中选取优化参数,结合DNMM变换和Schedule优化的循环程序,计算矩阵乘法。
经过当下最为流行的深度学习编译框架之一的TVM中加以验证,本发明方法能够实现优化参数空间的矩阵乘法计算,满足32位浮点数计算精度的要求,矩阵计算的正确性得到了保证。
实施例2:计算机实验平台配置如下:操作系统为64位Linux4.4.0,编译器为GCC5.4.0,处理器为Intel(R)Core(TM)i7 G9700F,CPU主频为3.00GHz,核心数为8,内存为8GB。针对小(Small)、中(Medium)、大(Large)规模不同维度的矩阵乘法问题进行性能对比,Small={1,8,16},Medium={64,256},Large={1024,4096},本发明提供了“一种双重约化的矩阵乘法的分块参数空间优化方法”,结合图1,包含以下步骤:
步骤一:为保证实验数据样本够大,对每个维度进行343次随机生成矩阵实验,将生成的矩阵作为矩阵乘法算子的输入。
例如,小规模矩阵乘法问题,M∈Small、K∈Small、N∈Small。需要说明的是:M×N×K维度为1×1×1由于不能分块,故不在实施例实验结果考虑范围。
步骤二:获取矩阵乘法算子中相乘矩阵的维度信息、运算浮点数精度要求、计算机硬件系统的信息,选取DNMM变换;具体数据的相关设定与实施例1相同。
步骤三:根据DNMM变换定义优化Schedule,对循环程序的分块进行优化。
步骤四:根据相乘矩阵的维度信息,计算出矩阵乘法算子操作的参数空间G。
步骤五:计算针对DNMM变换的缓存复杂度约束和向量化约束。
步骤六:根据缓存复杂度和向量化约束,对参数空间进行过滤,得出合理的候选参数空间G′。
步骤七:采用迭代方法从候选参数空间中选取优化参数,结合DNMM变换和Schedule优化的循环程序,计算矩阵乘法。
本实施例在矩阵乘法计算的性能加速比和参数空间压缩比上进行了对比,其中,性能加速比是通过TVM默认的矩阵乘法程序和本发明方法程序矩阵计算时间进行对比,参数空间压缩比是通过本发明方法的参数空间和TVM默认的矩阵乘法程序的参数空间的对比,实验结果表1所示。虽然性能加速比上本发明方法略逊,但经验告诉我们,性能加速比在[0.95,1.05]的区间是在合理范围内的,即本发明方法能不会丢失最佳分块,使用过滤后的空间覆盖了最佳的参数配置,并且将原有的参数空间缩减为原来的约71.085%。
表1实施例2对比实验结果
性能加速比 | 参数空间压缩比 |
1.04263 | 0.71085 |
实施例3:由于实施例2考虑的维度都是2的幂次,有利于矩阵乘法的分块计算,在实施例2的计算机配置的基础上,现针对特殊的维度上无明显分块的素数,采用本发明方法进行性能对比实验。采用本发明的方法具体实施步骤与实施例2相同。
本实施例中,M∈{7,11,13}、K∈{23,67,191,383}、N∈{23,67,191,383},同样对每个维度进行343次随机生成矩阵实验。所不同的是,本实施例中,由于素数无法分解,从而无法简单的进行程序的分块,故而需要对TVM提供的矩阵算法进行改进,选取TVM提供的计算策略,以便提升计算效率。
TVM提供了“factors”、“power2”和“verbose”,其中,factors为默认的矩阵乘法的分块策略,为维度因子分块策略;power2为维度向下兼容的最大幂数的因子分块策略;verbose为前两者策略所有因子的总和进行分块的策略。例如:对M维度采用power2的策略,在TVM中的程序语句为:cfg.define_split(″tile_x″,M,num_outputs=3,policy=″power2″)。需要说明的是,本实施例对所有维度都采取相同的分块策略。
本实施例在矩阵乘法计算的性能加速比和参数空间压缩比上进行了对比,实验结果如表2和表3所示。其中,性能加速比是通过TVM默认(factors)的矩阵乘法程序和本发明方法程序矩阵计算时间进行对比,参数空间压缩比是通过本发明方法的参数空间和TVM默认(factors)的矩阵乘法程序的参数空间的对比。
表2实施例3性能加速比对比实验结果
方法 | TVM(factors) | TVM(power2) | TVM(verbose) | 本发明方法 |
性能加速比 | 1 | 1.307 | 1.640 | 1.848 |
表3实施例3参数空间压缩比对比实验结果
方法 | TVM(factors) | TVM(power2) | TVM(verbose) | 本发明方法 |
参数空间压缩比 | 1 | 1.500 | 5.042 | 8.625 |
本实施例可以看出,本发明虽然在参数空间膨胀较大,但大幅度提高了84.8%的计算效率。
最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其做出各种各样的改变,而不偏离本发明权利要求书所限定的范围。
Claims (1)
1.一种双重约化的矩阵乘法的分块参数空间优化方法,其特征在于,包括以下步骤:
S1:根据工程系统问题,建立数学模型,提取其中矩阵乘法算子作为输入;
S2:获取矩阵乘法算子中相乘矩阵的维度信息、运算浮点数精度要求、计算机硬件系统的信息,选取双重约化的DNMM变换;
S3:根据DNMM变换定义优化Schedule,对循环程序的分块进行优化;
S4:根据相乘矩阵的维度信息,计算出矩阵乘法算子操作的参数空间;
S5:计算针对DNMM变换的缓存复杂度约束和向量化约束;
S6:根据缓存复杂度和向量化约束,对参数空间进行过滤,得出合理的候选参数空间;
S7:采用迭代方法从候选参数空间中选取优化参数,结合DNMM变换和Schedule优化的循环程序,计算矩阵乘法;
所述的DNMM算法具体实现为:
S201:在K维度上按照Kt大小进行分块乘法计算,公式为:其中,整数i∈[0,Kt-1],整数x∈[0,N-1],整数y∈[0,M-1],整数/>表示向上取整,Kt为待优化的参数之一;
S202:按照进行求和计算;
步骤S3所述的优化Schedule为对DNMM算法的循环程序进行优化,通过对分块上限的定义,选取合适的分块因子进行循环程序的分块实现,具体循环程序的分块过程为:
(1)在N维度上进行循环程序的分块,初始对应的循环次数为N次,现将循环程序从外至内分为No、Nt三块,其中,分块后最内层的循环次数Nt为待优化的参数之一;
(2)在K维度上进行循环程序的分块,初始对应的循环次数为K次,将循环程序从外至内分为和Kt两块,并对最内层循环使用向量化技术处理;
(3)在M维度上进行循环程序的分块,初始对应的循环次数为M次,现将循环程序从外至内分为Mo、Mt三块,其中,分块后最内层的循环次数Mt为待优化的参数之一;
步骤S1和步骤S2所述的矩阵乘法的算子形如:CM×N=AM×K·(BN×K)T,将其中的矩阵AM×K、BN×K作为输入;步骤S2中所述的维度信息为M、K、N的数值,其中,所述的运算浮点数精度要求为满足精度要求所需的字节数Dl;
所述的计算机硬件系统的信息包含:CPU的核心数P,计算机缓存系统第二级缓存的大小L2,计算机缓存系统缓存行的大小Cl,向量化大小V;
步骤S4所述的参数空间G的计算过程为:
S401:计算CPU的核心数P的所有整数因子序列<Px>和对应的因子序列<Py>;其中Px=P/Py;
S402:获取矩阵的维度M和N,遍历序列<Px>和<Py>,求得序列Gx=<(No,Nt)>和对应的序列Gy=<(Mo,Mt)>,其中,No·Nt为的因子,Mo·Mt为/>的因子;
S403:获取矩阵的维度K的值,计算K的所有整数因子构成的集合Gk;
S404:按顺序遍历对应的序列Gx、Gy,构造集合Gxy={(Mo,Mt,No,Nt)|(Mo,Mt)∈Gy,(No,Nt)∈Gx};
S405:构造参数空间G={(Mo,Mt,No,Nt,Kt)|(Mo,Mt,No,Nt)∈Gxy,Kt∈Gk};
步骤S5所述的DNMM的缓存复杂度约束为:T<Zw/Cw,
其中,Zw=L2/Dl,Cw=Cl/Dl;
DNMM的向量化约束为:Kt≥min(K,Vw),其中,Vw=V/Dl。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110116434.8A CN112765551B (zh) | 2021-01-21 | 2021-01-21 | 一种双重约化的矩阵乘法的分块参数空间优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110116434.8A CN112765551B (zh) | 2021-01-21 | 2021-01-21 | 一种双重约化的矩阵乘法的分块参数空间优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112765551A CN112765551A (zh) | 2021-05-07 |
CN112765551B true CN112765551B (zh) | 2024-05-07 |
Family
ID=75706359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110116434.8A Active CN112765551B (zh) | 2021-01-21 | 2021-01-21 | 一种双重约化的矩阵乘法的分块参数空间优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112765551B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530276A (zh) * | 2013-09-25 | 2014-01-22 | 中国科学技术大学 | 一种基于龙芯3b的自适应矩阵乘法优化方法 |
CN104636316A (zh) * | 2015-02-06 | 2015-05-20 | 中国人民解放军国防科学技术大学 | 面向gpdsp的大规模矩阵乘法计算的方法 |
EP3474484A1 (en) * | 2017-10-17 | 2019-04-24 | Koninklijke Philips N.V. | Cryptographic device with updatable shared matrix |
US10515135B1 (en) * | 2017-10-17 | 2019-12-24 | Xilinx, Inc. | Data format suitable for fast massively parallel general matrix multiplication in a programmable IC |
WO2020046859A1 (en) * | 2018-08-27 | 2020-03-05 | Neuralmagic Inc. | Systems and methods for neural network convolutional layer matrix multiplication using cache memory |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10061748B2 (en) * | 2015-12-11 | 2018-08-28 | Sap Se | Adaptive tile matrix representation and multiplication |
-
2021
- 2021-01-21 CN CN202110116434.8A patent/CN112765551B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530276A (zh) * | 2013-09-25 | 2014-01-22 | 中国科学技术大学 | 一种基于龙芯3b的自适应矩阵乘法优化方法 |
CN104636316A (zh) * | 2015-02-06 | 2015-05-20 | 中国人民解放军国防科学技术大学 | 面向gpdsp的大规模矩阵乘法计算的方法 |
EP3474484A1 (en) * | 2017-10-17 | 2019-04-24 | Koninklijke Philips N.V. | Cryptographic device with updatable shared matrix |
US10515135B1 (en) * | 2017-10-17 | 2019-12-24 | Xilinx, Inc. | Data format suitable for fast massively parallel general matrix multiplication in a programmable IC |
WO2020046859A1 (en) * | 2018-08-27 | 2020-03-05 | Neuralmagic Inc. | Systems and methods for neural network convolutional layer matrix multiplication using cache memory |
Non-Patent Citations (1)
Title |
---|
面向多核向量处理器的矩阵乘法向量化方法;刘仲;田希;;计算机学报(10);第79-92页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112765551A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Franchetti et al. | SPIRAL: Extreme performance portability | |
Lu et al. | SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs | |
Elsen et al. | Fast sparse convnets | |
CN107168683B (zh) | 申威26010众核cpu上gemm稠密矩阵乘高性能实现方法 | |
Wittek | Algorithm 950: Ncpol2sdpa—sparse semidefinite programming relaxations for polynomial optimization problems of noncommuting variables | |
CN112200300A (zh) | 卷积神经网络运算方法及装置 | |
CN112463159B (zh) | 编译方法、装置、电子设备和存储介质 | |
CN104182209A (zh) | 一种基于PETSc的GCRO-DR算法并行处理方法 | |
CN112765552B (zh) | 基于数组打包的矩阵乘法的分块参数空间优化方法 | |
CN108875914B (zh) | 对神经网络数据进行预处理和后处理的方法和装置 | |
Turner et al. | Neural architecture search as program transformation exploration | |
CN112463160A (zh) | 编译方法、装置、电子设备和存储介质 | |
Oberhuber et al. | TNL: Numerical library for modern parallel architectures | |
Zhao et al. | Towards scalable spectral embedding and data visualization via spectral coarsening | |
Asgari et al. | Copernicus: Characterizing the performance implications of compression formats used in sparse workloads | |
CN112765551B (zh) | 一种双重约化的矩阵乘法的分块参数空间优化方法 | |
Wu | Review on FPGA-based accelerators in deep learning | |
Uddin et al. | Rational krylov subspace method (rksm) for solving the lyapunov equations of index-1 descriptor systems and application to balancing based model reduction | |
Abidi et al. | Adaptive rational block Arnoldi methods for model reductions in large-scale MIMO dynamical systems | |
Holzmüller | Efficient neighbor-finding on space-filling curves | |
Boukaram et al. | H2opus-tlr: High performance tile low rank symmetric factorizations using adaptive randomized approximation | |
Ida et al. | QR factorization of block low-rank matrices with weak admissibility condition | |
Nodine et al. | I/O overhead and parallel VLSI architectures for lattice computations | |
CN113296954A (zh) | 一种基于图论与组合优化的大规模有向图平衡划分方法 | |
Franco et al. | Towards the continuous limit of cluster integrable systems |
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 |