一种多维数组重排方法、装置、设备、存储介质及产品与流程

摘要: 本发明涉及计算机,尤其涉及一种多维数组重排方法、装置、设备、存储介质及产品。背景技术:1、随着大模型和智能驾驶模型的发展,对芯片算力的要求越来越高。npu(ne...
一种多维数组重排方法、装置、设备、存储介质及产品与流程

本发明涉及计算机,尤其涉及一种多维数组重排方法、装置、设备、存储介质及产品。

背景技术:

1、随着大模型和智能驾驶模型的发展,对芯片算力的要求越来越高。npu(neuralprocessing unit,神经网络处理器)芯片与gpgpu(general-purpose computing ongraphics processing units,通用图形处理器)芯片占到市场比重的大部分份额。尤其是智能驾驶模型的越发成熟,对延时的敏感度越来越高。因此无论是在npu架构上还是gpgpu架构上外部存储/globalmemory访问的延时较高,所以gpgpu/npu芯片在运算过程中应该尽量少与外部存储单元交互,以免引入过多的延迟。

2、由于gpgpu/npu内部的访存容量有限且算子之间的数据并行方式并不一致,所以切分tensor(多维数组结构)的方式不一致的情况普遍存在,从而导致神经网络上有拓扑关系的算子输入输出的tensor之间存在内存排布上的差异。传统的解决方案是将tensor写出的外部存储,然后进行数据的重新排布,最后再通过axi总线装载到内部存储中。但这种方法使用固定的索引数组顺序,不具备通用性。

技术实现思路

1、本发明提供了一种多维数组重排方法、装置、设备、存储介质及产品,以实现通用的在片上内存中对多维数组的重排方法。

2、根据本发明的一方面,提供了一种多维数组重排方法,包括:

3、对片上内存中的目标多维数组进行结构分析,根据结构分析的结果进行切分得到所述目标多维数组的基本切分单元;

4、获取重排需求,根据所述重排需求与所述基本切分单元生成重排索引数组;

5、根据所述重排索引数组在片上内存中对所述目标多维数组进行重排。

6、进一步地,对片上内存中的目标多维数组进行结构分析,根据结构分析的结果进行切分得到所述目标多维数组的基本切分单元,包括:

7、确定片上内存中的所述目标多维数组的源地址切分轴和目标地址切分轴;

8、根据所述源地址切分轴和所述目标地址切分轴对所述目标多维数组进行切分,得到所述基本切分单元。

9、进一步地,根据所述源地址切分轴和所述目标地址切分轴对所述目标多维数组进行切分,得到所述基本切分单元,包括:

10、按照所述源地址切分轴对所述目标多维数组进行切分,得到第一切分单元;

11、按照所述目标地址切分轴对所述第一切分单元进一步切分,得到所述基本切分单元。

12、进一步地,根据所述重排需求与所述基本切分单元生成重排索引数组,包括:

13、根据所述重排需求确定所述目标多维数组重排后的目标形状;

14、根据所述目标形状确定所述基本切分单元的目标拼接方式,将所述目标拼接方式转换成所述重排索引数组。

15、进一步地,根据所述重排索引数组在片上内存中对所述目标多维数组进行重排,包括:

16、获取所述目标多维数组的基本切分单元;

17、根据所述重排索引数组在片上内存中对所述基本切分单元进行拼接,得到重排结果。

18、进一步地,得到重排结果之后,还包括:

19、将所述重排结果写入芯片外部存储。

20、根据本发明的另一方面,提供了一种多维数组重排装置,包括:

21、基本切分单元确定模块,用于对片上内存中的目标多维数组进行结构分析,根据结构分析的结果进行切分得到所述目标多维数组的基本切分单元;

22、重排索引数组生成模块,用于获取重排需求,根据所述重排需求与所述基本切分单元生成重排索引数组;

23、重排模块,用于根据所述重排索引数组在片上内存中对所述目标多维数组进行重排。

24、可选的,基本切分单元确定模块还用于:

25、确定片上内存中的所述目标多维数组的源地址切分轴和目标地址切分轴;

26、根据所述源地址切分轴和所述目标地址切分轴对所述目标多维数组进行切分,得到所述基本切分单元。

27、可选的,基本切分单元确定模块还用于:

28、按照所述源地址切分轴对所述目标多维数组进行切分,得到第一切分单元;

29、按照所述目标地址切分轴对所述第一切分单元进一步切分,得到所述基本切分单元。

30、可选的,重排索引数组生成模块还用于:

31、根据所述重排需求确定所述目标多维数组重排后的目标形状;

32、根据所述目标形状确定所述基本切分单元的目标拼接方式,将所述目标拼接方式转换成所述重排索引数组。

33、可选的,重排模块还用于:

34、获取所述目标多维数组的基本切分单元;

35、根据所述重排索引数组在片上内存中对所述基本切分单元进行拼接,得到重排结果。

36、可选的,装置还包括重排结果写入模块,用于将所述重排结果写入芯片外部存储。

37、根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:

38、至少一个处理器;以及

39、与所述至少一个处理器通信连接的存储器;其中,

40、所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的多维数组重排方法。

41、根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的多维数组重排方法。

42、根据本发明的另一方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本发明任一实施例所述的多维数组重排方法的步骤。

43、本发明公开的多维数组重排方法,首先对片上内存中的目标多维数组进行结构分析,根据结构分析的结果进行切分得到目标多维数组的基本切分单元;然后获取重排需求,根据重排需求与基本切分单元生成重排索引数组;最后根据重排索引数组在片上内存中对目标多维数组进行重排。本发明公开的片上内存重排方法,通过生成重排索引数组,并根据重排索引数组在片上内存中对目标多维数组进行重排,可以在片上内存实现就地重排,可以避免了反复从外部存储读取-写回的过程,减少外部总线压力,并且通过重排索引数组可以对多维数组的重排操作进行描述,根据重排索引数组的描述进行重排可以减少重复数据搬运,提高内存效率,降低系统功耗。

44、应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。

1.一种多维数组重排方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,对片上内存中的目标多维数组进行结构分析,根据结构分析的结果进行切分得到所述目标多维数组的基本切分单元,包括:

3.根据权利要求2所述的方法,其特征在于,根据所述源地址切分轴和所述目标地址切分轴对所述目标多维数组进行切分,得到所述基本切分单元,包括:

4.根据权利要求1所述的方法,其特征在于,根据所述重排需求与所述基本切分单元生成重排索引数组,包括:

5.根据权利要求1所述的方法,其特征在于,根据所述重排索引数组在片上内存中对所述目标多维数组进行重排,包括:

6.根据权利要求5所述的方法,其特征在于,得到重排结果之后,还包括:

7.一种多维数组重排装置,其特征在于,包括:

8.一种电子设备,其特征在于,所述电子设备包括:

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-6中任一项所述的多维数组重排方法。

10.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1-6中任一项所述的多维数组重排方法的步骤。