基于ARMv8多核处理器的小型和不规则矩阵乘优化方法技术

技术编号:32132393 阅读:27 留言:0更新日期:2022-01-29 19:34
本发明专利技术公开了一种基于ARMv8多核处理器的小型和不规则矩阵乘优化方法,利用ARMv8多核处理器实现,其步骤包括:建立矩阵存储空间,用于存放矩阵A与矩阵B相乘得到的结果矩阵C;ARMv8多核处理器对矩阵B执行打包操作,并将打包操作和小型矩阵乘的计算操作同步进行。本方法对于不同模式的矩阵乘选择不同打包策略来节省打包开销,使用更加高效的边缘微内核来处理边缘案例,此外还采用更加合理的并行化方法来并行化矩阵乘,这些对ARMv8多核处理器中的小型和不规则矩阵乘的性能进行了大幅优化,这能促进ARMV8多核处理器上其他实际应用的发展。展。展。

【技术实现步骤摘要】
基于ARMv8多核处理器的小型和不规则矩阵乘优化方法


[0001]本专利技术涉及高性能计算领域,尤其涉及一种基于ARMv8多核处理器的小型和不规则矩阵乘优化方法。

技术介绍

[0002]通用矩阵乘法(GEMM)是从传统科学模拟到新兴的深度学习高性能计算(HPC)应用的基本构建块。如何对GEMM进行优化,是一个被大量研究的领域,但现有的线性代数库方法主要针对大型和规则形状的GEMM(即当矩阵的两个维度或多或少相同时)。
[0003]由于HPC工作负载的多样性和不断发展,GEMM内核的输入矩阵的大小和形状可能会因所使用的应用程序算法和输入数据而异。例如,计算流体动力学(CFD)中,如有限元方法和波动方程,通常采用在小矩阵上运行的GEMM实现,以在现代多核系统上实现良好的可扩展性能。例如,流行的分子动力学模拟器CP2K在大小为5
×
5和23
×
23的矩阵上执行GEMM。又例如,用于CFD的Nek5000高阶求解器的内核严重依赖于8
×
8矩阵的GEMMs计算。除了这些传统的HPC应用程序之外本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于ARMv8多核处理器的小型矩阵乘优化方法,其特征在于,利用ARMv8多核处理器实现,其步骤包括:S1,对于参与相乘运算的两个矩阵,乘号左侧的矩阵称为矩阵A,乘号右侧的矩阵称为矩阵B,判断矩阵A和矩阵B是否被转置,在相乘运算中,若矩阵没被转置称为N模式,矩阵被转置称为T模式,若矩阵A为N模式,矩阵B为T模式,则将该小型矩阵乘法称为NT模式,若矩阵A为N模式,矩阵B为N模式,则将该小型矩阵乘法称为NN模式;建立矩阵存储空间,用于存放矩阵A与矩阵B相乘得到的结果矩阵C;S2,对于NT模式的小型矩阵乘,ARMv8多核处理器对矩阵B执行打包操作,并将打包操作和小型矩阵乘的计算操作同步进行;将ARMv8多核处理器中负责打包的微内核称为打包微内核,将ARMv8多核处理器中负责计算的微内核称为主微内核;为了将打包的访存开销隐藏在计算过程中,实现矩阵乘的微内核要在ARMv8处理器器中需要具有足够高的计算访存比CMR,其中CMR的计算公式和约束条件为:其中mr和nr分别为ARMv8多核处理器上的向量寄存器所能存储的最大矩阵的行数和列数,同时也是主微内核在向量寄存器上所占用的存储空间矩阵的行数和列数;C0为计算访存比CMR的下限;ARMv8多核处理器提供了32个128bit的向量寄存器,该32个128bit的向量寄存器命名为寄存器V0、V1、V2、

、V31,因此mr和nr还需要满足的约束条件为:其中j表示ARMv8多核处理器的一个向量寄存器可以加载数据元素的个数,%表示求模;以计算访存比的约束条件、mr和nr的约束条件为目标函数,使用拉格朗日乘子法,求解得到mr0和nr0,作为主微内核在向量寄存器上所占用的存储空间矩阵的行数和列数的取值;在NT模式下实现小型矩阵乘时,用于对矩阵B进行打包的微内核,所占用向量寄存器的存储空间矩阵的维度为mp
×
np,其中mp=mr0,np=nr0/N0,经过N0次调用打包微内核,得到一个主微内核实现小型矩阵乘计算所需的数据;在对矩阵B进行打包的过程中,ARMv8多核处理器沿着矩阵A的行方向访问矩阵A,沿着矩阵B的列方向访问矩阵B,使用内积公式更新矩阵C;ARMv8多核处理器在沿上述方向对矩阵A和矩阵B分别进行访问的过程中,使用mp次加载指令将矩阵A的元素存储到从V0开始依次至V(mp

1)的mp个向量寄存器中,并使用np次加载指令将矩阵B的元素存储到从V(mp)开始依次至V(mp

1+np)的np个向量寄存器中;ARMv8多核处理器在微内核打包过程中执行mp
×
np次向量乘加融合指令FMA,以产生矩阵C的N0
×
mp
×
np个中间结果元素,这些元素存储在从V(mp+np)依次至V31的向量寄存器中,同时将从V(mp)开始依次至V(mp

1+np)的np个向量寄存器中的前N0个元素存储到内存空间Bc,Bc为临时开辟的用于存放矩阵B的部分元素的连续内存空间,该N0个元素之间在内存空间Bc上的物理距离为nr0(N0
×
np)个元素,从V(mp)开始依次至V(mp

1+np)的np个向量寄存器中的相同位置的元素存储到内存空间Bc的相邻位置上;所述的用于打包的微内核中实现小型矩阵乘计算使用内积公式,主微内核实现小型矩阵乘计算使用外积公式;
对于NN模式的小型矩阵乘,如果矩阵B的大小超过ARMv8多核处理器的一级缓存后,ARMv8多核处理器对矩阵B执行打包操作,将其打包到内存空间Bc中,并将打包操作和小型矩阵乘的计算操作同步进行,该打包操作和计算操作均通过迭代来实现,否则直接执行步骤S3;每次迭代中,将矩阵A的元素存储到从V0开始依次至V(mp

1)的mp个向量寄存器中,将矩阵B的元素存储到从V(mp)开始依次至V(mp

1+np)的np个向量寄存器中;从V0开始依次至V(mp

1)的mp个向量寄存器,在每次迭代中,每个向量寄存器都只有一个元素用来参与小型矩阵乘的计算操作,从而需要N0次迭代,才能使得每个向量寄存器中的元素均参与到小型矩阵乘的计算操作...

【专利技术属性】
技术研发人员:董德尊方建滨杨维玲苏醒庞征斌
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1