面向向量处理器的低位宽数据矩阵向量化转置方法及系统技术方案

技术编号:30772740 阅读:23 留言:0更新日期:2021-11-10 12:45
本发明专利技术公开了一种面向向量处理器的低位宽数据矩阵向量化转置方法及系统,方法包括:将低位宽数据矩阵存储在双倍速率同步动态随机存储器中;调用直接存储器访问操作,将低位宽数据矩阵从双倍速率同步动态随机存储器加载到片上阵列存储器空间;在阵列存储器空间中,对加载到片上阵列存储器空间后的矩阵进行转置处理,得到转置后的矩阵。本发明专利技术能够高效的实现低位宽数据矩阵的转置操作。的实现低位宽数据矩阵的转置操作。的实现低位宽数据矩阵的转置操作。

【技术实现步骤摘要】
面向向量处理器的低位宽数据矩阵向量化转置方法及系统


[0001]本专利技术涉及向量处理器
,尤其涉及一种面向向量处理器的低位宽数据矩阵向量化转置方法及系统。

技术介绍

[0002]向量处理器是一种新型的体系结构,如图1所示,包含进行标量运算的标量处理单元(SPU)和进行向量运算的向量处理单元(VPU),以及负责数据传输的直接存储器访问(Direct Memory Access,DMA)部件等。SPU由标量处理部件SPE和标量存储器SM构成。VPU由L个向量处理部件VPE和阵列存储器AM构成,L个向量处理部件VPE以单指令多数据(SIMD)的方式协作运行,支持指定VPE 部件的关闭与开启,但不支持多个VPE之间的数据交互。单个VPE一次可以处理1个8字节数据(如FP64、Int64),也可以处理2个4字节数据(如FP32,Int32)。DMA部件负责SM与DDR、AM与DDR之间的数据传输,其操作的最小粒度也是8字节。
[0003]矩阵转置是矩阵运算中最常见的一种操作,其效率高低对应用的性能影响较大。对于单个元素位宽为8字节的矩阵来说,只需通过DMA操作将数据在向量处理器的AM空间与片外DDR之间进行搬移,便可高效完成整个矩阵的转置操作。如上述所述,DMA操作的最小粒度是8字节。因此仅通过DMA操作的方式来进行矩阵转置操作将不再适合于单个元素位宽为4字节的矩阵。
[0004]因此,如何高效实现低位宽数据矩阵的转置操作,是一项亟待解决的问题。

技术实现思路

[0005]有鉴于此,本专利技术提供了一种面向向量处理器的低位宽数据矩阵向量化转置方法,能够高效的实现低位宽数据矩阵的转置操作。
[0006]本专利技术提供了一种面向向量处理器的低位宽数据矩阵向量化转置方法,包括:将低位宽数据矩阵存储在双倍速率同步动态随机存储器中;调用直接存储器访问操作,将所述低位宽数据矩阵从所述双倍速率同步动态随机存储器加载到片上空间;在所述阵列存储器空间中,对加载到所述片上阵列存储器空间后的矩阵进行转置处理,得到转置后的矩阵。
[0007]其中,所述低位宽数据矩阵的维度为;其中,所述调用直接存储器访问操作,将低位宽数据矩阵从双倍速率同步动态随机存储器加载到片上阵列存储器空间,包括:调用直接存储器访问操作,将所述低位宽数据矩阵的子矩阵加载到片上阵列存储器空间中,变为,其中
、,和的大小均由阵列存储器的空间大小来决定,其中L表示向量处理单元中向量处理部件的数量。
[0008]优选地,所述在所述阵列存储器空间中,对加载到所述片上阵列存储器空间后的矩阵进行转置处理,得到转置后的矩阵,包括:步骤1、初始化i=0,其中,i表示M维上的块index;步骤2、初始化j=0,其中,j表示N维上的块index;步骤3、将所述阵列存储器空间中的低位宽数据矩阵的大小为的子块矩阵的数据加载到4个向量寄存器VR0、VR1、VR2和VR3中;步骤4、基于向量寄存器VR0和向量寄存器VR1,L个向量处理部件进行低打包操作,将低打包后结果存储在向量寄存器VR4中;步骤5、基于向量寄存器VR0和向量寄存器VR1,L个向量处理部件进行高打包操作,将高打包后结果存储在向量寄存器VR6中;步骤6、基于向量寄存器VR2和向量寄存器VR3,L个向量处理部件进行低打包操作,将低打包后结果存储在向量寄存器VR5中;步骤7、基于向量寄存器VR2和向量寄存器VR3,L个向量处理部件进行高打包操作,将高打包后结果存储在向量寄存器VR7中;步骤8、将向量寄存器VR4和向量寄存器VR5中的数据以地址取模方式交错地存回阵列存储器空间;步骤9、将阵列存储器空间中位置大小为的数据加载到向量寄存器VR0和向量寄存器VR1中;步骤10、将向量寄存器VR6和向量寄存器VR7中的数据以地址取模方式交错地存回阵列存储器空间;步骤11、将阵列存储器空间中位置大小为的数据加载到向量寄存器VR2和向量寄存器VR3中;步骤12、初始化k=0,其中,K表示处理向量处理部件的index;步骤13、通过设置向量单元的Mask状态开启第k个与k+1个向量处理部件,其他向量处理部件均关闭,将向量寄存器VR0

VR1中对应第k和k+1个向量处理部件的数据存储回阵列存储器空间对应位置;将向量寄存器VR2和向量寄存器VR3中对应第k和k+1个向量处理部件的数据存储回阵列存储器空间对应位置;步骤14、令k = k + 2;步骤15、判断k是否小于L,若是,则返回步骤13,若否,则执行步骤16;步骤16、通过设置向量单元的Mask状态,开启所有L个向量处理部件;
步骤17、令j = j + 1;步骤18、判断j是否小于,若是,则返回步骤3,若否,则执行步骤19;步骤19、令i = i + 1;步骤20、判断i是否小于,若是,则返回步骤2,若否,则执行步骤21步骤21、调用直接存储器访问操作,将所述转置后的矩阵的子矩阵从所述阵列存储器空间存储至双倍速率同步动态随机存储器指定位置;步骤22、判断的子矩阵是否处理完毕,若否,则循环执行以上加载、转置步骤,直到完成所有子矩阵的转置。
[0009]一种面向向量处理器的低位宽数据矩阵向量化转置系统,包括:存储模块,用于将低位宽数据矩阵存储在双倍速率同步动态随机存储器中;加载模块,用于调用直接存储器访问操作,将所述低位宽数据矩阵从所述双倍速率同步动态随机存储器加载到片上阵列存储器空间;转置处理模块,用于在所述阵列存储器空间中,对加载到所述片上阵列存储器空间后的矩阵进行转置处理,得到转置后的矩阵;其中,所述低位宽数据矩阵的维度为;其中,所述加载模块具体用于:调用直接存储器访问操作,将所述低位宽数据矩阵的子矩阵加载到片上阵列存储器空间中,变为,其中、,和的大小均由阵列存储器的空间大小来决定,其中L表示向量处理单元中向量处理部件的数量。
[0010]优选地,所述转置处理模块具体用于:步骤1、初始化i=0,其中,i表示M维上的块index;步骤2、初始化j=0,其中,j表示N维上的块index;步骤3、将所述阵列存储器空间中的低位宽数据矩阵的大小为的子块矩阵的数据加载到4个向量寄存器VR0、VR1、VR2和VR3中;步骤4、基于向量寄存器VR0和向量寄存器VR1,L个向量处理部件进行低打包操作,
将低打包后结果存储在向量寄存器VR4中;步骤5、基于向量寄存器VR0和向量寄存器VR1,L个向量处理部件进行高打包操作,将高打包后结果存储在向量寄存器VR6中;步骤6、基于向量寄存器VR2和向量寄存器VR3,L个向量处理部件进行低打包操作,将低打包后结果存储在向量寄存器VR5中;步骤7、基于向量寄存器VR2和向量寄存器VR3,L个向量处理部件进行高打包操作,将高打包后结果存储在向量寄存器VR7中;步骤8、将向量寄存器VR4和向量寄存器VR5中的数据以地址取模方式交错地存回阵列存储器空间;步骤9、将阵列存储器空间中位置大小为的数据加载到向量寄存器VR0和向量寄存器VR1中;步骤10、将向量寄存器VR6和向量寄存器VR7中的数据以地址取模方式交错地存回阵列本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向向量处理器的低位宽数据矩阵向量化转置方法,其特征在于,包括:将低位宽数据矩阵存储在双倍速率同步动态随机存储器中;调用直接存储器访问操作,将所述低位宽数据矩阵从所述双倍速率同步动态随机存储器加载到片上阵列存储器空间;在所述阵列存储器空间中,对加载到所述片上阵列存储器空间后的矩阵进行转置处理,得到转置后的矩阵;其中,所述低位宽数据矩阵的维度为;其中,所述调用直接存储器访问操作,将低位宽数据矩阵从双倍速率同步动态随机存储器加载到片上阵列存储器空间,包括:调用直接存储器访问操作,将所述低位宽数据矩阵的子矩阵加载到片上阵列存储器空间中,变为,其中、,和的大小均由阵列存储器的空间大小来决定,其中L表示向量处理单元中向量处理部件的数量。2.根据权利要求1所述的方法,其特征在于,所述在所述阵列存储器空间中,对加载到所述片上阵列存储器空间后的矩阵进行转置处理,得到转置后的矩阵,包括:步骤1、初始化i=0,其中,i表示M维上的块index;步骤2、初始化j=0,其中,j表示N维上的块index;步骤3、将所述阵列存储器空间中的低位宽数据矩阵的大小为的子块矩阵的数据加载到4个向量寄存器VR0、VR1、VR2和VR3中;步骤4、基于向量寄存器VR0和向量寄存器VR1,L个向量处理部件进行低打包操作,将低打包后结果存储在向量寄存器VR4中;步骤5、基于向量寄存器VR0和向量寄存器VR1,L个向量处理部件进行高打包操作,将高打包后结果存储在向量寄存器VR6中;步骤6、基于向量寄存器VR2和向量寄存器VR3,L个向量处理部件进行低打包操作,将低打包后结果存储在向量寄存器VR5中;步骤7、基于向量寄存器VR2和向量寄存器VR3,L个向量处理部件进行高打包操作,将高打包后结果存储在向量寄存器VR7中;步骤8、将向量寄存器VR4和向量寄存器VR5中的数据以地址取模方式交错地存回阵列存储器空间;步骤9、将阵列存储器空间中位置大小为的数据加载到向量寄存器
VR0和向量寄存器VR1中;步骤10、将向量寄存器VR6和向量寄存器VR7中的数据以地址取模方式交错地存回阵列存储器空间;步骤11、将阵列存储器空间中位置大小为的数据加载到向量寄存器VR2和向量寄存器VR3中;步骤12、初始化k=0,其中,K表示向量处理部件的index;步骤13、通过设置向量单元的Mask状态开启第k个与k+1个向量处理部件,其他向量处理部件均关闭,将向量寄存器VR0

VR1中对应第k和k+1个向量处理部件的数据存储回阵列存储器空间对应位置;将向量寄存器VR2和向量寄存器VR3中对应第k和k+1个向量处理部件的数据存储回阵列存储器空间对应位置;步骤14、令k = k + 2;步骤15、判断k是否小于L,若是,则返回步骤13,若否,则执行步骤16;步骤16、通过设置向量单元的Mask状态,开启所有L个向量处理部件;步骤17、令j = j + 1;步骤18、判断j是否小于,若是,则返回步骤3,若否,则执行步骤19;步骤19、令i = i + 1;步骤20、判断i是否小于,若是,则返回步骤2,若否,则执行步骤21;步骤21、调用直接存储器访问操作,将所述转置后的矩阵的子矩阵从所述阵列存储器空间存储至双倍速率同步动态随机存储器指定位置;步骤22、判断的子矩阵是否处理完毕,若否,则循环执行以...

【专利技术属性】
技术研发人员:王庆林梅松竹许金伟李东升姜晶菲苏华友李荣春乔鹏刘杰
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

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

1