一种基于昇腾AI处理器的跨步切片算子处理方法及装置

文档序号:27681075发布日期:2021-11-30 23:41阅读:197来源:国知局
一种基于昇腾AI处理器的跨步切片算子处理方法及装置
一种基于昇腾ai处理器的跨步切片算子处理方法及装置
技术领域
1.本技术涉及人工智能领域,具体而言,涉及一种基于昇腾ai处理器的跨步切片算子处理方法及装置。


背景技术:

2.跨步切片(stridedslice)算子是人工智能(artificial intelligence,ai)计算中用于提取张量中切片的计算单元,可以基于张量虚拟机(tensor virtual machine,tvm)和张量迭代器内核(tensor iterator kernel,tik)这两种算子开发方式实现。
3.现有方案中,基于tvm开发方式实现的stridedslice算子在获得张量中特定维度下特定索引对应的切片时,无法充分发挥ai处理器的性能优势,处理耗时较长,存在跨步切片算子处理速度低的技术问题。
4.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本技术实施例提供了一种基于昇腾ai处理器的跨步切片算子处理方法及装置,以至少解决跨步切片算子处理速度低的技术问题。
6.根据本技术实施例的第一方面,提供了一种基于昇腾ai处理器的跨步切片算子处理方法,包括:获取跨步切片算子的输入张量和待提取切片的下标;基于所述待提取切片的下标确定所述待提取切片在所述输入张量中的起始下标和长度;利用所述起始下标和所述长度从所述输入张量中确定待搬运的数据;通过昇腾ai处理器的输出缓冲区将所述待搬运的数据搬运至输出张量。
7.基于上述第一方面提供的基于昇腾ai处理器的跨步切片算子处理方法,可以充分发挥ai处理器的性能优势,有效减少跨步切片算子的处理耗时,大幅度提升跨步切片算子的处理速度。
8.可选地,基于待提取切片的下标确定待提取切片的长度包括:确定输入张量的形状;基于输入张量的形状和待提取切片的下标获取输入张量中未被待提取切片的下标覆盖的维度的权重;将获取到的权重确定为待提取切片的长度。
9.可选地,基于待提取切片的下标确定待提取切片在输入张量中的起始下标包括:对起始下标进行初始化处理,得到起始下标的初始值;确定输入张量的形状;基于输入张量的形状和待提取切片的下标获取输入张量中已被待提取切片的下标覆盖的每个维度对应的坐标值和权重;利用初始值以及输入张量中已被待提取切片的下标覆盖的每个维度对应的坐标值和权重,计算得到起始下标。
10.可选地,通过昇腾ai处理器的输出缓冲区将待搬运的数据搬运至输出张量包括:调用张量加速引擎平台中的预设应用程序接口,获取昇腾ai处理器的计算核心数量;基于长度和计算核心数量,通过输出缓冲区将待搬运的数据搬运至输出张量。
11.可选地,基于长度和计算核心数量,通过输出缓冲区将待搬运的数据搬运至输出
张量包括:基于长度和昇腾ai处理器中数据搬运最小单位,将长度转换为数据搬运最小单位对应的数据块的初始数量;对初始数量进行向下取整,得到数据块的目标数量;按照目标数量,通过输出缓冲区将待搬运的数据搬运至输出张量。
12.可选地,按照目标数量,通过输出缓冲区将待搬运的数据搬运至输出张量包括:当目标数量为0时,使用昇腾ai处理器中单个计算核心对待搬运的数据进行搬运;在对待搬运的数据进行搬运的过程中,利用输出缓冲区对待搬运的数据进行中转并搬运至输出张量。
13.可选地,按照目标数量,通过输出缓冲区将待搬运的数据搬运至输出张量包括:当目标数量大于0时,基于目标数量和计算核心数量,将待搬运的数据分配至昇腾ai处理器中与计算核心数量对应的多个计算核心进行搬运;在对待搬运的数据进行搬运的过程中,利用输出缓冲区循环对多个计算核心中的每个计算核心负责搬运的部分数据进行中转并搬运至输出张量。
14.可选地,上述基于昇腾ai处理器的跨步切片算子处理方法还包括:利用多个计算核心中的最后一个计算核心对待搬运的数据中的尾巴数据进行搬运,其中,尾巴数据是在对初始数量进行向下取整计算时忽略的数据;在对尾巴数据进行搬运的过程中,利用输出缓冲区对尾巴数据进行中转并搬运至输出张量。
15.根据本技术实施例的第二方面,还提供了一种基于昇腾ai处理器的跨步切片算子处理装置,包括:获取模块,用于获取跨步切片算子的输入张量和待提取切片的下标;第一确定模块,用于基于所述待提取切片的下标确定所述待提取切片在所述输入张量中的起始下标和长度;第二确定模块,用于利用所述起始下标和所述长度从所述输入张量中确定待搬运的数据;处理模块,用于通过昇腾ai处理器的输出缓冲区将所述待搬运的数据搬运至输出张量。
16.可选地,第一确定模块还用于确定输入张量的形状;基于输入张量的形状和待提取切片的下标获取输入张量中未被待提取切片的下标覆盖的维度的权重;将获取到的权重确定为待提取切片的长度。
17.可选地,第一确定模块还用于对起始下标进行初始化处理,得到起始下标的初始值;确定输入张量的形状;基于输入张量的形状和待提取切片的下标获取输入张量中已被待提取切片的下标覆盖的每个维度对应的坐标值和权重;利用初始值以及输入张量中已被待提取切片的下标覆盖的每个维度对应的坐标值和权重,计算得到起始下标。
18.可选地,处理模块还用于调用张量加速引擎平台中的预设应用程序接口,获取昇腾ai处理器的计算核心数量;基于长度和计算核心数量,通过输出缓冲区将待搬运的数据搬运至输出张量。
19.可选地,处理模块还用于基于长度和昇腾ai处理器中数据搬运最小单位,将长度转换为数据搬运最小单位对应的数据块的初始数量;对初始数量进行向下取整,得到数据块的目标数量;按照目标数量,通过输出缓冲区将待搬运的数据搬运至输出张量。
20.可选地,处理模块还用于当目标数量为0时,使用昇腾ai处理器中单个计算核心对待搬运的数据进行搬运;在对待搬运的数据进行搬运的过程中,利用输出缓冲区对待搬运的数据进行中转并搬运至输出张量。
21.可选地,处理模块还用于当目标数量大于0时,基于目标数量和计算核心数量,将待搬运的数据分配至昇腾ai处理器中与计算核心数量对应的多个计算核心进行搬运;在对
待搬运的数据进行搬运的过程中,利用输出缓冲区循环对多个计算核心中的每个计算核心负责搬运的部分数据进行中转并搬运至输出张量。
22.可选地,处理模块还用于利用多个计算核心中的最后一个计算核心对待搬运的数据中的尾巴数据进行搬运,其中,尾巴数据是在对初始数量进行向下取整计算时忽略的数据;在对尾巴数据进行搬运的过程中,利用输出缓冲区对尾巴数据进行中转并搬运至输出张量。
23.根据本技术实施例的第三方面,还提供了一种存储介质,包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述任一项所述的基于昇腾ai处理器的跨步切片算子处理方法。
24.根据本技术实施例的第四方面,还提供了一种处理器,用于运行程序,其中,程序运行时执行上述任一项所述的基于昇腾ai处理器的跨步切片算子处理方法。
25.根据本技术实施例的第五方面,还提供了一种电子装置,包括:一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置为由一个或多个处理器执行,一个或多个程序用于执行上述任一项所述的基于昇腾ai处理器的跨步切片算子处理方法。
附图说明
26.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
27.图1为一种达芬奇架构的核心构成示意图;
28.图2为现有stridedslice算子获取输入张量的切片的处理过程示意图;
29.图3为本技术实施例提供的一种用于实现基于昇腾ai处理器的跨步切片算子处理方法的计算机终端(或移动设备)的硬件结构框图;
30.图4为本技术实施例提供的一种的基于昇腾ai处理器的跨步切片算子处理方法流程图;
31.图5为本技术实施例提供的一种基于昇腾ai处理器的跨步切片算子处理装置的示意图。
具体实施方式
32.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
33.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于
清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
34.首先,在对本技术实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
35.达芬奇架构,是一种面向ai计算特征的全新计算架构,具备高算力、高能效、灵活可剪裁的特性,是实现万物智能的重要基础。为提升ai计算的完备性和不同场景下的计算效率,达芬奇架构中可以集成多种计算单元。图1为一种达芬奇架构的核心构成示意图,其中达芬奇架构可以包括:l0a缓冲区、l0b缓冲区、l0c缓冲区、输出缓冲区、矩阵计算单元(cube unit)、向量计算单元(vector unit)、标量计算单元(scalar unit)、专用寄存器、通用寄存器等。基于达芬奇架构的昇腾ai处理器中包括多个ai计算核心(ai core),ai core可以用于执行向量和张量相关的计算密集型算子。
36.在张量加速引擎(tensor boost engine,tbe)算子开发框架下,开发者可以选择使用特定领域语言(domain

specific language,dsl)、tvm、tik等开发方式实现算子的开发,这三种开发方式的难度依次递增,所实现的算子性能也依次提高。
37.tvm是一种普通的算子开发方式,在该方式下可以将常用的调度封装成运算接口,开发者只需要利用特定域语言声明计算的流程,再使用自动调度机制,指定目标生成代码,即可进一步编译成专用内核。
38.tik是一种专业级的算子开发方式,这种开发方式对数据的操作更加灵活,但需要开发者深入理解昇腾ai处理器架构和指令集等相关知识。tik开发的代码编写接近底层硬件架构,stridedslice算子获取张量跨步切片的过程可以基于特定硬件特性进行优化。tik相对于tvm而言,开发难度更高,但基于tik实现的stridedslice算子的处理性能更好。
39.现有方案中,用户在获得张量中特定维度下特定索引对应的切片时,可以执行基于tvm开发方式实现的stridedslice算子对应的代码。stridedslice算子可以根据用户给定的切片起始位置、结束位置和步幅获取输入张量的切片。
40.下面以一个三维的输入张量[3,2,3]为例,描述stridedslice算子根据用户给定的切片起始位置、结束位置和步幅获取输入张量切片的具体过程。
[0041]
输入张量input_x等于:
[0042]
[[[1.1,1.2,1.3],[2.1,2.2,2.3]],
[0043]
[[3.1,3.2,3.3],[4.1,4.2,4.3]],
[0044]
[[5.1,5.2,5.3],[6.1,6.2,6.3]]];
[0045]
切片起始位置begin等于:(1,0,0);
[0046]
切片结束位置end等于:(2,1,3);
[0047]
步幅strides等于:(1,1,1)。
[0048]
stridedslice算子获取到上述input_x、begin、end和strides后,进行计算后获得输入张量的切片。具体的,图2为stridedslice算子获取输入张量的切片的处理过程示意图,如图2所示,在第0维上,切片的区间是[1,2),所获取的切片是[[[3.1,3.2,3.3],[4.1,4.2,4.3]]]。在第1维上,切片的区间是[0,1),所获取的切片只包含第0个向量[[[3.1,3.2,3.3]]]。在第2维上,切片的区间是[0,3),stridedslice算子最终输出的切片为:[[[3.1,3.2,3.3]]]。
[0049]
可选地,用户可以通过中括号运算符调用stridedslice算子。例如,图2所示的处理过程的输出结果可以等同于:input_x[1]。其中,[1]为切片的坐标,该坐标对应的切片就是[[[3.1,3.2,3.3]]]。在实际运算时,中括号运算符可以自动转换为stridedslice算子。
[0050]
现有方案中在一些特定情况下,例如上述用户获得张量中特定维度下特定索引对应的切片,只会执行基于tvm开发方式实现的stridedslice算子对应的代码,但是,这种基于tvm开发方式实现的stridedslice算子无法充分发挥昇腾ai处理器的性能优势,处理耗时较长,存在跨步切片算子处理速度低的技术问题。
[0051]
本技术实施例基于tik开发方式,提供了一种基于昇腾ai处理器的跨步切片算子处理方法,所述方法具体包括:获取跨步切片算子的输入张量和待提取切片的下标;基于待提取切片的下标确定待提取切片在输入张量中的起始下标和长度;利用起始下标和长度从输入张量中确定待搬运的数据;通过昇腾ai处理器的输出缓冲区将待搬运的数据搬运至输出张量。基于上述基于昇腾ai处理器的跨步切片算子处理方法,可以充分发挥昇腾ai处理器的性能优势,有效减少跨步切片算子的处理耗时,大幅度提升跨步切片算子的处理速度。
[0052]
下面结合说明书附图对本技术实施例中提供的基于昇腾ai处理器的跨步切片算子处理方法进行描述。
[0053]
本技术实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图3示出了一种用于实现基于昇腾ai处理器的跨步切片算子处理方法的计算机终端(或移动设备)的硬件结构框图。如图3所示,计算机终端30(或移动设备30)可以包括一个或多个(图中采用302a、302b,
……
,302n来示出)处理器302(处理器302可以包括但不限于昇腾ai处理器,与昇腾ai处理器具有类似架构的处理器、微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器304、以及用于通信功能的传输装置306。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为bus总线的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图3所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端30还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。
[0054]
应当注意到的是上述一个或多个处理器302和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端30(或移动设备)中的其他元件中的任意一个内。如本技术实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
[0055]
存储器304可用于存储应用软件的软件程序以及模块,如本技术实施例中的基于昇腾ai处理器的跨步切片算子处理方法对应的程序指令/数据存储装置,处理器302通过运行存储在存储器304内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的基于昇腾ai处理器的跨步切片算子处理方法。存储器304可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器304可进一步包括相对于处理器302远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端30。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0056]
传输装置306用于经由一个网络接收或者发送数据。上述的网络具体实例可包括
计算机终端30的通信供应商提供的无线网络。在一个实例中,传输装置306包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置306可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
[0057]
显示器可以例如触摸屏式的液晶显示器(lcd),该液晶显示器可使得用户能够与计算机终端30(或移动设备)的用户界面进行交互。
[0058]
此处需要说明的是,在一些可选实施例中,上述图3所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图3仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
[0059]
在上述运行环境下,本技术提供了如图4所示的基于昇腾ai处理器的跨步切片算子处理方法,该方法可以由图3所示的计算机终端或者类似的类似的运算装置执行。图4是根据本技术实施例提供的一种的基于昇腾ai处理器的跨步切片算子处理方法流程图。如图4所示,该方法可以包括如下步骤:
[0060]
步骤s41,获取跨步切片算子的输入张量和待提取切片的下标;
[0061]
在本技术上述步骤s41提供的技术方案中,跨步切片算子的输入张量可以为一个一维向量,也可以为一个二维或者多维形式的矩阵。待提取切片可以为输入张量中连续存储的片段,也可以为输入张量中不连续存储的片段。
[0062]
可选地,当待提取切片为输入张量中连续存储的片段时,获取待提取切片在上述输入张量中的下标。
[0063]
例如,跨步切片算子的输入张量为一个32行32列的二维矩阵时,该输入张量的形状可以表示为(32,32),待提取切片在该输入张量中的下标为(5,)。即待提取切片包括上述二维矩阵第5行中所有连续存储的数据。
[0064]
可选地,当待提取切片为输入张量中不连续存储的片段时,依次获取待提取切片中不连续存储的片段在上述输入张量中的下标。
[0065]
例如,跨步切片算子的输入张量为一个4行4列的二维矩阵,该输入张量的形状可以表示为(4,4),先获取待提取切片中第一片段在该输入张量中的下标(1,),再获取提取切片中第二片段在该输入张量中的下标(3,)。即待提取切片中的第一片段和第二片段是不连续的,其中,待提取切片的第一片段包括上述二维矩阵中第1行中所有连续存储的数据,待提取切片的第二片段包括上述二维矩阵中第3行中所有连续存储的数据。
[0066]
步骤s42,基于待提取切片的下标确定待提取切片在输入张量中的起始下标和长度;
[0067]
在本技术上述步骤s42提供的技术方案中,待提取切片在输入张量中的起始下标和长度为将上述输入张量视为一维向量时,待提取切片在该一维向量中的起始下标和长度。
[0068]
示例性的,在步骤s42中,基于待提取切片的下标确定待提取切片的长度可以包括以下执行步骤:
[0069]
步骤s421,确定输入张量的形状;
[0070]
步骤s422,基于输入张量的形状和待提取切片的下标获取输入张量中未被待提取
切片的下标覆盖的维度的权重;
[0071]
步骤s423,将获取到的权重确定为待提取切片的长度。
[0072]
例如,确定输入张量是形状为(6,3,9)的三维形式矩阵,获取到待提取切片在该输入张量中的下标为(4,2,)。当前待提取切片的下标已经覆盖了输入张量的第0维和第1维,待提取切片的下标没有覆盖输入张量的第2维,进而可以将输入张量第2维的权重9确定为待提取切片的长度。上述步骤s421~步骤s423通过待提取切片的下标可以快速确定待提取切片的长度。
[0073]
示例性的,在步骤s42中,基于待提取切片的下标确定所述待提取切片在所述输入张量中的起始下标可以包括以下执行步骤:
[0074]
步骤s424,对起始下标进行初始化处理,得到起始下标的初始值;
[0075]
步骤s425,确定输入张量的形状;
[0076]
步骤s426,基于输入张量的形状和待提取切片的下标获取输入张量中已被待提取切片的下标覆盖的每个维度对应的坐标值和权重;
[0077]
步骤s427,利用初始值以及输入张量中已被待提取切片的下标覆盖的每个维度对应的坐标值和权重,计算得到起始下标。
[0078]
例如,确定输入张量是形状为(6,3,9)的三维形式矩阵,获取到待提取切片在该输入张量中的下标为(4,2,)。初始化待提取切片的起始下标,获得起始下标的初始值为0。当前待提取切片的下标已经覆盖了输入张量的第0维和第1维,而没有覆盖输入张量的第2维。在输入张量的第0维上,待提取切片的坐标值为4,权重:3
×
9=27,根据初始值和第0维的坐标及权重获得中间索引值:27
×
4+0=108;进一步的,在输入张量的第1维上,待提取切片的坐标值为2,权重为9,根据中间索引值和第1维的坐标及权重获得待提取切片的起始下标:9
×
2+108=126。
[0079]
其中,步骤s421~步骤s423中基于确定待提取切片的长度和步骤s424~步骤s427中确定待提取切片的起始下标的过程,可以在获取到待提取切片的下标后同步进行。
[0080]
步骤s43,利用起始下标和长度从输入张量中确定待搬运的数据;
[0081]
在本技术上述步骤s43提供的技术方案中,可以根据起始下标和待提取切片的长度获得终止下标。例如,起始下标加上待提取切片的长度可以获得终止下标。进一步的,将由起始下标至终止下标构成的连续下标区间对应的数据确定为输入张量中待搬运的数据。
[0082]
例如,获得起始下标为126,待提取切片的长度为9,则可以获得终止下标为126+9=135。将连续下标区间[126,135]对应的数据确定为输入张量中待搬运的数据。
[0083]
步骤s44,通过昇腾ai处理器的输出缓冲区将待搬运的数据搬运至输出张量。
[0084]
在本技术上述步骤s43提供的技术方案中,输出张量的数据类型与输入张量的数据类型相同。
[0085]
示例性的,可以调用张量加速引擎平台中的预设应用程序接口,获取昇腾ai处理器的计算核心数量,基于长度和计算核心数量,通过输出缓冲区将待搬运的数据搬运至输出张量。
[0086]
例如,调用张量加速引擎平台中的预设应用程序接口,获取昇腾ai处理器的计算核心数量为3,待提取切片的长度为9,将长度为9的数据均分到每个计算核心中,即每个计算核心可以将长度为3的数据搬运至输出张量。
[0087]
示例性的,可以基于长度和昇腾ai处理器中数据搬运最小单位,将长度转换为数据搬运最小单位对应的数据块的初始数量;对初始数量进行向下取整,得到数据块的目标数量;按照目标数量,通过输出缓冲区将待搬运的数据搬运至输出张量。
[0088]
可选地,当目标数量为0时,使用昇腾ai处理器中单个计算核心对待搬运的数据进行搬运;在对待搬运的数据进行搬运的过程中,利用输出缓冲区对待搬运的数据进行中转并搬运至输出张量。
[0089]
例如,当目标数量为0时,即表示待搬运的数据量不足1个数据块,此时,仅使用1个计算核心对待搬运的数据进行搬运,利用输出缓冲区对待搬运的数据进行中转并搬运至输出张量。
[0090]
可选地,当目标数量大于0时,基于目标数量和计算核心数量,将待搬运的数据分配至昇腾ai处理器中与计算核心数量对应的多个计算核心进行搬运;在对待搬运的数据进行搬运的过程中,利用输出缓冲区循环对多个计算核心中的每个计算核心负责搬运的部分数据进行中转并搬运至输出张量。
[0091]
例如,昇腾ai处理器重数据搬运的最小单位为数据块(block),一个block包括32个字节,获得的昇腾ai处理器计算核心的数量为32。输入张量的数据类型为8为整型数据(int8),根据上述步骤s42获得待提取切片的长度为1090,则将该长度转换为数据搬运最小单位对应的block的初始数量,对初始数量进行向下取整,得到得到数据块的目标数量为1090//32=34,进而可以按照目标数量34,通过输出缓冲区将待搬运的数据搬运至输出张量。具体的,当前block的目标数量为34,计算核心的数量为32,计算核心不能均分block的目标数量,可以为序号更小的计算核心划分更多的block,即令0号计算核心和1号计算核心搬运两个block,其余30个计算核心各搬运1个block,利用输出缓冲区对待搬运的数据进行中转并搬运至输出张量。
[0092]
根据上述图4提供的基于昇腾ai处理器的跨步切片算子处理方法,可以充分发挥ai处理器的性能优势,有效减少跨步切片算子的处理耗时,大幅度提升跨步切片算子的处理速度。
[0093]
可选地,上述基于昇腾ai处理器的跨步切片算子处理方法还可以包括以下执行步骤:
[0094]
步骤s45,利用多个计算核心中的最后一个计算核心对待搬运的数据中的尾巴数据进行搬运,其中,尾巴数据是在对初始数量进行向下取整计算时忽略的数据;在对尾巴数据进行搬运的过程中,利用输出缓冲区对尾巴数据进行中转并搬运至输出张量。
[0095]
例如,输入张量的数据类型为8为整型数据(int8),根据上述步骤s42获得待提取切片的长度为1090,则将该长度转换为数据搬运最小单位对应的block的初始数量,对初始数量进行向下取整,得到得到数据块的目标数量为1090//32=34,尾巴数据的长度为1090mod 32=2。当前获得的昇腾ai处理器计算核心的数量为32,可以利用最后一个计算核心(即31号计算核心)对尾巴数据进行搬运,以减少对尾巴数据的处理开销,利用输出缓冲区对尾巴数据进行中转并搬运至输出张量。
[0096]
本技术实施例基于tik开发方式开发出一种自定义的跨步切片算子(cusstridedslice),利用cusstridedslice算子获得输入张量的切片的过程可参照上述基于昇腾ai处理器的跨步切片算子处理方法。本技术提出的cusstridedslice算子相较于现
有方案中基于tvm开发方式实现的stridedslice算子在处理速度上有很大的提升。
[0097]
例如,当输入张量的形状为(32,1024,512,1,1),待提取切片的下标为(5,)时,现有的stridedslice算子的处理时间为92.75ms,而本技术提出的cusstridedslice算子则只需0.009656ms,在计算性能提升了9605倍。
[0098]
又例如,当输入张量的形状为(32,128,128,3,3),待提取切片的下标为(2,)时,现有的stridedslice算子的处理时间为8.043ms,而本技术所提出的cusstridedslice算子则只需0.004252ms,性能提升了约1892倍。
[0099]
表1为stridedslice/cusstridedslice算子训练耗时对比,如表1中所示,应用本技术提出的cusstridedslice算子后,跨步切片算子的性能提高了5565.86倍,单个历元(epoch)的训练时间可缩短5199.36

4384.63=814.73s。而一次训练过程通常包含45个epoch,利用本技术提出的cusstridedslice算子代替现有的stridedslice算子可以节省10.18小时的训练时间,进而可以有效节省能源开销和设备损耗。
[0100]
表1 stridedslice/cusstridedslice算子训练耗时对比
[0101][0102]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
[0103]
本技术实施例还提供了一种基于昇腾ai处理器的跨步切片算子处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0104]
图5是根据本技术实施例的一种基于昇腾ai处理器的跨步切片算子处理装置的示意图。如图5所示,该基于昇腾ai处理器的跨步切片算子处理装置50包括:获取模块51、第一确定模块52、第二确定模块53、处理模块54。
[0105]
获取模块51,用于获取跨步切片算子的输入张量和待提取切片的下标。
[0106]
第一确定模块52,用于基于所述待提取切片的下标确定所述待提取切片在所述输入张量中的起始下标和长度。
[0107]
第二确定模块53,用于利用所述起始下标和所述长度从所述输入张量中确定待搬运的数据。
[0108]
处理模块54,用于通过昇腾ai处理器的输出缓冲区将所述待搬运的数据搬运至输出张量。
[0109]
可选地,第一确定模块52还用于确定输入张量的形状;基于输入张量的形状和待
提取切片的下标获取输入张量中未被待提取切片的下标覆盖的维度的权重;将获取到的权重确定为待提取切片的长度。
[0110]
可选地,第一确定模块52还用于对起始下标进行初始化处理,得到起始下标的初始值;确定输入张量的形状;基于输入张量的形状和待提取切片的下标获取输入张量中已被待提取切片的下标覆盖的每个维度对应的坐标值和权重;利用初始值以及输入张量中已被待提取切片的下标覆盖的每个维度对应的坐标值和权重,计算得到起始下标。
[0111]
可选地,处理模块54还用于调用张量加速引擎平台中的预设应用程序接口,获取昇腾ai处理器的计算核心数量;基于长度和计算核心数量,通过输出缓冲区将待搬运的数据搬运至输出张量。
[0112]
可选地,处理模块54还用于基于长度和昇腾ai处理器中数据搬运最小单位,将长度转换为数据搬运最小单位对应的数据块的初始数量;对初始数量进行向下取整,得到数据块的目标数量;按照目标数量,通过输出缓冲区将待搬运的数据搬运至输出张量。
[0113]
可选地,处理模块54还用于当目标数量为0时,使用昇腾ai处理器中单个计算核心对待搬运的数据进行搬运;在对待搬运的数据进行搬运的过程中,利用输出缓冲区对待搬运的数据进行中转并搬运至输出张量。
[0114]
可选地,处理模块54还用于当目标数量大于0时,基于目标数量和计算核心数量,将待搬运的数据分配至昇腾ai处理器中与计算核心数量对应的多个计算核心进行搬运;在对待搬运的数据进行搬运的过程中,利用输出缓冲区循环对多个计算核心中的每个计算核心负责搬运的部分数据进行中转并搬运至输出张量。
[0115]
可选地,处理模块54还用于利用多个计算核心中的最后一个计算核心对待搬运的数据中的尾巴数据进行搬运,其中,尾巴数据是在对初始数量进行向下取整计算时忽略的数据;在对尾巴数据进行搬运的过程中,利用输出缓冲区对尾巴数据进行中转并搬运至输出张量。
[0116]
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
[0117]
本技术的实施例还提供了一种计算机可读存储介质。该计算机可读存储介质中存储有计算机程序,其中,在计算机程序被处理器运行时控制计算机可读存储介质所在设备执行上述任一项方法实施例中的步骤。
[0118]
可选地,在本实施例中,上述非易失性存储介质可以被设置为存储用于执行以下步骤的计算机程序:
[0119]
s1,获取跨步切片算子的输入张量和待提取切片的下标;
[0120]
s2,基于待提取切片的下标确定待提取切片在输入张量中的起始下标和长度;
[0121]
s3,利用起始下标和长度从输入张量中确定待搬运的数据;
[0122]
s4,通过昇腾ai处理器的输出缓冲区将待搬运的数据搬运至输出张量。
[0123]
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read

only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0124]
本技术的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储
有计算机程序,该处理器被设置为运行计算机程序以执行本技术实施例的基于昇腾ai处理器的跨步切片算子处理方法。
[0125]
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0126]
其中,存储器可用于存储软件程序以及模块,如本技术实施例中的基于昇腾ai处理器的跨步切片算子处理方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。
[0127]
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0128]
s1,获取跨步切片算子的输入张量和待提取切片的下标;
[0129]
s2,基于待提取切片的下标确定待提取切片在输入张量中的起始下标和长度;
[0130]
s3,利用起始下标和长度从输入张量中确定待搬运的数据;
[0131]
s4,通过昇腾ai处理器的输出缓冲区将待搬运的数据搬运至输出张量。
[0132]
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0133]
以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0134]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0135]
另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0136]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备执行本技术各个实施例所述方法的全部或部分步骤。
[0137]
以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1