一种硬件加速器的制作方法

文档序号:29929941发布日期:2022-05-07 12:36阅读:105来源:国知局
一种硬件加速器的制作方法

1.本发明是有关于一种张量(tensor)的空间及深度转换硬件加速器。


背景技术:

2.云端大数据(big data)处理和图像分析等,人工智能(ai)应用的爆炸式成长促使专家们前仆后继地开发最佳架构。ai硬件加速器的目标是找到最快速、最节能的方法来执行所需的运算任务。
3.ai硬件加速应用有几大类应用场景:(1)云端加速涉及压缩解压缩、区块链和安全等,需要很高的运算能力和功耗成本比;(2)储存,有些应用需要高效率,因而要求在存储器中进行数据处理;(3)自动驾驶,涉及人工智能、数据运算和传感器融合等,需要具有可程序设计性。
4.ai硬件加速器的出现,因应不同ai神经网络运算需求,如何让硬件能够更有效率的执行,乃是业界努力方向之一。
5.此外,如何能够减少ai硬件加速器跟cpu之间频繁切换问题,减少cpu负载,亦可兼顾整体ai运算执行效率。


技术实现要素:

6.根据本发明的一实施例,提出一种硬件加速器,其包括:一第一存储器接收数据;一第一存储器,接收数据;一来源地址产生单元,耦接至该第一存储器,用以根据一来源形状参数与一来源移动参数而产生多个来源地址给该第一存储器,以使得该第一存储器依据该些来源地址而送出数据;一数据收集单元,耦接至该第一存储器,接收从该第一存储器所传来的数据;一第一数据队列,耦接至该数据收集单元,用以暂存从该数据收集单元所传来的数据;一数据分散单元,耦接至该第一数据队列,将从该第一数据队列所传来的数据分散;一目标地址产生单元,耦接至该数据分散单元,用以根据一目标形状参数与一目标移动参数而产生多个目标地址;一地址队列,耦接至该目标地址产生单元,用以暂存该目标地址产生单元所产生的该些目标地址;一第二数据队列,耦接至该数据分散单元,用以暂存由该数据分散单元所传来的数据;以及一第二存储器,耦接至该第二数据队列,根据该目标地址产生单元所产生的该些目标地址来写入从该第二数据队列所传来的数据。该硬件加速器进行张量移动、张量重塑形状与张量对换顺序的任意组合,以达到张量深度到空间排列或张量空间到深度排列。
7.以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
8.图1a绘示4维张量数据储存于存储器内的示意图。
9.图1b显示4维张量数据储存于存储器内的另一示范例。
10.图2显示根据本发明一实施例的硬件加速器之功能方块图。
11.图3显示「张量深度到空间排列」与「张量空间到深度排列」的一例。
12.图4显示根据本发明一实施例的来源地址产生流程图。
13.图5显示根据本发明一实施例的目标地址产生流程图。
14.图6a与图6b显示根据本发明一实施例的两种张量移动示范例。
15.图7显示根据本发明一实施例的张量重塑形状示范例。
16.图8显示根据本发明一实施例的张量对换顺序示范例。
17.图9a至图9c显示根据本发明一实施例的张量深度到空间排列算法。
具体实施方式
18.下面结合附图对本发明的结构原理和工作原理作具体的描述:
19.在深度学习里,张量(tensor)实际上是一个多维阵列(multidimensional array)。依其维度(dimension),张量可分为1维张量,2维张量,3维张量,4维张量

等。在本发明中,以数据是4维张量做说明,但当知本发明并不受限于此。在本发明其他可能实施例中,数据可以是3维张量或者是更多维张量(如5维张量)等,其皆在本发明精神范围内。
20.图1a绘示4维张量数据储存于存储器100内的示意图。在本发明中,将4维张量数据的形状(shape)参数定义为:(n,c,h,w),其代表四维度形状点数;而4维张量数据的移动(stride)参数定义为:(nstride,cstride,hstride,wstride),其代表点到点距离。亦即,nstride(亦可缩写为ns)代表n点到n点的距离,cstride(亦可缩写为cs)代表c点到c点的距离,hstride(亦可缩写为hs)代表h点到h点的距离,wstride(亦可缩写为ws)代表w点到w点的距离。ba代表基底地址(base address),所以,base address亦可缩写为ba。
21.为更方便了解,图1b显示4维张量数据储存于存储器100内的另一示范例。此4维张量数据的形状参数(n,c,h,w)=(2,3,4,4),而4维张量数据的移动参数定义(ns,cs,hs,ws)=(48,16,4,1)。其中,图像(n,c,h,w)=(2,3,4,4)代表有2个图框(frame),每一个图框有3个通道(r,g,b),每个r平面(plane)、g平面与b平面各自是4*4的h*w点所组成,一共有4*4*3*2=96个点,每一个点是1个字节(byte)。
22.图2显示根据本发明一实施例的硬件加速器的功能方块图。硬件加速器200包括:第一存储器210、数据收集单元215、来源地址产生单元220、第一数据队列225、数据分散单元230、目标地址产生单元235、地址队列240、第二数据队列245与第二存储器250。在本发明可能实施例中,第一存储器210与第二存储器250可以是:(1)由同一个存储器单元所实现,分别占用该存储器单元的不同地址;或者是,(2)由同一个存储器单元所实现,采用原地(in-place)算法,分别占用该存储器单元的相同地址;或者是,(3)由不同存储器单元所实现。
23.本实施例的硬件加速器200可进行张量移动(tensor stride)、张量重塑形状(tensorreshape)、张量对换顺序(tensortranspose)。更甚之,本实施例的硬件加速器200可进行张量移动、张量重塑形状、张量对换顺序的任意组合,以达到张量深度到空间排列(tensorflow depth-to-space permutation),及/或张量空间到深度排列(tensorflow space-to-depthpermutation)。张量(tensorflow)是某一种ai框架所定义的操作名词,至于在其他ai框架(如pytorch等),则可以有不同名称,此皆在本发明精神范围内。
24.第一存储器210接收从数据来源(图中未示出)所传来的数据。
25.数据收集单元215耦接至第一存储器210,接收从第一存储器210所传来的数据。
26.来源地址产生单元220耦接至数据收集单元215,用以根据来源形状参数(n,c,h,w)与来源移动参数(ns,cs,hs,ws)而产生多个来源地址sad(source address)。来源形状参数(n,c,h,w)与来源移动参数(ns,cs,hs,ws)乃是使用者定义。
27.来源地址产生单元220对第一存储器210发出来源地址sad,第一存储器210依据来源地址sad来送出数据给数据收集单元215。数据收集单元215收集由第一存储器210所送出的数据。
28.第一数据队列225耦接至数据收集单元215,用以暂存从数据收集单元215所传来的数据。
29.数据分散单元230耦接至第一数据队列225,将从第一数据队列225所传来的数据分散,其中,由第一数据队列225所传来的数据乃是依来源形状参数(n,c,h,w)与来源移动参数(ns,cs,hs,ws)而写入于第一存储器210内的数据。
30.目标地址产生单元235耦接至数据分散单元230,用以根据目标形状参数(n',c',h',w')与目标移动参数(ns',cs',hs',ws')而产生多个目标地址dad(destination address)。目标形状参数(n',c',h',w')与目标移动参数(ns',cs',hs',ws')乃是使用者定义。
31.地址队列240耦接至目标地址产生单元235,用以暂存目标地址产生单元235所产生的该些目标地址dad。
32.第二数据队列245耦接至数据分散单元230,用以暂存由数据分散单元230所传来的数据。
33.第二存储器250耦接至第二数据队列245,根据目标地址产生单元235所产生的该些目标地址dad来写入从第二数据队列245所传来的数据。
34.图3显示「张量深度到空间排列」与「张量空间到深度排列」的一例。张量深度到空间排列可将数据从深度数据重新排列成为空间数据;以及,张量空间到深度排列可将数据从空间数据重新排列成为深度数据。图3的上方代表深度数据,而图3的下方代表空间数据。以图3为例,此4维张量深度数据的形状参数(n,cr2,h,w)=(1,8,3,3),而此4维张量空间数据的形状参数(n,c,rh,rw)=(1,2,6,6)。在图3中,参数r=2代表区块大小(block size)。
35.图4显示根据本发明一实施例的来源地址产生流程图。于开始时,将参数i、j、k与l皆设为0。在图4中,如果参数i、j、k与l中的任一者被更新的话,则产生一个新的来源地址sad,其中,sad=ba+l*ns+k*cs+j*hs+i*ws。其中,ba代表来源地址的基底地址(亦即起始地址)。
36.于步骤405中,进行数据的w排列(亦即,将数据依w方向读出于第一存储器210中)。接着,于步骤407中,让i加1。之后,于步骤410中,判断参数i是否小于参数w。如果是,则流程回至步骤405,并产生来源地址sad。如果步骤410为否,则于步骤412中,让参数i=0且流程接续至步骤415,进行数据的h排列(亦即,将数据依h方向读出于第一存储器210中)。接着,于步骤417中,让j加1。
37.于步骤420中,判断参数j是否小于参数h。如果是,则流程回至步骤405,并产生来源地址sad。如果步骤420为否,则于步骤422中,让参数j=0且流程接续至步骤425,进行数据的c排列(亦即,将数据依c方向读出于第一存储器210中)。
38.接着,于步骤427中,让k加1。于步骤430中,判断参数k是否小于参数c。如果是,则流程回至步骤405,并产生来源地址sad。如果步骤430为否,则于步骤432中,让参数k=0且流程接续至步骤435,进行数据的n排列(亦即,将数据依n方向读出于第一存储器210中)。
39.接着,于步骤437中,让参数l加1。于步骤440中,判断参数l是否小于参数n。如果是,则流程回至步骤405,并产生来源地址sad。如果步骤440为否,则于步骤442中,让参数l=0且流程结束。
40.由上述流程可知,所产生的来源地址sad共有n*c*h*w个。
41.图5显示根据本发明一实施例的目标地址产生流程图。于开始时,将参数i、j、k与l皆设为0。在图5中,如果参数i、j、k与l中的任一者被更新的话,则产生一个新的目标地址dad,其中,dad=ba'+l*ns'+k*cs'+j*hs'+i*ws'。其中,ba'代表目标地址的基底地址(亦即起始地址)。
42.于步骤505中,进行数据的w排列(亦即,将数据依w方向写入于第二存储器250中)。接着,于步骤507中,让i加1。之后,于步骤510中,判断参数i是否小于参数w'。如果是,则流程回至步骤505,并产生目标地址dad。如果步骤510为否,则于步骤512中,让参数i=0且流程接续至步骤515,进行数据的h排列(亦即,将数据依h方向写入于第二存储器250中)。接着,于步骤517中,让j加1。
43.于步骤520中,判断参数j是否小于参数h'。如果是,则流程回至步骤505,并产生目标地址dad。如果步骤520为否,则于步骤522中,让参数j=0且流程接续至步骤525,进行数据的c排列(亦即,将数据依c方向写入于第二存储器250中)。
44.接着,于步骤527中,让k加1。于步骤530中,判断参数k是否小于参数c'。如果是,则流程回至步骤505,并产生目标地址dad。如果步骤530为否,则于步骤532中,让参数k=0且流程接续至步骤535,进行数据的n排列(亦即,将数据依n方向写入于第二存储器250中)。
45.接着,于步骤537中,让参数l加1。于步骤540中,判断参数l是否小于参数n'。如果是,则流程回至步骤505,并产生目标地址dad。如果步骤540为否,则于步骤542中,让参数l=0且流程结束。
46.由上述流程可知,所产生的目标地址dad共有n'*c'*h'*w'个。
47.现将说明在本发明实施例中,进行排列的几种方式。
48.(a)张量移动(tensor copy with stride)
49.张量移动可应用于「张量深度到空间排列」与「张量空间到深度排列」。
50.图6a与图6b显示根据本发明一实施例的两种张量移动示范例。在图6a中,来源形状参数(n,c,h,w)=(2,2,2,3),而来源移动参数(ns,cs,hs,ws)=(12,6,3,1)。目标形状参数(n',c',h',w')=(2,2,2,3),而目标移动参数(ns',cs',hs',ws')=(16,8,4,1)。
51.在图6b中,来源形状参数(n,c,h,w)=(2,2,2,3),而来源移动参数(ns,cs,hs,ws)=(12,6,3,1)。目标形状参数(n',c',h',w')=(2,2,2,3),而目标移动参数(ns',cs',hs',ws')=(8,16,4,1)。
52.也就是说,在进行张量移动后,来源数据与目标数据的形状一样,但摆放的位置距离不同。
53.(b)张量重塑形状(tensor reshape)
54.张量重塑形状可应用于「张量深度到空间排列」与「张量空间到深度排列」。
55.图7显示根据本发明一实施例的张量重塑形状示范例。在图7中,来源形状参数(n,c,h,w)=(2,1,2,3),而来源移动参数(ns,cs,hs,ws)=(16,8,4,1)。目标形状参数(n',c',h',w')=(2,1,3,2),而目标移动参数(ns',cs',hs',ws')=(16,8,4,1)。
56.也就是说,在进行张量重塑形状后,来源数据与目标数据的形状不一样(但总点数乘积一样)。
57.(c)张量对换顺序(tensor transpose)
58.张量对换顺序可应用于「张量深度到空间排列」与「张量空间到深度排列」。
59.图8显示根据本发明一实施例的张量对换顺序示范例。在图8中,来源形状参数(n,c,h,w)=(1,2,1,3),而来源移动参数(ns,cs,hs,ws)=(16,8,4,1)。目标形状参数(n',c',h',w')=(1,3,1,2),而目标移动参数(ns',cs',hs',ws')=(16,8,4,1)。
60.在图8中,可以视为将参数c与w对换。在本发明其他可能例子中,任意2个形状参数可以对换(如n与w对换

等),此皆在本发明精神范围内。
61.也就是说,在进行张量对换顺序后,来源数据与目标数据的形状不一样(因为有2个形状参数互换,导致形状不一样)。
62.现将说明本发明实施例如何达到「张量深度到空间排列」。
63.第一种张量深度到空间排列算法:
64.以将来源形状参数(n,cr2,h,w)=(1,2*22,3,3)=(1,8,3,3)重新排列成目标形状参数(n',c',rh',rw')=(1,2,2*3,2*3)=(1,2,6,6)为例做说明。
65.第一种张量深度到空间排列算法包括三个步骤。
66.在第1个步骤中,进行张量对换顺序以将参数c与w对换。进行后结果如后:来源形状参数(n,c,h,w)=(1,8,3,3)与来源移动参数(ns,cs,hs,ws)=(72,9,3,1),而进行张量对换顺序以将参数c与w对换后,目标形状参数(n',c',h',w')=(1,3,3,8)与目标移动参数(ns',cs',hs',ws')=(72,24,8,1),如图9a所示。
67.在第2个步骤中,将第1个步骤的结果进行张量重塑形状与张量移动。
68.如图9b所示,将来源形状参数(n,c,h,w)=(1,3,3,8)与来源移动参数(ns,cs,hs,ws)=(72,24,8,1)进行张量重塑形状及张量移动后,可以得到目标形状参数(n',c',h',w')=(3,6,2,2)与目标移动参数(ns',cs',hs',ws')=(2(=r),12(=r*r*w),6(=r*w),1)。
69.接着,在进行第2个步骤的张量移动时,将n*h*w视为新的w,则进行张量移动后可得到:目标形状参数(n',c',h',w')=(1,6,1,12)与目标移动参数(ns',cs',hs',ws')=(-,12,-,1),其中,符号
“-”
代表不重要(don't care)。
70.在第3个步骤中,将第2个步骤的结果进行张量重塑形状与张量移动。
71.如图9c所示,将来源形状参数(n,c,h,w)=(1,6,1,12)与来源移动参数(ns,cs,hs,ws)=(-,12,-,1)进行张量重塑形状与张量移动后,可以得到目标形状参数(n',c',h',w')=(1,3,2,12)与目标移动参数(ns',cs',hs',ws')=(-,12,36,1)。
72.在第一种张量深度到空间排列算法中,通过(1)进行张量对换顺序;(2)进行张量重塑形状与张量移动;以及(3)进行张量重塑形状与张量移动,可达到「张量深度到空间排列」。
73.第二种张量深度到空间排列算法:
74.将来源形状参数(n,c,h,w)=(1,2048,8,6)重新排列成目标形状参数(n',c',h',w')=(1,512,16,12)。在此,将参数c定义为c=c1*r2,其中,r代表区块大小。以上例而言,c=2048,而c1=512,r=2。
75.第二种张量深度到空间排列算法包括重复多次的张量移动。
76.在第1次张量移动中,在进行时,将参数r2代入至参数c,亦即,来源形状参数(n,c,h,w)=(1,4(=r2),8,6),进行后结果如后:来源形状参数(n,c,h,w)=(1,4(=r2),8,6)与来源移动参数(ns,cs,hs,ws)=(-,48,6,1),而进行张量移动后,目标形状参数(n',c',h',w')=(2,2,8,6)与目标移动参数(ns',cs',hs',ws')=(12(=r*w),1,24(=r*r*w),2(=r))。
77.之后,重复进行c1次上述的张量移动。
78.也就是说,在第二种张量深度到空间排列算法中,一次做一个c1平面的运算,所以,要重复多次。
79.在第二种张量深度到空间排列算法中,通过重复进行多次张量移动,可达到「张量深度到空间排列」。
80.第三种张量深度到空间排列算法:
81.将来源形状参数(n,c,h,w)=(1,2048,8,6)重新排列成目标形状参数(n',c',h',w')=(1,512,16,12)。在此,将参数c定义为c=c1*r2,其中,r代表区块大小。以上例而言,c=2048,而c1=512,r=2。
82.第三种张量深度到空间排列算法包括重复进行r2次的张量移动步骤。
83.在第1次张量移动步骤中,在进行时,将参数c1代入至参数c,亦即,来源形状参数(n,c,h,w)=(1,512(=c1),8,6),进行后结果如后:来源形状参数(n,c,h,w)=(1,512,8,6)与来源移动参数(ns,cs,hs,ws)=(-,192(=r*r*h*w),6(=w),1),且来源地址的基底地址ba(亦即起始地址)=sourcebaseaddr,而进行张量移动后,目标形状参数(n',c',h',w')=(1,512,8,6)与目标移动参数(ns',cs',hs',ws')=(-,192(=r*r*h*w),12(=r*w),2(=r)),且目标地址的基底地址ba'(亦即起始地址)=destinationbaseaddr。
84.在第2次张量移动步骤中,在进行时,将参数c1代入至参数c,亦即,来源形状参数(n,c,h,w)=(1,512(=c1),8,6),进行后结果如后:来源形状参数(n,c,h,w)=(1,512,8,6)与来源移动参数(ns,cs,hs,ws)=(-,192(=r*r*h*w),6(=w),1),且来源地址的基底地址ba(亦即起始地址)=sourcebaseaddr+1*h*w=sourcebaseaddr+48,而进行张量移动后,目标形状参数(n',c',h',w')=(1,512,8,6)与目标移动参数(ns',cs',hs',ws')=(-,192(=r*r*h*w),12(=r*w),2(=r)),且目标地址的基底地址ba'(亦即起始地址)=destinationbaseaddr+1。
85.在第3次张量移动步骤中,在进行时,将参数c1代入至参数c,亦即,来源形状参数(n,c,h,w)=(1,512(=c1),8,6),进行后结果如后:来源形状参数(n,c,h,w)=(1,512,8,6)与来源移动参数(ns,cs,hs,ws)=(-,192(=r*r*h*w),6(=w),1),且来源地址的基底地址ba(亦即起始地址)=sourcebaseaddr+2*h*w=sourcebaseaddr+96,而进行张量移动后,目标形状参数(n',c',h',w')=(1,512,8,6)与目标移动参数(ns',cs',hs',ws')=(-,192(=r*r*h*w),12(=r*w),2(=r)),且目标地址的基底地址ba'(亦即起始地址)=destinationbaseaddr+r*w=destinationbaseaddr+12。
86.在第4次张量移动步骤中,在进行时,将参数c1代入至参数c,亦即,来源形状参数(n,c,h,w)=(1,512(=c1),8,6),进行后结果如后:来源形状参数(n,c,h,w)=(1,512,8,6)与来源移动参数(ns,cs,hs,ws)=(-,192(=r*r*h*w),6(=w),1),且来源地址的基底地址ba(亦即起始地址)=sourcebaseaddr+3*h*w=sourcebaseaddr+144,而进行张量移动后,目标形状参数(n',c',h',w')=(1,512,8,6)与目标移动参数(ns',cs',hs',ws')=(-,192(=r*r*h*w),12(=r*w),2(=r)),且目标地址的基底地址ba'(亦即起始地址)=destinationbaseaddr+r*w+1=destinationbaseaddr+13。
87.在进行多次的张量移动时,以来源地址的基底地址ba每次增加h*w。
88.在进行多次的张量移动时,目标地址的基底地址ba'是destinationbaseaddress+offset1。offset1=(i-1)*r*w,(i-1)*r*w+1,

,(i-1)*r*w+(i-1),其中,i=1~r。
89.在第三种张量深度到空间排列算法中,通过进行多次的张量移动,可达到「张量深度到空间排列」。
90.现将说明本发明实施例如何达到「张量空间到深度排列」。基本上,本发明实施例的「张量空间到深度排列」可视为是上述本发明实施例的「张量深度到空间排列」的反向操作。
91.第一种张量空间到深度排列算法:
92.以将来源形状参数(n,c,h,w)=(1,2,6,6)重新排列成目标形状参数(n',c',h',w')=(1,8,3,3)为例做说明。在此,将参数c'定义为c=c1*r2,其中,r代表区块大小。以上例而言,c'=8,而c1=2,r=2。
93.第一种张量空间到深度排列算法包括三个步骤。
94.在第1个步骤中,进行张量重塑形状与张量移动。
95.从来源形状参数(n,c,h,w)=(1,2,6,6)得到目标形状参数(n',c',h',w')=(1,2,3,12),此这步骤未进行搬移,而是把它视为紧密排列的形状。
96.之后,将来源形状参数(n,c,h,w)=(1,2,3,12)进行张量移动后,可以得到目标形状参数(n',c',h',w')=(1,2,3,12)与目标移动参数(ns',cs',hs',ws')=(-,12(=r*r*w),24(=r*r*w*c1),1)。
97.在第2个步骤中,将第1个步骤的结果进行张量重塑形状与张量移动。
98.从来源形状参数(n,c,h,w)=(1,2,3,12)得到目标形状参数(n',c',h',w')=(3,4,3,2),此这步骤未进行搬移,而是把它视为紧密排列的形状。
99.接着,对来源形状参数(n,c,h,w)=(3,4,3,2)进行第2个步骤的张量移动后可得到:目标形状参数(n',c',h',w')=(3,4,3,2)与目标移动参数(ns',cs',hs',ws')=(8(=c1*r*r),2(=r),24(=r*r*c1*h),1)。
100.在第3个步骤中,进行张量重塑形状与张量对换顺序。从来源形状参数(n,c,h,w)=(3,4,3,2)得到目标形状参数(n',c',h',w')=(1,3,3,8),此这步骤未进行搬移,而是把它视为紧密排列的形状。。
101.接着,对来源形状参数(n,c,h,w)=(1,3,3,8)进行张量对换顺序以将参数c与w对换后得到目标形状参数(n',c',h',w')=(1,8,3,3)。
102.在第一种张量空间到深度排列算法中,通过(1)进行张量重塑形状与张量移动;(2)进行张量重塑形状与张量移动;以及(3)进行张量重塑形状与张量对换顺序,可达到「张
量空间到深度排列」。
103.第二种张量空间到深度排列算法:
104.以将来源形状参数(n,c,h,w)=(1,2,6,6)重新排列成目标形状参数(n',c',h',w')=(1,8,3,3)为例做说明。在此,将参数c'定义为c=c1*r2,其中,r代表区块大小。以上例而言,c'=8,而c1=2,r=2。
105.第二种张量空间到深度排列算法包括重复多次(亦即,进行c1次)的张量移动。
106.在第1次张量移动中,来源形状参数(n,c,h,w)=(3,2,3,2),且来源地址的基底地址ba(亦即起始地址)=sourcebaseaddress,而进行张量移动后,目标形状参数(n',c',h',w')=(3,2,3,2)与目标移动参数(ns',cs',hs',ws')=(3(=w),18(=r*h*w),1,9(=w*h),且目标地址的基底地址ba'(亦即起始地址)=destinationbaseaddress。
107.在第2次张量移动中,来源形状参数(n,c,h,w)=(3,2,3,2),且来源地址的基底地址ba(亦即起始地址)=sourcebaseaddress+r*r*w*h=sourcebaseaddress+36,而进行张量移动后,目标形状参数(n',c',h',w')=(3,2,3,2)与目标移动参数(ns',cs',hs',ws')=(3(=w),18(=r*h*w),1,9(=w*h),且目标地址的基底地址ba'(亦即起始地址)=destinationbaseaddress+r*r*w*h=destinationbaseaddress+36。
108.在第二种张量空间到深度排列算法中,通过重复进行多次张量移动,可达到「张量空间到深度排列」。
109.第三种张量空间到深度排列算法:
110.将来源形状参数(n,c,h,w)=(1,512,16,12)重新排列成目标形状参数(n',c',h',w')=(1,2048,8,6)。在此,将参数c定义为c=c1*r2,其中,r代表区块大小。以上例而言,c=2048,而c1=512,r=2。
111.第三种张量空间到深度排列算法包括重复进行r2次的张量移动步骤。
112.在第1次张量移动步骤中,在进行时,将参数c1代入至参数c,亦即,来源形状参数(n,c,h,w)=(1,512(=c1),8,6),来源形状参数(n,c,h,w)=(1,512,8,6)与来源移动参数(ns,cs,hs,ws)=(-,192(=r*r*h*w),24(=r*r*w),2(=r)),且来源地址的基底地址ba(亦即起始地址)=sourcebaseaddress,而进行张量移动后,目标形状参数(n',c',h',w')=(1,512,8,6)与目标移动参数(ns',cs',hs',ws')=(-,192(=r*r*h*w),6(=w),1),且目标地址的基底地址ba'(亦即起始地址)=destinationbaseaddress。
113.在第2次张量移动步骤中,在进行时,将参数c1代入至参数c,亦即,来源形状参数(n,c,h,w)=(1,512(=c1),8,6),来源形状参数(n,c,h,w)=(1,512,8,6)与来源移动参数(ns,cs,hs,ws)=(-,192(=r*r*h*w),24(=r*r*w),2(=r)),且来源地址的基底地址ba(亦即起始地址)=sourcebaseaddress+1,而进行张量移动后,目标形状参数(n',c',h',w')=(1,512,8,6)与目标移动参数(ns',cs',hs',ws')=(-,192(=r*r*h*w),6(=w),1),且目标地址的基底地址ba'(亦即起始地址)=destinationbaseaddress+1*h*w=destinationbaseaddress+48。
114.在第3次张量移动步骤中,在进行时,将参数c1代入至参数c,亦即,来源形状参数(n,c,h,w)=(1,512(=c1),8,6)与来源移动参数(ns,cs,hs,ws)=(-,192(=r*r*h*w),24(=r*r*w),2(=r)),且来源地址的基底地址ba(亦即起始地址)=sourcebaseaddress+r*w=sourcebaseaddress+12,而进行张量移动后,目标形状参数(n',c',h',w')=(1,512,8,
6)与目标移动参数(ns',cs',hs',ws')=(-,192(=r*r*h*w),6(=w),1),且目标地址的基底地址ba'(亦即起始地址)=destinationbaseaddress+2*h*w=destinationbaseaddress+96。
115.在第4次张量移动步骤中,在进行时,将参数c1代入至参数c,亦即,来源形状参数(n,c,h,w)=(1,512(=c1),8,6)与来源移动参数(ns,cs,hs,ws)=(-,192(=r*r*h*w),24(=r*r*w),2(=r)),且来源地址的基底地址ba(亦即起始地址)=sourcebaseaddress+r*w+1=sourcebaseaddress+13,而进行张量移动后,目标形状参数(n',c',h',w')=(1,512,8,6)与目标移动参数(ns',cs',hs',ws')=(-,192(=r*r*h*w),6(=w),1),且目标地址的基底地址ba'(亦即起始地址)=destinationbaseaddress+3*h*w=destinationbaseaddress+144。
116.在进行多次的张量移动时,以来源地址的基底地址ba是sourcebaseaddress+offset2。offset2=(i-1)*r*w,(i-1)*r*w+1,

,(i-1)*r*w+(i-1),其中,i=1~r。
117.在进行多次的张量移动时,目标地址的基底地址ba'每次增加h*w。
118.在第三种张量空间到深度排列算法中,通过进行多次的张量移动,可达到「张量空间到深度排列」。
119.由上述可知,本发明实施例可以实现在更有效率的情况下,实现「张量空间到深度排列」与「张量深度到空间排列」,且可以减少硬件加速器与中央处理器(cpu)之间的频繁切换,减少cpu负载,增加整体ai运算执行效率。
120.当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1