CN112765552A - 基于数组打包的矩阵乘法的分块参数空间优化方法 - Google Patents

基于数组打包的矩阵乘法的分块参数空间优化方法 Download PDF

Info

Publication number
CN112765552A
CN112765552A CN202110116531.7A CN202110116531A CN112765552A CN 112765552 A CN112765552 A CN 112765552A CN 202110116531 A CN202110116531 A CN 202110116531A CN 112765552 A CN112765552 A CN 112765552A
Authority
CN
China
Prior art keywords
parameter space
matrix multiplication
matrix
program
rpmm
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.)
Pending
Application number
CN202110116531.7A
Other languages
English (en)
Inventor
陈长波
池昊宇
杨文强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing Institute of Green and Intelligent Technology of CAS
Original Assignee
Chongqing Institute of Green and Intelligent Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chongqing Institute of Green and Intelligent Technology of CAS filed Critical Chongqing Institute of Green and Intelligent Technology of CAS
Priority to CN202110116531.7A priority Critical patent/CN112765552A/zh
Publication of CN112765552A publication Critical patent/CN112765552A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Abstract

本发明涉及基于数组打包的矩阵乘法的分块参数空间优化方法,属于计算机数值计算领域,该方法包括以下步骤:S1:输入矩阵乘法算子;S2:获取相关的信息,选取RPMM变换;S3:定义优化Schedule;S4:计算参数空间;S5:计算缓存复杂度约束和向量化约束;S6:对参数空间进行过滤;S7:从候选参数空间中选取优化参数,结合RPMM变换和Schedule,计算矩阵乘法。本发明能够过滤掉那些由缓存和并行理论指导下的无法提供最佳性能的候选参数组合,用以解决将矩阵乘法的分块和并行计算扩展到多维度问题,能够提高矩阵乘法的计算效率。

Description

基于数组打包的矩阵乘法的分块参数空间优化方法
技术领域
本发明涉及基于数组打包的矩阵乘法的分块参数空间优化方法,属于计算机数值计算领域,尤其适用 于基于数组打包的矩阵乘法的分块参数空间优化。
背景技术
深度学习的发展对各个科学领域产生了深远的影响,在自然语言处理(NLP)和计算机视觉(CV)等 人工智能领域有显著的价值。随着卷积神经网络(CNN)、递归神经网络(RNN)、长短时记忆(LSTM) 和生成性对抗性网络(GAN)等多功能深度学习模型的出现,为了实现其广泛部署和应用于各种硬件终端 设备上,尤其是边缘设备和移动终端等,必须将神经网络模型优化到极致。
在工业界和学术界,为了加速各种深度学习(Deep Learning,DL)芯片上的DL模型,将计算映射到 DL高效的芯片是非常重要的。在通用芯片上,高度优化的线性代数库——如基本线性代数子程序(BLAS) 库(如MKL和cuBLAS)——是有效计算DL模型的基础。以卷积操作为例,DL框架将卷积转换为矩阵 乘法,然后调用BLAS库中的通用矩阵乘法(General Matrix Multiplication,GEMM)函数。然而,依赖 于上述库和工具在不同的DL芯片上映射DL模型的缺点是它们通常落后于DL模型的快速发展,因而不 能有效地利用DL芯片。
为了解决DL库和工具的缺陷,以及减轻手动优化每个DL芯片上的DL模型的负担,DL社区求助于 领域特定的编译器技术来拯救。以陈天奇的TVM为例,DL编译器将DL框架中描述的模型定义作为输入, 并在各种DL芯片上生成有效的代码实现作为输出。其中由算子操作和优化参数空间定义共同构成的调优 空间决定了性能的上限,且往往这个空间是巨大的,其中造成优化参数组合爆炸的主要是多维度多层次的 候选分块的参数空间过大,这又和矩阵的大小以及选择的分块策略密切相关。一种分块策略是选择2的幂 次,在许多关于GEMM优化的建议中,常常假设矩阵的大小是2的幂次,这是不现实的。例如,在深层 神经网络中,卷积是通过将其转化为GEMM问题来实现的,其中矩阵的大小不是2的幂次方;另一种策 略则是使用因子,例如陈天奇在2018年的研究“Learning to Optimize TensorPrograms”中使用矩阵大小因 子作为分块大小,这样做的一个好处是避免在代码中生成条件测试带来的开销。然而,当矩阵大小的因素 较少时,在外部情况下,矩阵大小是一个素数,如此狭窄的候选分片大小范围不能保证覆盖最佳的分块大 小。
Sato,Yukinori在2019年的研究“An Autotuning Framework for ScalableExecution of Tiled Code via Iterative Polyhedral Compilation”中提出应该在分块程度和并行负载之间找到最佳的平衡点,以适应缓存 内存的复杂性能行为。但其方法仅考虑了单一并行维度且未能利用缓存复杂度等静态分析手段分析所使用 算子用例的缓存行为特征。
发明内容
有鉴于此,本发明提供基于数组打包的矩阵乘法的分块参数空间优化方法,通过对矩阵乘法循环程序 进行分块参数的优化,过滤掉那些由缓存和并行理论指导下的无法提供最佳性能的候选参数组合,用以解 决将矩阵乘法的分块和并行计算扩展到多维度问题,提高矩阵乘法的计算效率。
为达到上述目的,本发明提供如下技术方案:
基于数组打包的矩阵乘法的分块参数空间优化方法,包括以下步骤:
S1:根据工程系统问题,建立数学模型,提取其中矩阵乘法算子作为输入;
S2:获取矩阵乘法算子中相乘矩阵的维度信息、运算浮点数精度要求、计算机硬件系统的信息,选取 数组打包矩阵乘法(Right Pack Matrix Multiplication,RPMM)变换;
S3:根据RPMM变换定义优化进程(Schedule),对循环程序的分块进行优化;
S4:根据相乘矩阵的维度信息,计算出矩阵乘法算子操作的参数空间;
S5:计算针对RPMM变换的缓存复杂度约束和向量化约束;
S6:根据缓存复杂度和向量化约束,对参数空间进行过滤,得出合理的候选参数空间;
S7:采用迭代方法从候选参数空间中选取优化参数,结合RPMM变换和Schedule,计算矩阵乘法。
进一步,步骤S1和步骤S2所述的矩阵乘法的算子形如:CM×N=AM×K·(BN×K)T,将其中的矩阵AM×K、 BN×K作为输入。特别地,保证输入的两个矩阵列相同,以便计算机在读取数据和判断数据的正确性等的程 序结构简单,减少计算复杂度。
进一步,步骤S2中所述的维度信息为M、K、N的数值,其中,
Figure BSA0000232173910000021
所述 的运算浮点数精度要求为满足精度要求所需的字节数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等处理器。
为了更好的描述本发明,本发明中,
Figure BSA0000232173910000022
表示向上取整,/为浮点数除法,Mt,Mo,Kt,Nt,No为待优化的参数。
进一步,所述的RPMM算法具体实现为:
S401:将矩阵BN×K在N维度上将矩阵按Nt大小进行预分块,每个分块的计算公式为:D[o,k,i]:=B[o·Nt+i,k],同时还要满足o·Nt+i<N,其中,整数i∈[0,Nt-1],整数k∈[0,K-1],整数
Figure BSA0000232173910000031
Figure BSA0000232173910000032
表示向上取整,Nt为待优化的参数之一;
S402:按照
Figure BSA0000232173910000033
进行计算,其中,y∈[0,M-1],x∈[0,N-1]。
需要说明的是,本发明所涉及的RPMM算法来源于“Learning to Optimize TensorPrograms”(TVM) 基于CPU的矩阵乘法实现,本发明在其基础上做了关于分块和向量化的通用抽象。
进一步,步骤S3所述的优化Schedule为对RPMM算法的循环程序进行优化,通过对分块上限的定义, 选取合适的分块因子进行循环程序的分块实现,具体循环程序的分块过程为:
(1)在N维度上进行循环程序的分块,初始对应的循环次数为N次,先将循环程序的循环次数按预 分块从外至内分为
Figure BSA0000232173910000034
和Nt两块,再将预分块的最外层循环的循环次数
Figure BSA0000232173910000035
分为No
Figure BSA0000232173910000036
两块,此时循环程序从外至内的循环次数分别为
Figure BSA0000232173910000037
No、Nt,并对最内层循环 使用向量化技术处理;
(2)在K维度上进行循环程序的分块,初始对应的循环次数为K次,将循环程序从外至内分为
Figure BSA0000232173910000038
和Kt两块,其中,分块后最内层的循环次数Kt为待优化的参数之一;
(3)在M维度上进行循环程序的分块,初始对应的循环次数为M次,现将循环程序从外至内分为
Figure BSA0000232173910000039
Mo、Mt三块,其中,分块后最内层的循环次数Mt为待优化的参数之一。
进一步,步骤S4所述的参数空间G的计算过程为:
S601:计算CPU的核心数P的所有整数因子序列<Px>和对应的因子序列<Py>;其中Px=P/Py
S602:获取矩阵的维度M和N,遍历序列<Px>和<Py>,求得序列Gx=<(No,Nt)>和对应的序列 Gy=<(Mo,Mt)>,其中,No·Nt
Figure BSA00002321739100000310
的因子,Mo·Mt
Figure BSA00002321739100000311
的因子;
S603:获取矩阵的维度K的值,计算K的所有整数因子构成的集合Gk
S604:按顺序遍历对应的序列Gx、Gy,构造集合Gxy={(Mo,Mt,No,Nt)|(Mo,Mt)∈Gy,(No,Nt)∈Gx};
S605:构造参数空间G={(Mo,Mt,No,Nt,Kt)|(Mo,Mt,No,Nt)∈Gxy,Kt∈Gk}。
特别地,参数是以数组的形式(Mo,Mt,No,Nt,Kt)捆绑在一起作为一个元素构造成集合的,选取的时候 一次必须选取一组,并非单独选取。
进一步,步骤S5所述的RPMM的缓存复杂度约束为:T<Zw/Cw
其中,
Figure BSA00002321739100000312
Zw=L2/Dl, Cw=Cl/Dl,α=Nt/Cw
RPMM的向量化约束为:Nt≥min(N,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作为输入。
步骤二:获取矩阵乘法算子中相乘矩阵的维度信息、运算浮点数精度要求、计算机硬件系统的信息, 选取RPMM变换;所述的维度信息为M、K、N的数值,其中,
Figure BSA0000232173910000041
所述的运 算浮点数精度要求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。
进一步,所述的RPMM算法具体实现为:
(1)将矩阵BN×K在N维度上将矩阵按Nt大小进行预分块,计算公式为:D[o,k,i]:=B[o·Nt+i,k], 同时还要满足o·Nt+i<N,其中,整数i∈[0,Nt-1],整数k∈[0,K-1],整数
Figure BSA0000232173910000042
Figure BSA0000232173910000043
表示 向上取整,Nt为待优化的参数之一;
(2)按照
Figure BSA0000232173910000044
进行计算,其中,y∈[0,M-1],x∈[0,N-1]。
步骤三:根据RPMM变换定义优化Schedule,对循环程序的分块进行优化;所述的优化Schedule为 对RPMM算法的循环程序进行优化,通过对分块上限的定义,选取合适的分块因子进行循环程序的分块 实现,具体循环程序的分块过程为:
(1)在N维度上进行循环程序的分块,初始对应的循环次数为N次,先将循环程序的循环次数按预 分块从外至内分为
Figure BSA0000232173910000051
和Nt两块,再将预分块的最外层循环的循环次数
Figure BSA0000232173910000052
分为No
Figure BSA0000232173910000053
两块,此时循环程序从外至内的循环次数分别为
Figure BSA0000232173910000054
No、Nt,并对最内层循环 使用向量化技术处理;
(2)在K维度上进行循环程序的分块,初始对应的循环次数为K次,将循环程序从外至内分为
Figure BSA0000232173910000055
和Kt两块,其中,分块后最内层的循环次数Kt为待优化的参数之一;
(3)在M维度上进行循环程序的分块,初始对应的循环次数为M次,现将循环程序从外至内分为
Figure BSA0000232173910000056
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·Nt
Figure BSA0000232173910000057
的因子,Mo·Mt
Figure BSA0000232173910000058
的因子;例如:当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}。
步骤五:计算针对RPMM变换的缓存复杂度约束和向量化约束;所述的RPMM的缓存复杂度约束为: T<512,
其中,
Figure BSA0000232173910000059
α=Nt/16;
RPMM的向量化约束为:Nt≥min(N,4)。
步骤六:根据缓存复杂度和向量化约束,对参数空间进行过滤,得出合理的候选参数空间。
步骤七:采用迭代方法从候选参数空间中选取优化参数,结合RPMM变换和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 由于不能分块,故不在实施例实验结果考虑范围。
步骤二:获取矩阵乘法算子中相乘矩阵的维度信息、运算浮点数精度要求、计算机硬件系统的信息, 选取RPMM变换;具体数据的相关设定与实施例1相同。
步骤三:根据RPMM变换定义优化Schedule,对循环程序的分块进行优化。
步骤四:根据相乘矩阵的维度信息,计算出矩阵乘法算子操作的参数空间G。
步骤五:计算针对RPMM变换的缓存复杂度约束和向量化约束。
步骤六:根据缓存复杂度和向量化约束,对参数空间进行过滤,得出合理的候选参数空间G′。
步骤七:采用迭代方法从候选参数空间中选取优化参数,结合RPMM变换和Schedule优化的循环程 序,计算矩阵乘法。
本实施例在矩阵乘法计算的性能加速比和参数空间压缩比上进行了对比,其中,性能加速比是通过 TVM默认的矩阵乘法程序和本发明方法程序矩阵计算时间进行对比,参数空间压缩比是通过本发明方法 的参数空间和TVM默认的矩阵乘法程序的参数空间的对比,实验结果表1所示。虽然性能加速比上本发 明方法略逊,但经验告诉我们,性能加速比在[0.95,1.05]的区间是在合理范围内的,即本发明方法能不会 丢失最佳分块,使用过滤后的空间覆盖了最佳的参数配置,并且将原有的参数空间缩减为原来的约 70.661%。
表1实施例2对比实验结果
性能加速比 参数空间压缩比
0.97531 0.70661
实施例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 0.763 1.294 1.249
表3实施例3参数空间压缩比对比实验结果
方法 TVM(factors) TVM(power2) TVM(verbose) 本发明方法
参数空间压缩比 1 23.160 41.625 6.469
本实施例可以看出,本发明在参数空间膨胀不大的情况下,还能够提高24.9%的计算效率。
最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已 经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其做出各种各样的 改变,而不偏离本发明权利要求书所限定的范围。

Claims (7)

1.基于数组打包的矩阵乘法的分块参数空间优化方法,其特征在于,包括以下步骤:
S1:根据工程系统问题,建立数学模型,提取其中矩阵乘法算子作为输入;
S2:获取矩阵乘法算子中相乘矩阵的维度信息、运算浮点数精度要求、计算机硬件系统的信息,选取RPMM变换;
S3:根据RPMM变换定义优化Schedule,对循环程序的分块进行优化;
S4:根据相乘矩阵的维度信息,计算出矩阵乘法算子操作的参数空间;
S5:计算针对RPMM变换的缓存复杂度约束和向量化约束;
S6:根据缓存复杂度和向量化约束,对参数空间进行过滤,得出合理的候选参数空间;
S7:采用迭代方法从候选参数空间中选取优化参数,结合RPMM变换和Schedule优化的循环程序,计算矩阵乘法。
2.根据权利要求1所述的基于数组打包的矩阵乘法的分块参数空间优化方法,其特征在于,步骤S1和步骤S2所述的矩阵乘法的算子形如:CM×N=AM×K·(BN×K)T,将其中的矩阵AM×K、BN×K作为输入。
3.根据权利要求1所述的基于数组打包的矩阵乘法的分块参数空间优化方法,其特征在于,步骤S2中所述的维度信息为M、K、N的数值,其中,
Figure FSA0000232173900000011
所述的运算浮点数精度要求为满足精度要求所需的字节数
Figure FSA0000232173900000019
所述的计算机硬件系统的信息包含:CPU的核心数P,计算机缓存系统第二级缓存的大小L2,计算机缓存系统缓存行的大小
Figure FSA00002321739000000110
向量化大小V。
4.根据权利要求1所述的基于数组打包的矩阵乘法的分块参数空间优化方法,其特征在于,所述的RPMM算法具体实现为:
S401:将矩阵BN×K在N维度上将矩阵按Nt大小进行预分块,计算公式为:D[o,k,i]:=B[o·Nt+i,k],同时还要满足o·Nt+i<N,其中,整数i∈[0,Nt-1],整数k∈[0,K-1],整数
Figure FSA00002321739000000111
表示向上取整,Nt为待优化的参数之一;
S402:按照
Figure FSA0000232173900000013
进行计算,其中,y∈[0,M-1],x∈[0,N-1]。
5.根据权利要求1所述的基于数组打包的矩阵乘法的分块参数空间优化方法,其特征在于,步骤S3所述的优化Schedule为对RPMM算法的循环程序进行优化,通过对分块上限的定义,选取合适的分块因子进行循环程序的分块实现,具体循环程序的分块过程为:
(1)在N维度上进行循环程序的分块,初始对应的循环次数为N次,先将循环程序的循环次数按预分块从外至内分为
Figure FSA0000232173900000014
和Nt两块,再将预分块的最外层循环的循环次数
Figure FSA0000232173900000015
分为No
Figure FSA0000232173900000016
两块,此时循环程序从外至内的循环次数分别为
Figure FSA0000232173900000017
No、Nt,并对最内层循环使用向量化技术处理;
(2)在K维度上进行循环程序的分块,初始对应的循环次数为K次,将循环程序从外至内分为
Figure FSA0000232173900000018
和Kt两块,其中,分块后最内层的循环次数Kt为待优化的参数之一;
(3)在M维度上进行循环程序的分块,初始对应的循环次数为M次,现将循环程序从外至内分为
Figure FSA0000232173900000021
Mo、Mt三块,其中,分块后最内层的循环次数Mt为待优化的参数之一。
6.根据权利要求1所述的基于数组打包的矩阵乘法的分块参数空间优化方法,其特征在于,步骤S4所述的参数空间G的计算过程为:
S601:计算CPU的核心数P的所有整数因子序列<Px>和对应的因子序列<Py>;其中Px=P/Py
S602:获取矩阵的维度M和N,遍历序列<Px>和<Py>,求得序列Gx=<(No,Nt)>和对应的序列Gy=<(Mo,Mt)>,其中,No·Nt
Figure FSA0000232173900000022
的因子,Mo·Mt
Figure FSA0000232173900000023
的因子;
S603:获取矩阵的维度K的值,计算K的所有整数因子构成的集合Gk
S604:按顺序遍历对应的序列Gx、Gy,构造集合Gxy={(Mo,Mt,No,Nt)|(Mo,Mt)∈Gy,(No,Nt)∈Gx};
S605:构造参数空间G={(Mo,Mt,No,Nt,Kt)|(Mo,Mt,No,Nt)∈Gxy,Kt∈Gk}。
7.根据权利要求1所述的基于数组打包的矩阵乘法的分块参数空间优化方法,其特征在于,步骤S5所述的RPMM的缓存复杂度约束为:T<Zw/Cw
其中,
Figure FSA0000232173900000024
Figure FSA0000232173900000026
α=Nt/Cw
RPMM的向量化约束为:Nt≥min(N,Vw),其中,
Figure FSA0000232173900000025
CN202110116531.7A 2021-01-21 2021-01-21 基于数组打包的矩阵乘法的分块参数空间优化方法 Pending CN112765552A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110116531.7A CN112765552A (zh) 2021-01-21 2021-01-21 基于数组打包的矩阵乘法的分块参数空间优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110116531.7A CN112765552A (zh) 2021-01-21 2021-01-21 基于数组打包的矩阵乘法的分块参数空间优化方法

Publications (1)

Publication Number Publication Date
CN112765552A true CN112765552A (zh) 2021-05-07

Family

ID=75706382

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110116531.7A Pending CN112765552A (zh) 2021-01-21 2021-01-21 基于数组打包的矩阵乘法的分块参数空间优化方法

Country Status (1)

Country Link
CN (1) CN112765552A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116755771A (zh) * 2023-07-24 2023-09-15 太初(无锡)电子科技有限公司 一种基于软硬件交互反馈的矩阵乘模块合法性验证方法
CN116755771B (zh) * 2023-07-24 2024-04-26 太初(无锡)电子科技有限公司 一种基于软硬件交互反馈的矩阵乘模块合法性验证方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170344514A1 (en) * 2016-05-31 2017-11-30 Palo Alto Research Center Incorporated System and method for speeding up general matrix-matrix multiplication on the gpu
US20180004709A1 (en) * 2016-07-01 2018-01-04 Palo Alto Research Center Incorporated System and method for gpu maximum register count optimization applied to general matrix-matrix multiplication
CN108229654A (zh) * 2016-12-14 2018-06-29 上海寒武纪信息科技有限公司 神经网络卷积运算装置及方法
US20190179869A1 (en) * 2017-12-12 2019-06-13 Facebook, Inc. Hardware accelerator pre-configured with coefficients for matrix-transform operations
WO2020050886A1 (en) * 2018-09-05 2020-03-12 Futurewei Technologies, Inc. Compiler-level general matrix multiplication configuration optimization
CN112199636A (zh) * 2020-10-15 2021-01-08 清华大学 适用于微处理器的快速卷积方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170344514A1 (en) * 2016-05-31 2017-11-30 Palo Alto Research Center Incorporated System and method for speeding up general matrix-matrix multiplication on the gpu
US20180004709A1 (en) * 2016-07-01 2018-01-04 Palo Alto Research Center Incorporated System and method for gpu maximum register count optimization applied to general matrix-matrix multiplication
CN108229654A (zh) * 2016-12-14 2018-06-29 上海寒武纪信息科技有限公司 神经网络卷积运算装置及方法
US20190179869A1 (en) * 2017-12-12 2019-06-13 Facebook, Inc. Hardware accelerator pre-configured with coefficients for matrix-transform operations
WO2020050886A1 (en) * 2018-09-05 2020-03-12 Futurewei Technologies, Inc. Compiler-level general matrix multiplication configuration optimization
CN112199636A (zh) * 2020-10-15 2021-01-08 清华大学 适用于微处理器的快速卷积方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
龙卓群;王晓瑜;王昌明;: "基于DCT预测编码的Epiphany-OpenCL大矩阵乘并行计算", 自动化与仪表, no. 07, pages 22 - 27 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116755771A (zh) * 2023-07-24 2023-09-15 太初(无锡)电子科技有限公司 一种基于软硬件交互反馈的矩阵乘模块合法性验证方法
CN116755771B (zh) * 2023-07-24 2024-04-26 太初(无锡)电子科技有限公司 一种基于软硬件交互反馈的矩阵乘模块合法性验证方法

Similar Documents

Publication Publication Date Title
Lu et al. SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs
CN107168683B (zh) 申威26010众核cpu上gemm稠密矩阵乘高性能实现方法
Elsen et al. Fast sparse convnets
CN110378468B (zh) 一种基于结构化剪枝和低比特量化的神经网络加速器
CN109543140B (zh) 一种卷积神经网络加速器
CN110276450B (zh) 基于多粒度的深度神经网络结构化稀疏系统和方法
CN112200300B (zh) 卷积神经网络运算方法及装置
Wittek Algorithm 950: Ncpol2sdpa—sparse semidefinite programming relaxations for polynomial optimization problems of noncommuting variables
WO2021026225A1 (en) System and method of accelerating execution of a neural network
CN113570031B (zh) 卷积运算的处理方法、电子设备及计算机可读存储介质
CN112463159B (zh) 编译方法、装置、电子设备和存储介质
Boukaram et al. Hierarchical matrix operations on GPUs: Matrix-vector multiplication and compression
Lee et al. Flexible group-level pruning of deep neural networks for on-device machine learning
CN110782009B (zh) 基于ARMv8体系的计算内核优化方法
CN112463160A (zh) 编译方法、装置、电子设备和存储介质
Asgari et al. Copernicus: Characterizing the performance implications of compression formats used in sparse workloads
CN113239591A (zh) 面向dcu集群的大规模有限元网格并行分区的方法及装置
CN112765552A (zh) 基于数组打包的矩阵乘法的分块参数空间优化方法
CN112765551A (zh) 一种双重约化的矩阵乘法的分块参数空间优化方法
Liu et al. High-performance tensor learning primitives using GPU tensor cores
Boukaram et al. H2opus-tlr: High performance tile low rank symmetric factorizations using adaptive randomized approximation
Ding et al. Model-Platform Optimized Deep Neural Network Accelerator Generation through Mixed-Integer Geometric Programming
Du et al. Uniform convergence of a nonlinear energy-based multilevel quantization scheme
Yu et al. GPU-based JFNG method for power system transient dynamic simulation
Nodine et al. I/O overhead and parallel VLSI architectures for lattice computations

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