System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于昇腾910平台的复数矩阵向量乘法计算方案制造技术_技高网

一种基于昇腾910平台的复数矩阵向量乘法计算方案制造技术

技术编号:40912257 阅读:2 留言:0更新日期:2024-04-18 14:40
本发明专利技术公开了一种在华为昇腾910NPU平台上计算复数矩阵向量乘法的方案。包含以下步骤:S1、计算任务划分,将计算任务均匀分配给910NPU的各个计算核心并行计算;S2、从全局内存读取复数矩阵和复数向量,采用vector运算单元进行虚实分离,将复数矩阵拆分为实部矩阵和虚部矩阵;S3、调用vector运算单元完成矩阵向量乘法运算;S4、使用vector指令合并实部向量和虚部向量得到最终的复数向量;本方法与传统方法相比,采用vector计算单元完成矩阵向量乘法的所有计算步骤,特别地,本方法提出了基于vector运算单元的虚实分离和合并策略,提高了复数矩阵向量乘法在NPU上的计算效率。

【技术实现步骤摘要】

本专利技术属于高性能计算、算力优化领域,提出了一种基于国产昇腾910npu的复数矩阵向量乘法优化计算方案。


技术介绍

1、矩阵向量乘法(gemv)是线性代数中的一个基本操作,它在科学计算、工程计算和数据分析等领域都有广泛的应用。例如,在机器学习中,矩阵向量乘法被广泛用于神经网络的前向传播和反向传播过程中;在信号处理中,矩阵向量乘法被用于滤波器设计和信号重构等任务中。矩阵向量乘法的计算复杂度为o(n2),其中n表示矩阵的维数。因此,当矩阵较大时,其计算成本会非常高。为了加速矩阵向量乘法的计算,许多优化技术被提出来,例如基于缓存的优化、基于向量化指令的优化、基于并行计算的优化等。

2、npu是神经网络处理单元(neural processing unit)的缩写,是一种专门用于加速人工神经网络计算的处理器。与通用处理器(cpu)和图形处理器(gpu)不同,npu采用高度优化的硬件架构,能够在相同的功耗和面积下提供更高的计算性能和能效比。npu的出现主要是为了满足人工智能应用对计算性能和能效比的极高要求。随着人工智能技术的快速发展,传统的cpu和gpu已经无法满足日益复杂的计算需求,npu逐渐成为许多人工智能应用的算力基础。

3、华为昇腾910是华为自产自研的npu,其中的计算核心为ai core,每个ai core的硬件架构如图2所示,ai core中的计算单元主要包括:cube unit(矩阵计算单元),vectorunit(向量计算单元)和scalar unit(标量计算单元),用来完成不同类型的数据计算。aicore中存在内部存储,ai core需要把外部存储中的数据加载到内部存储中,才能完成相应的计算。ai core的内部存储包括:l1 buffer(l1缓冲区),l0 buffer(l0缓冲区),unifiedbuffer(ub统一缓冲区)和scalar buffer(标量缓冲区)。

4、目前华为npu软件生态没有通用gpu完善,一些基础算子的优化加速工作具有重大意义。在910npu上进行复数的矩阵向量乘法存在一定的困难,因为910npu不支持直接的复数类型计算,需要将复数拆分为实部和虚部进行计算,而且910上也没有直接的拆分方法,如果采用标量操作配合for循环一个个读取实部和虚部,那么计算效率将十分低下,所以应设法使用高速的向量运算单元进行虚实分离操作,同时也需要设计高效的向量化的矩阵向量乘法计算方案,配合优化的任务划分策略,才能提高复数矩阵乘法在npu上的计算效率。


技术实现思路

1、为了充分发挥华为昇腾910 npu算力,加速复数矩阵向量乘计算,为深度学习和科学计算等领域提供算力支持,本专利技术提出了一种在昇腾910上使用vector指令完成复数矩阵向量乘的计算方法。该方法具有适用性强、计算速度快等特点,具有较好的实用价值。

2、基于昇腾910 npu的复数矩阵向量乘计算方案,如图1所示,包含以下步骤:

3、s1、计算任务划分,将计算任务均匀分配给910 npu的各个计算核心并行计算;

4、s2、从全局内存读取复数矩阵和复数向量,采用vector运算单元进行虚实分离,将复数矩阵拆分为实部矩阵和虚部矩阵;

5、s3、调用vector运算单元完成矩阵向量乘法运算;

6、s4、使用vector指令合并实部向量和虚部向量得到最终的复数向量;

7、本专利技术所述的方法中,所述步骤s1具体为:

8、昇腾910具有多个ai core计算核心,一般为30个或者32个。计算任务需要均匀划分到每个ai core上,尽量保证计算负载均衡,从分利用所有计算资源,最大化并行性。

9、如图3所示,结果向量y需要被划分为多个任务段进行计算,首先需要确定一个计算段大小,这个段大小根据ub内存的大小决定。假设段大小为m,由于是复数计算,在本专利技术的方案中,ub中需要存储两个大小为m×m的矩阵和两个大小为m的向量,每个元素都是单精度,占用的内存大小为2×(m×m+m)×8字节,设ub的存储空间为k字节,那么m取满足2×(m×m+m)×8≤k的最大值。

10、然后根据段大小m对结果向量y进行分段,假设结果向量大小为m,那么划分出来的段的数量为假设计算核心数量为c,核心编号为i∈{0,1,2,...,c-1},那么每个核心的计算任务量为:

11、

12、计算任务循环分配到各个计算核心上,即0任务段分配个0号计算核心,1号任务段分配给1号计算核心,以此类推,当分配到最后一个计算核心还有任务段没有分配完时,则折回继续从0号计算核心开始分配。这样的块划分策略可以最大程度保证负载均衡,同时能提高l2 cache命中率,减少数据搬运时间。

13、本专利技术所述的方法中,所述步骤s2具体为:

14、对于昇腾910npu,如果需要调用vector、scalar单元处理数据,需要将数据从全局内存加载到ub内存。对一个复数矩阵,如果要将其分解成实部矩阵和虚部矩阵,传统的方法是将整个复数矩阵读入ub内存中,然后在ub上开辟两个存储区域,一个存储实部矩阵,一个存储虚部矩阵,再用for循环,基于scalar操作,将实部和虚部分别放入两个缓冲区,即可完成虚实分离。但是910上scalar运算能力很弱,大量的scalar操作会降低计算效率,无法充分发挥910的计算能力。为了提高复数矩阵向量乘的计算效率,必须使用高效的虚实分离方法。

15、本专利技术所使用的虚实分离方法完全基于vector运算单元,不使用scalar运算单元。如图4所以,首先预先生成一零相互间隔的mask向量,mask向量的长度和计算任务段的长度相同。mask向量在cpu上生成,然后读取到ub内存,一次读取,多次使用。之后将复数矩阵搬入ub内存,从复数矩阵起始地址出开始搬运,由于采用列优先存储,调用vector计算单元将矩阵的每一列与mask向量按元素相乘。这样矩阵中偶数位保持原来的值不变,奇数位变为零,从而达到了保留实部,而将虚部置零的效果。最后在从全局内存搬运一次复数矩阵,这次从复数矩阵起始地址往后偏移一个单位开始搬运,这样ub中的数据就是以虚部开头、虚实间隔分布的复数矩阵,再将这个复数矩阵的每一列同mask向量按元素相乘,即可得到保留虚部,而将实部置零的效果,如此便得到了实部矩阵和虚部矩阵。此方法相比于传统的方法,多了进行了一次矩阵搬运,也多使用了一份ub空间,但是不需要使用scalar运算,而全部使用vector运算。

16、本专利技术所述的方法中,所述步骤s3具体为:

17、经过步骤s2,已经得到了虚实分离的实部矩阵和虚部矩阵,也得到了分离的实部向量和虚部向量。此步完成一个任务段的部分矩阵向量乘运算。如图3所示,计算一个任务段的结果,需要循环读取a矩阵的一行块,然后读取向量x对应的一段,完成一个小块的矩阵向量乘,然后将结果进行累加即完成了一个任务段的部分矩阵向量乘。

18、将a的本文档来自技高网...

【技术保护点】

1.本专利技术提出的基于华为昇腾910NPU的复数矩阵向量乘法计算方案,其特征在于,包含以下步骤:

2.根据权利要求1所述复数矩阵向量乘法计算方案,其特征在于,所述步骤S1具体为:

3.根据权利要求1本专利技术所述的方法,其特征在于,步骤S2中具体为:

4.根据权利要求1所述的方法,其特征在于,步骤S3中,采用vector运算单元完成矩阵向量乘法运算。经过上一步骤,复数矩阵已经拆分为实部矩阵和虚部矩阵,复数向量也拆分为实部向量和虚部向量。vector运算单元可以高效计算两个向量之间的元素相乘,由于矩阵数据在内存中的存储方式是列优先存储,在转置情况下,采用vector运算单元完成矩阵向量乘法需要先计算矩阵每行元素和向量之间的对应元素乘,然后将所有元素进行累加。在非转置情况下,需要将矩阵每列的元素与向量之间进行对应元素乘法,并且每次累加得到的结果。

5.根据权利要求1所述的方法,其特征在于,步骤S4中,使用vector指令完成实部结果向量和虚部结果向量的合并。首先将虚部结果向量存储回全局内存,然后从全局内存中往前偏移一个单位读取回来,然后将虚部结果向量与实部结果向量相加得到最后的复数结果向量。

...

【技术特征摘要】

1.本发明提出的基于华为昇腾910npu的复数矩阵向量乘法计算方案,其特征在于,包含以下步骤:

2.根据权利要求1所述复数矩阵向量乘法计算方案,其特征在于,所述步骤s1具体为:

3.根据权利要求1本发明所述的方法,其特征在于,步骤s2中具体为:

4.根据权利要求1所述的方法,其特征在于,步骤s3中,采用vector运算单元完成矩阵向量乘法运算。经过上一步骤,复数矩阵已经拆分为实部矩阵和虚部矩阵,复数向量也拆分为实部向量和虚部向量。vector运算单元可以高效计算两个向量之间的元素相...

【专利技术属性】
技术研发人员:陆璐钟昊阳
申请(专利权)人:深圳爱特思信息技术有限公司
类型:发明
国别省市:

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

1