用于深度学习操作的方法和装置

文档序号:29935103发布日期:2022-05-07 13:28阅读:125来源:国知局
用于深度学习操作的方法和装置
用于深度学习操作的方法和装置
1.本技术要求于2020年11月2日在韩国知识产权局提交的第10-2020-0144563号韩国专利申请的权益,该韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
2.以下描述涉及一种用于深度学习操作的方法和装置。


背景技术:

3.作为非限制性示例,实现神经网络的计算架构通常需要用于复杂输入数据、用于分析大量的输入数据和/或用于提取关于期望的信息的其他解的大量的计算操作。


技术实现要素:

4.提供本发明内容以便以简化的形式介绍将在下面的具体实施方式中进一步描述的构思的选择。本发明内容不旨在确定所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
5.在一个总体方面,一种电子装置包括:处理器,被配置为使用脉动阵列同时执行多个任务,其中,处理器包括:脉动阵列,具有多个处理元件(pe);以及第一片上网络,执行多个pe中的两个或更多个pe之间的数据传播,其中,所述多个任务中的每个任务包括一个或多个深度学习操作。
6.处理器可以被配置为:分配所述多个pe以同时执行多个神经网络(nn)的相应的深度学习操作,其中,所述多个pe的分配可以基于所述多个nn的特性来执行。
7.所述多个pe的分配可以包括脉动阵列的所有pe的分配。
8.处理器可以被配置为:基于所述多个nn的特性来设置输入数据和对应的输出部分和的相应的传播方向。
9.处理器可以被配置为:将nn划分为多个子nn并分配多个pe,以同时执行所述多个子nn的深度学习操作。
10.处理器可以被配置为:基于所述多个子nn的特性来设置输入数据和对应的输出部分和的相应的传播方向。
11.处理器还可以包括:输入数据传送模块,输入数据传送模块被配置为:输入数据到脉动阵列的不同侧。
12.脉动阵列的不同侧可以是脉动阵列的相对的左侧和右侧,并且输入数据传送模块还可以包括:第一脉动数据设置模块,被配置为:调整用于将第一输入数据输入到脉动阵列的左侧的时序并将第一输入数据传送到脉动阵列的左侧;第二脉动数据设置模块,被配置为:调整用于将第二输入数据输入到脉动阵列的右侧的时序;以及第二片上网络,被配置为将第二输入数据传送到脉动阵列的右侧。
13.脉动阵列的不同侧可以是脉动阵列的相对的左侧和右侧,其中,使用第一片上网络输入第一输入数据,并且使用第二片上网络输入第二输入数据,并且处理器还可以包括
另外的输入数据传送模块,所述另外的输入数据传送模块被配置为将权重输入数据输入到脉动阵列的上侧和下侧,其中,所述另外的输入数据传送模块可以包括:权重缓冲器,被配置为调整用于将第一权重输入数据和第二权重输入数据输入到脉动阵列的时序,并且通过脉动阵列的上侧将第一权重输入数据传送到相应的第一pe;以及第三片上网络,被配置为通过脉动阵列的下侧将第二权重输入数据传送到所述多个pe中的相应的第二pe。
14.处理器还可以包括:输入数据传送模块,被配置为:将输入数据输入到所述多个pe中的相应的pe的上端和下端。
15.输入数据传送模块可以包括:权重缓冲器,被配置为:调整用于至少将第一权重输入数据输入到所述多个pe中的第一pe的时序,并将第一权重输入数据传送到第一pe的上端;以及另外的片上网络,被配置为:将第二权重输入数据传送到所述多个pe中的第二pe的下端。
16.权重缓冲器可以被配置为:调整用于将第二权重输入数据输入到第二pe的时序。
17.处理器还可以包括:输出数据接收模块,被配置为:从脉动阵列的上侧和下侧接收与第一输入数据与第二输入数据之间的操作的结果对应的输出数据。
18.输出数据接收模块可以包括:输出累加器;以及另外的片上网络,被配置为:将传播到脉动阵列的上侧的对应的输出部分和传送到输出累加器的下端,并且将传播到脉动阵列下侧的对应的输出部分和传送到输出累加器的上端。
19.在一个总体方面,一种处理器实现的方法可以包括:确定第一神经网络(nn)当前是否正在由处理器运行;以及响应于第一nn被确定为当前由处理器运行:基于第一nn的特性和第二nn的特性来分配多个处理单元(pe),以同时执行第一nn的深度学习操作和第二nn的深度学习操作,其中,第二nn是新设置为由处理器运行的nn;基于第一nn的特性和第二nn的特性来设置输入数据和对应的输出部分和的相应的传播方向;以及使用分配的所述多个pe来同时执行第一nn的深度学习操作和第二nn的深度学习操作。
20.分配所述多个pe的步骤可以包括:基于第一nn的特性和第二nn的特性来确定所述多个pe的分配方法和分配比率。
21.分配所述多个pe的步骤可以包括:基于分配方法和分配比率抢占当前运行的第一nn的深度学习操作;以及通过以下步骤实现分配所述多个处理单元(pe):分配所述多个pe中的通过抢占获得的多个pe以执行第二nn的深度学习操作,以及分配所述多个pe中的通过抢占获得的另外的多个pe以执行第一nn的深度学习操作。
22.所述多个pe可以是脉动阵列的pe。
23.所述方法还可以包括:在第一nn当前未由处理器运行的情况下,确定第二nn是否具有多个批;以及响应于第二nn被确定为具有所述多个批:将第二nn划分为多个子nn;基于所述多个子nn的特性来分配所述多个pe中的多个pe以同时执行所述多个子nn的深度学习操作;基于所述多个子nn的特性来设置输入数据和对应的输出部分和的相应的传播方向;以及使用分配的所述多个pe来同时执行所述多个子nn的相应的深度学习操作。
24.分配所述多个pe的步骤可以包括:基于所述多个子nn的特性来确定所述多个pe的分配方法和分配比率。
25.所述方法还可以包括:根据第二nn的相应的批将第二nn划分为多个子nn;基于所述多个子nn的特性分配所述多个pe中的所述多个pe,以同时执行所述多个子nn的深度学习
操作;基于所述多个子nn的特性,设置所述多个pe的输入数据和所述多个pe的输出部分和的相应的传播方向;以及使用分配的所述多个pe同时执行第一nn的相应的深度学习操作和所述多个子nn的深度学习操作。
26.在一个总体方面,一个或多个实施例可以包括一种具有指令的计算机可读记录介质,所述指令在由在此描述的任何处理硬件执行时将处理硬件配置为实现在此描述的任何一个、任何组合或所有的操作或方法。
27.在一个总体方面,一种用于执行深度学习操作的电子装置包括:处理器,具有:脉动阵列,包括多个处理元件(pe);以及第一片上网络,在所述多个pe之间执行数据传播,其中,处理器被配置为将nn划分为多个子nn并分配所述多个pe中的多个pe,以同时执行所述多个子nn中的两个或更多个子nn的深度学习操作。
28.将nn划分为所述多个子nn可以根据nn的不同层的相应的任务来执行。
29.将nn划分为所述多个子nn可以根据nn的不同批来执行。
30.处理器可以被配置为:基于所述两个或更多个子nn的特性,设置所述多个pe的输入数据和对应的输出部分和的相应的传播方向。
31.分配所述多个pe的步骤可以包括基于所述多个子nn的特性来确定所述多个pe的分配方法和分配比率。
32.处理器还可以被配置为:与使用所述多个pe执行的所述多个子nn中的两个或更多个子nn的深度学习操作同时地,使用所述多个pe中的其他pe执行另外的nn的深度学习操作。
33.根据以下具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
34.图1a是示出使用神经网络(nn)的深度学习操作方法的示图。
35.图1b是示出在深度学习操作中作为输入提供的滤波器和输入特征图的数据的示图。
36.图1c是示出基于深度学习执行卷积运算的处理的示图。
37.图1d是示出使用脉动阵列(systolic array)执行卷积运算的方法的示图。
38.图2a是示出基于脉动阵列上的多个nn的优先级来实现时间多任务处理的方法的示图。
39.图2b是示出支持空间多任务处理的深度学习操作装置的操作的示例的示图。
40.图3a和图3b是示出示例空间多任务处理操作方法的示图。
41.图4是示出同时执行多个深度学习操作的深度学习操作装置的处理硬件的示例的示图。
42.图5a至图5f是示出深度学习操作装置的详细操作执行处理的示例的示图。
43.图6是示出通过空间多任务处理执行深度学习操作的方法的流程图。
44.图7是示出利用神经处理单元(npu)进行空间多任务处理的方法的示例的示图。
45.在整个附图和具体实施方式中,除非另有描述或提供,否则相同的附图标记将被理解为指代相同或相似的元件、特征和结构。附图可能未按比例,并且为了清楚、说明和方便,附图中的元件的相对尺寸、比例和描绘会被夸大。
具体实施方式
46.提供以下具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本技术的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作顺序仅仅是示例,并且不限于在此阐述的示例,而是除了必须以特定顺序发生的操作之外,可以如在理解本技术的公开之后将清楚地那样改变。此外,为了更清楚和简明,可以省略在理解本技术的公开之后已知的特征的一些描述。
47.在此描述的特征可以以不同的形式实现,并且将不被解释为限于在此描述的示例。相反,提供在此描述的示例仅仅是为了示出在理解本技术的公开内容之后将是清楚的实现在此描述的方法、设备和/或系统的许多可能方式中的一些。
48.尽管术语“第一”或“第二”用于解释各种组件,但是组件不限于这些术语。这些术语应仅用于将一个组件与另一组件区分开。例如,在根据本公开的构思的权利的范围内,“第一”组件可以被称为“第二”组件,或类似地,“第二”组件可以被称为“第一”组件。
49.将理解的是,当组件被称为“连接到”另一组件时,该组件可以直接连接或结合到所述另一组件,或者可以存在中间组件。
50.如在此所使用的,除非上下文另有清楚指示,否则单数形式也旨在包括复数形式。还应理解的是,术语“包括”和/或“包含”当在本说明书中使用时,说明存在所陈述的特征、整体、操作、元件、组件或它们的组合,但不排除存在或添加一个或多个其他特征、整体、操作、元件、组件和/或它们的组。在此关于示例或实施例的术语“可以”的使用(例如,关于示例或实施例可以包括或实现的内容)意味着存在包括或实现这样的特征的至少一个示例或实施例,而所有示例不限于此。
51.除非在此另有定义,否则在此使用的所有术语(包括技术术语或科学术语)具有与示例所属领域的普通技术人员基于对本技术的公开的理解通常理解的含义相同的含义。还将理解的是,除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与其在相关领域和本技术的公开的上下文中的含义一致的含义,并且将不以理想化或过于正式的含义来解释。
52.图1a是示出使用神经网络(nn)的深度学习操作方法的示图。
53.作为非限制性示例,具有深度学习操作的人工智能(ai)模型的特征可以在于:输入数据10输入到模型,并且输出数据30是模型的示例输出。例如,具有深度学习操作的模型可以实现为已经例如通过深度学习训练以生成根据神经网络(nn)的一个或多个卷积运算而输出的输出数据30的nn。这些卷积运算也可以被称为推断运算。已经被训练的nn可以已经通过深度学习被训练用于特定目的(诸如,用于基于nn的特征提取的面部识别、或者被训练用于各种其他目的)。可选择地,nn可以是临时nn,临时nn通过深度学习递增地训练(诸如,在监督训练中基于根据针对训练输入的临时nn的卷积运算的输出损失、成本、或误差,和/或通过可以包括或可以不包括从来自临时nn的输出导出的这种校正信息的无监督训练)。如所述的,无论是作为已经训练的nn还是这样的临时nn,为了训练nn,可以由已经训练的nn和临时nn中的每个执行深度学习操作。例如,在nn中,一层的节点连接(诸如,通过加权连接)到另一层的节点,从而共同操作以处理输入数据。各种类型的神经网络可以包括例如卷积神经网络(cnn)、递归神经网络(rnn)、深度信念网络(dbn)和/或受限玻尔兹曼机(rbm)
模型及其各种组合,注意的是,示例不限于此。在前馈神经网络中,例如,神经网络的一个层的每个节点可以具有到另一层中的每个节点的这种训练后的连接,同时注意的是,训练后的前馈神经网络可以具有基于修剪或其他训练技术的一些归零或移除的连接。作为非限制性示例,这样的训练后的连接可以在一个方向上(例如,在前馈神经网络的前向方向上、在rnn或具有其他反馈链路的nn中的前向和递归方向上以及在具有层跳过的nn的前向和跳过方向上等)通过神经网络逐层延伸。
54.例如,图1a示出了输入数据10被输入到示例nn(例如,cnn 20)并且输出数据30从nn输出的结构,其中,nn包括一个或多个层。nn可以是例如包括两个或更多个层的深度神经网络。另外,对示例cnn 20的引用是对由cnn 20表示的被配置为实现cnn 20的一个或多个处理器和/或深度学习操作装置的引用。
55.作为非限制性实例,cnn 20可以被配置为从输入数据10提取“特征”(诸如,边界、线和颜色)。cnn 20可以包括多个层(例如,包括多个卷积层)。每个层可以接收数据并生成要从cnn 20的对应的层输出到下一层的数据。例如,要从特定的层输出的生成的数据可以是通过在输入到cnn 20的图像或特征图与一个或多个滤波器(也称为“内核”)的相应的权重之间执行卷积运算而生成的特征图。在一个示例中,cnn 20的一个或多个初始层可以是被配置为提取cnn 20的输入图像(例如,输入数据10)的低水平特征(诸如,边缘或梯度)的一个或多个卷积层,并且cnn 20的多个后续层中的每个可以是被配置为逐渐提取更复杂的特征(诸如,包括在输入图像中的眼睛和鼻子的特征信息)的卷积层。
56.图1b是示出在深度学习操作中作为输入提供的滤波器和输入特征图的数据的示图。
57.参照图1b,输入特征图100可以是输入到nn的图像的一组数值数据或像素值,但不限于此。因此,仅作为示例,在图1b中,输入特征图100的元素可以是图像的像素值。例如,输入特征图100可以具有256
×
256像素和深度k(例如,前一层的输入图像或输出特征图的k个通道),然而,这仅仅是示例,并且输入特征图100的像素尺寸不限于该示例。
58.滤波器110-1至110-n可以是n个滤波器。多个滤波器110-1至110-n中的每个可以包括n乘n(例如,n
×
n)的权重。例如,多个滤波器110-1至110-n中的每个可以具有3
×
3像素和深度k(例如,k个通道)。然而,这仅仅是示例,并且滤波器110-1至110-n中的每个的大小不限于该示例,然而,如在该示例中所指出的,滤波器110-1至110-n中的每个的深度k可以与输入特征图100的深度k相同。
59.图1c是示出基于深度学习执行卷积运算的处理的示图。
60.参照图1c,在nn中执行卷积运算的处理可以涉及以下处理:在输入特征图100和滤波器110的相应深度(或通道)中,通过输入特征图100与滤波器110之间的乘法和加法运算生成输出值,并将输出值进行累加,从而生成输出特征图120(例如,生成输出特征图120的输出通道)。
61.卷积运算执行处理可以是这样的处理:通过从输入特征图100的左上端到右下端应用预定大小(即,大小为n
×
n)的滤波器110(例如,根据卷积运算的设置步幅,在输入特征图100上对滤波器110进行栅格化(rasterize)、扫描或步进)来执行乘法和加法运算。在下文中,给出了当滤波器110具有3
×
3的大小时执行卷积运算的处理的描述。
62.例如,在输入特征图100的左上部的第一区域101中,可以执行将包括第一方向上
的三个数据和第二方向上的三个数据的九(=3
×
3)个数据x
11
至x
33
乘以滤波器110的权重w
11
至w
33
的操作。此后,可以将乘法运算的输出值(例如,x
11
×w11
、x
12
×w12
、x
13
×w13
、x
21
×w21
、x
22
×w22
、x
23
×w23
、x
31
×w31
、x
32
×w32
和x
33
×w33
)进行累加,由此生成输出特征图120的第1-1输出数据y
11

63.之后,可以在以数据为单位从输入特征图100的左上部的第一区域101移动、移位或步进到第二区域102的同时执行操作。在这种情况下,在卷积运算处理中数据在输入特征图100中移动的数量可以被称为“步幅”。基于步幅的大小,可以确定要生成的输出特征图120的大小。例如,当步幅为1时,可以通过执行将包括在第二区域102中的九个输入数据x
12
至x
34
乘以滤波器110的权重w
11
至w
33
,并将乘法运算的输出值x
12
×w11
、x
13
×w12
、x
14
×w13
、x
22
×w21
、x
23
×w22
、x
24
×w23
、x
32
×w31
、x
33
×w32
和x
34
×w33
进行累加的操作,来生成输出特征图120的第1-2输出数据y
12
。类似地,可以执行将包括在下一区域中的九个输入数据x
13
至x
35
乘以滤波器110的权重w
11
至w
33
的操作并且将结果累加以生成y
13
,然后可以执行将包括在下一区域中的九个输入数据x
14
至x
36
乘以滤波器110的权重w
11
至w
33
的操作并且将结果累加以生成y
14
。因为示例步幅是1,所以可以通过将滤波器110的应用向下移行来生成输出y
21
,因此,以这种方式,根据步幅执行剩余的乘法和累加,直到已经生成了所有输出y
11
至y
44
。类似地,当输入数据具有附加通道或深度时,滤波器110的对应深度或通道同样应用于输入数据的附加通道或深度,并且y
11
至y
44
中的每个的值也取决于滤波器110的对应深度或通道对输入数据的附加通道或深度的类似应用。当存在一个或多个附加滤波器110时,每个类似地应用于输入数据的附加滤波器110生成针对输入数据的输出特征图120的对应的附加输出深度或通道。在图1c中,可以根据输入特征图100中的输入数据x
11
至x
66
和滤波器110中的权重w
11
至w
33
得到包括输出y
11
至y
44
的输出特征图120。
64.图1d是示出使用脉动阵列执行卷积运算的方法的示图。
65.参照图1d,可以将输入特征图130的每个数据映射到基于具有预定延迟的时钟顺序地输入到处理元件(pe)(例如,第一pe 141至第九pe 149)的脉动阵列。pe可以是乘法和加法运算符。作为非限制性示例,每个输入特征图的顺序输入也可以应用于下面讨论的脉动阵列中的任何脉动阵列,以用于脉动阵列的pe的每次划分以执行不同的nn操作。
66.在第一时钟,脉动阵列的第一行

的第1-1数据x
11
可以被输入到第一pe 141。可以在第一时钟将第1-1数据x
11
乘以权重w
11
。在第二时钟,第1-1数据x
11
可以被输入到第二pe 142,第2-1数据x
21
可以被输入到第一pe 141,并且脉动阵列的第二行

的第1-2数据x
12
可以将被输入到第四pe 144。同样地,在第三时钟,第1-1数据x
11
可以被输入到第三pe 143,第2-1数据x
21
可以被输入到第二pe 142,并且第1-2数据x
12
可以被输入到第五pe 145。在第三时钟,第3-1数据x
31
可以被输入到第一pe 141,第2-2数据x
22
可以被输入到第四pe 144,并且脉动阵列的第三行

的第1-3数据x
13
可以被输入到第七pe 147。
67.如上所述,可以基于顺序时钟将输入特征图130输入到pe 141至149中的每个pe,使得利用基于每个时钟输入的权重的乘法和加法运算被执行。可以通过将通过按顺序输入的权重与输入特征图130的数据之间的乘法和加法运算输出的值进行累加来生成输出特征图。
68.图2a是示出基于脉动阵列上的多个nn的优先级来实现时间多任务处理的典型方法的示图。
69.参照图2a,典型的深度学习操作装置可以使用同一脉动阵列的时间多任务处理来单独运行多个nn。
70.关于脉动阵列240,深度学习操作装置可以在从t0到t1的第一时间间隔中运行nn a 210,在时间t1执行上下文切换,在从t1到t2的第二时间间隔中运行nn b 220,在时间t2执行上下文切换,然后在从t2到t3的第三时间间隔中再次运行nn a 210。运行nn可以对应于执行nn的深度学习操作。
71.然而,即使深度学习操作装置通过这样的上下文切换利用这样的时间多任务处理,也仍然不可能同时在一个脉动阵列中执行多个nn。由于这样的时间多任务处理的特性,先前不可能将同一脉动阵列的pe分配给多个nn(即,使用同一脉动阵列的pe同时运行多个nn的深度学习操作)。因此,与在执行另一nn之前仅执行一个nn直到完成的替代典型操作相比,使用时间多任务处理实现的典型的深度学习操作可能无法实现高的吞吐量和每单位功率的nn处理(例如,每瓦兆兆操作(tera-operations per watt)(tops/watt))。此外,因为nn之间的每个上下文切换需要相对大量的时间,所以实现这样的时间多任务处理方法的这样的典型的深度学习操作装置可能无法保证高实时性能。
72.图2b是示出支持空间多任务处理的深度学习操作装置的操作的示例的示图。
73.参照图2b,深度学习操作装置可以通过空间多任务处理将脉动阵列250的pe分配给多个nn来同时运行多个nn。因此,深度学习操作装置可以同时运行不同的深度学习操作任务,其中,多个nn中的各个nn可能被训练)以执行(例如,已经被训练以诸如执行推断操作)和/或被临时训练(例如,当前正被训练)以执行单独的任务,其中,一个或多个nn中的各个nn层可能被训练和/或被临时训练以执行/为了执行单独的任务,和/或其中,一个或多个nn中的任何一个或多个nn层的各个内核可能被训练和/或被临时训练以执行/为了执行不同的任务。
74.在该非限制性示例中,深度学习操作装置可以在从t0到t1的第一时间间隔中仅运行nn a 210,然后在从t1到t2的第二时间间隔中同时运行nn a 210和nn b 220两者,并且在从t2到t3的第三时间间隔中同时运行nn a 210和nn c 230。
75.深度学习操作装置可以在一个脉动阵列中同时运行多个nn,从而提高nn的吞吐量并提高或保证具有高优先级的nn的实时性能。
76.图3a是示出空间多任务处理操作方法的示例的示图。
77.支持空间多任务处理的深度学习操作装置可以例如基于所有pe例如被二维布置的脉动阵列的特性,以pe的预定比率将pe分配给多个nn。
78.参照图3a,当nn a和nn b同时运行时,nn a的输入数据310可以输入到脉动阵列的左侧,并且nn b的输入数据320可以输入到脉动阵列的右侧。nn a的输入数据310和nn b的输入数据320可以分别是nn a的输入特征图数据和nn b的输入特征图数据。
79.设置在脉动阵列两侧的输入数据310和320可以基于pe将被分配给nn a和nn b的确定的比率来水平地传播输入数据。每个pe的相应结果可以垂直地传播。
80.例如,nn a的输入数据310可以在从左到右的方向上传播,使得基于每个时钟的利用输入到脉动阵列的nn a的滤波器的相应的权重的乘法和加法运算被执行。在这种情况下,可以通过将通过按顺序输入的相应的权重与输入数据310之间的乘法和加法运算输出的值进行累加,同时在从上到下的方向上传播对应的输出值,来生成输出数据315。
81.nn b的输入数据320可以在从右到左的方向上传播,使得基于每个时钟的利用输入到脉动阵列的nn b的滤波器的相应的权重的乘法和加法运算被执行。在这种情况下,可以通过将通过按顺序输入的对应的权重与输入数据320之间的乘法和加法运算输出的值进行累加,同时在从上到下的方向上传播对应的输出值,来生成输出数据325。
82.图3b是示出空间多任务处理操作方法的示例的示图。
83.参照图3b,当同时执行nn c和nn d时,nn c的输入数据330和nn d的输入数据340可以分别输入到脉动阵列的左侧。此外,基于pe被分配的比率的确定,输入数据可以被水平地传播,并且相应的操作结果可以被垂直地传播。
84.例如,nn c的输入数据330可以在从左到右的方向上传播,使得基于每个时钟的利用输入到脉动阵列的nn c的滤波器的相应的权重的乘法和加法运算被执行。在这种情况下,可以通过将通过按顺序输入的相应的权重与输入数据330之间的乘法和加法运算输出的值进行累加,同时在从下到上的方向上传播对应的输出值,来生成输出数据335。
85.nn d的输入数据340可以在从左到右的方向上传播,使得基于每个时钟的利用输入到脉动阵列的nn d的滤波器的相应的权重的乘法和加法运算被执行。在这种情况下,可以通过将通过按顺序输入的相应的权重与输入数据340之间的乘法和加法运算输出的值进行累加,同时在从上到下的方向上传播对应的输出值,来生成输出数据345。
86.深度学习操作装置可以包括处理器。处理器可以确定脉动阵列的pe将被分开以用于相应的深度学习操作任务的操作的分配比率和相应的方向(例如,垂直、水平),并基于确定的相应的方向向脉动阵列提供输入数据。例如,处理器可以是神经处理单元(npu)。
87.深度学习操作装置可以具有脉动阵列的每个pe双向而不是单向传播输入数据的结构。为此,深度学习操作装置可以包括可以被配置为从脉动阵列的左侧和右侧水平传播输入数据的硬件单元和片上网络(例如,片上网络(noc))。片上网络可以被配置为从脉动阵列的上侧和下侧接收输出数据。以下参照图4更详细地描述被配置为同时执行多个深度学习操作的这样的深度学习操作装置的示例组件。
88.图4是示出实现同时执行多个深度学习操作的深度学习操作装置的硬件的示例的示图。
89.参照图4,深度学习操作装置可以包括例如主存储器410、全局缓冲器415、第一脉动数据设置模块420、权重缓冲器(例如,权重fifo)425、脉动阵列430和输出结果累加寄存器(在下文中,称为“输出累加器”)440。
90.深度学习操作装置可以是通过用于执行神经网络操作的硬件配置的计算装置。例如,作为非限制性示例,深度学习操作装置可以是神经网络装置、神经网络电路、硬件加速器和处理装置。作为另一示例,深度学习操作装置可以是或包括各种半导体装置(诸如,作为非限制性示例的片上系统(soc)、专用集成电路(asic)、中央处理器(cpu)、图形处理器(gpu)、视觉处理器(vpu)和神经处理器(npu))。
91.例如,脉动阵列430可以包括垂直和水平布置的多个pe。脉动阵列可以被配置为根据同步信号(例如,时钟信号)执行多个操作。脉动阵列也可以被称为pe阵列。
92.脉动阵列430可以基于时钟信号分别从第一脉动数据设置模块420和权重缓冲器425顺序地接收第一输入数据和第二输入数据。第一输入数据可以是输入特征图数据。第二输入数据可以是一个或多个权重。
93.脉动阵列430可以使用输入特征图数据和输入权重来执行深度学习操作。脉动阵列430的操作结果可以是与用于生成特征图数据的中间操作结果对应的部分和。部分和可以在预定方向上传播并在输出累加器440中累加。
94.第一脉动数据设置模块420可以存储输入特征图(例如,图1b的输入特征图100)的数据。第一脉动数据设置模块420可以将输入特征图的数据传送到脉动阵列430的左侧。
95.权重缓冲器425可以存储滤波器(例如,图1b的滤波器110-1至110-n)的权重。权重缓冲器425可以将权重传送到脉动阵列430的上侧。在一个示例中,权重缓冲器425可以调整用于将权重输入到脉动阵列的时序。
96.在一个示例中,第一脉动数据设置模块420和权重缓冲器425可以分别使用不同的存储器装置实现和/或以一个存储器装置的不同区域实现。
97.在一个或多个示例中,深度学习操作装置还可以包括第一片上网络、第二脉动数据设置模块445、第二片上网络460-1至460-n、第三片上网络450-1至450-n以及第四片上网络455-1至455-n(例如,n可以是大于2的整数)。
98.利用这样的非限制性示例,深度学习操作装置可以通过第一片上网络在pe之间执行向上、向下、向左和向右的数据传播。通常,深度学习操作装置仅在从上到下和从左到右的方向上在pe之间执行相应的数据传播。相反,除了从上到下的方向和从左到右的方向之外,在此的一个或多个实施例的深度学习操作装置还可以通过第一片上网络在从下到上的方向和从右到左的方向上在pe之间执行数据传播。
99.深度学习操作装置可以通过第二脉动数据设置模块445以及第二片上网络460-1至460-n将输入特征图或另一输入特征图的数据传送到脉动阵列430的右侧。第二脉动数据设置模块445可以调整用于将输入特征图数据输入到脉动阵列430的右侧的时序。第二片上网络460-1至460-n可以将输入特征图数据传送到脉动阵列430的右侧。
100.深度学习操作装置可以通过第三片上网络450-1至450-n将权重或其他权重传送到包括在脉动阵列430中的pe的下端。典型的深度学习操作装置可以仅将权重传送到pe的上端。相反,除了上端之外,一个或多个实施例的深度学习操作装置还可以通过第三片上网络450-1至450-n将权重传送到pe的下端。
101.深度学习操作装置可以使用第四片上网络455-1至455-n来连接到输出累加器440。在典型的深度学习操作装置中,部分和可以仅传播到典型的脉动阵列的下侧,使得传播的部分和被发送到输出累加器的上端并在输出累加器中累加。相反,在一个或多个实施例的深度学习操作装置中,部分和也可以传播到脉动阵列430的上侧。因此,深度学习操作装置可以将通过第四片上网络455-1至455-n传播到脉动阵列430的上侧的部分和传送到输出累加器440的下端。
102.深度学习操作装置可以生成用于控制主存储器410、全局缓冲器415、第一脉动数据设置模块420、权重缓冲器425、脉动阵列430、输出累加器440、第一片上网络、第二脉动数据设置模块445、第二片上网络460-1至460-n、第三片上网络450-1至450-n以及第四片上网络455-1至455-n的命令。例如,处理器可以基于多个nn的特性分配pe来同时执行示例的多个nn的深度学习操作,并设置输入数据和部分和的传播方向。
103.第一输入数据传送模块可以包括第一脉动数据设置模块420和第二片上网络460-1至460-n。在一个示例中,第一脉动数据设置模块420可调整用于将输入特征图数据输入到
脉动阵列的左侧的时序。第二输入数据传送模块可以包括权重缓冲器425和第三片上网络450-1至450-n。输出数据接收模块可以包括输出累加器440和第四片上网络455-1至455-n。在一个示例中,输出数据接收模块可从脉动阵列的上侧和下侧接收与输入到pe的输入数据和权重之间的操作的结果对应的输出数据。
104.在图4的示例中,组件被单独配置并示出以描述对应的区分的硬件。另外,在一个示例中,组件中的一些或全部可以被配置为由处理器实现,或者仅一些组件可以被配置为由处理器实现。在一个示例中,深度学习操作装置的处理器可以生成用于以上和以下讨论的控制深度学习操作装置的命令。
105.由于权重缓冲器425、输出累加器440、第一脉动数据设置模块420和第二脉动数据设置模块445相对于脉动阵列430的各种其他配置也是可用的,因此权重缓冲器425、输出累加器440、第一脉动数据设置模块420和第二脉动数据设置模块445相对于脉动阵列430的讨论和示出的位置不限于如图4中所示。例如,权重缓冲器425和输出累加器440可以分别位于脉动阵列430的左侧和右侧、右侧和左侧或者上方和下方。此外,第一脉动数据设置模块420和第二脉动数据设置模块445可以分别位于脉动阵列430的上方和下方、下方和上方或者右侧和左侧。
106.图5a和图5b示出了通过水平分配脉动阵列的pe来同时运行两个nn的深度学习操作装置。图5c和图5d示出了通过垂直分配脉动阵列的pe来同时运行两个nn的深度学习操作装置。图5e和图5f示出了通过将脉动阵列的pe分成四个部分来同时运行四个nn的深度学习操作装置。由于图1a至图1d和图2b至图4的描述可以应用于图5a至图5f,因此在各种示例中,下面可以省略相同内容的相应描述。
107.参照图5a和图5b,深度学习操作装置可以将脉动阵列水平地分成第一区域530和第二区域535,以在第一区域530中运行nn a并在第二区域535中运行nn b。
108.参照图5a,深度学习操作装置可以预先将nn a的权重传播到第一区域530,并将nn b的权重传播到第二区域535。
109.深度学习操作装置的权重缓冲器525可以从主存储器510接收nn a的权重,存储接收到的权重,并基于时钟信号将nn a的权重传送到第一区域530的pe的上端。
110.另外,深度学习操作装置的权重缓冲器525可以从主存储器510接收nn b的权重并存储接收到的权重。深度学习操作装置可以基于时钟信号通过第三片上网络将nn b的权重传送到第二区域535的pe的下端。
111.参照图5b,在传播相应的权重之后,深度学习操作装置可以将nn a的输入特征图数据传播到第一区域530,并将nn b的输入特征图数据传播到第二区域535。
112.上述第一脉动数据设置模块可以包括第1-1脉动数据设置模块520-1和第1-2脉动数据设置模块520-2。在附图中,第一脉动数据设置模块被分开地示出为第1-1脉动数据设置模块520-1和第1-2脉动数据设置模块520-2。然而,这旨在指示各个模块可以在逻辑上分开,并且不一定意味着模块是物理上分开的组件。
113.深度学习操作装置的第1-1脉动数据设置模块520-1可以从主存储器510接收nn a的输入特征图数据,存储接收到的输入特征图数据,并基于时钟信号将nn a的输入特征图数据传送到第一区域530的左侧。由此,第一区域530的pe可以在从左到右的方向上传播nn a的输入特征图数据。
114.深度学习操作装置的第1-2脉动数据设置模块520-2可以从主存储器510接收nn b的输入特征图数据,存储接收到的输入特征图数据,并基于时钟信号将nn b的输入特征图数据传送到第二区域535的左侧。由此,第二区域535的pe可以在从左到右的方向上传播nn b的输入特征图数据。
115.第一区域530的pe可以在从下到上的方向上传播通过在按顺序输入的nn a的权重与nn a的输入特征图数据之间执行乘法和加法运算而获得的相应的部分和。深度学习操作装置可以使用第四片上网络将传播到第一区域530的上侧的相应的部分和传送到输出累加器540的下端。
116.第二区域535的pe可以在从上到下的方向上传播通过在按顺序输入的nn b的权重与nn b的输入特征图数据之间执行乘法和加法运算而获得的相应的部分和。传播到第二区域535的下侧的相应的部分和可以被传送到输出累加器540的上端。
117.参照图5c和图5d,深度学习操作装置可以将脉动阵列垂直地分成第三区域550和第四区域555,以在第三区域550中运行nn a并在第四区域555中运行nn b。
118.参照图5c,深度学习操作装置可以预先将nn a的权重传播到第三区域550,并将nn b的权重传播到第四区域555。
119.深度学习操作装置的权重缓冲器525可以从主存储器510接收nn a的相应的权重和nn b的相应的权重,并存储接收到的权重。此外,权重缓冲器525可以基于时钟信号将nn a的权重传送到第三区域550的pe的上端,并将nn b的权重传送到第四区域555的pe的上端。
120.参照图5d,在传播相应的权重之后,深度学习操作装置可以将nn a的输入特征图数据传播到第三区域550,并将nn b的输入特征图数据传播到第四区域555。
121.深度学习操作装置的第一脉动数据设置模块(例如,第1-1脉动数据设置模块520-1和第1-2脉动数据设置模块520-2)可以从主存储器510接收nn a的输入特征图数据,存储输入特征图数据,并基于时钟信号将nn a的输入特征图数据传送到第三区域550的左侧。由此,第三区域550的pe可以在从左到右的方向上传播nn a的输入特征图数据。
122.深度学习操作装置的第二脉动数据设置模块可以从主存储器510接收nn b的输入特征图数据,并存储接收到的输入特征图数据。与第一脉动数据设置模块类似,第二脉动数据设置模块可以包括第2-1脉动数据设置模块545-1和第2-2脉动数据设置模块545-2。第二脉动数据设置模块被分开示出为第2-1脉动数据设置模块545-1和第2-2脉动数据设置模块545-2。然而,该示出的分开旨在指示各个模块是在逻辑上分开,并且不一定意味着模块是物理上分开的组件。
123.深度学习操作装置可以使用第二片上网络将nn b的输入特征图数据输入到第四区域555的右侧。由此,第四区域555的pe可以在从右到左的方向上传播nn b的输入特征图数据。
124.第三区域550的pe可以在从上到下的方向上传播通过在按顺序输入的nn a的权重与nn a的输入特征图数据之间执行乘法和加法运算而获得的相应的部分和。
125.第四区域555的pe可以在从上到下的方向上传播通过在按顺序输入的nn b的权重与nn b的输入特征图数据之间执行乘法和加法运算而获得的相应的部分和。传播到第四区域555的下侧的相应的部分和可以被传送到输出累加器540的上端。
126.参照图5e和图5f,深度学习操作装置可以将脉动阵列分成四个区域(例如,第五区
域560、第六区域565、第七区域570和第八区域575),以在第五区域560中运行nn a,在第六区域565中运行nn b,在第七区域570中运行nn c,并且在第八区域575中运行nn d。
127.参照图5e,深度学习操作装置可以预先将nn a的权重传播到第五区域560,将nn b的权重传播到第六区域565,将nn c的权重传播到第七区域570,并且将nn d的权重传播到第八区域575。
128.深度学习操作装置的权重缓冲器525可以从主存储器510接收nn a的相应的权重和nn b的相应的权重,存储接收到的权重,并且基于时钟信号将nn a的相应的权重传送到第五区域560的pe的上端和将nn b的相应的权重传送到第六区域565的pe的上端。
129.另外,深度学习操作装置的权重缓冲器525可以从主存储器510接收nn c的相应的权重和nn d的相应的权重,并存储接收到的权重。深度学习操作装置可以基于时钟信号通过第三片上网络将nn c的相应的权重传送到第七区域570的pe的下端和将nn d的相应的权重传送到第八区域575的pe的下端。
130.参照图5f,在传播权重之后,深度学习操作装置可以将nn a的输入特征图数据传播到第五区域560,将nn b的输入特征图数据传播到第六区域565,将nn c的输入特征图数据传播到第七区域570,并且将nn d的输入特征图数据传播到第八区域575。
131.深度学习操作装置的第1-1脉动数据设置模块520-1可以从主存储器510接收nn a的输入特征图数据,存储接收到的输入特征图数据,并基于时钟信号将nn a的输入特征图数据传送到第五区域560的左侧。由此,第五区域560的pe可以在从左到右的方向上传播nn a的输入特征图数据。
132.深度学习操作装置的第1-2脉动数据设置模块520-2可以从主存储器510接收nn c的输入特征图数据,存储接收到的输入特征图数据,并基于时钟信号将nn c的输入特征图数据传送到第七区域570的左侧。由此,第七区域570的pe可以在从左到右的方向上传播nn c的输入特征图数据。
133.深度学习操作装置的第2-1脉动数据设置模块可以从主存储器510接收nn b的输入特征图数据,并存储接收到的输入特征图数据。深度学习操作装置可以使用第二片上网络将nn b的输入特征图数据输入到第六区域565的右侧。由此,第六区域565的pe可以在从右到左的方向上传播nn b的输入特征图数据。
134.深度学习操作装置的第2-2脉动数据设置模块545-2可以从主存储器510接收nn d的输入特征图数据,并存储接收到的输入特征图数据。深度学习操作装置可以使用第二片上网络将nn d的输入特征图数据输入到第八区域575的右侧。由此,第八区域575的pe可以在从右到左的方向上传播nn d的输入特征图数据。
135.第五区域560的pe可以在从下到上的方向上传播通过在按顺序输入的nn a的权重与nn a的输入特征图数据之间执行乘法和加法运算而获得的相应的部分和。深度学习操作装置可以使用第四片上网络将传播到第五区域560的上侧的相应的部分和传送到输出累加器540的左下端。
136.第七区域570的pe可以在从上到下的方向上传播通过在按顺序输入的nn c的权重与nn c的输入特征图数据之间执行乘法和加法运算而获得的相应的部分和。传播到第七区域570的下侧的相应的部分和可以被传送到输出累加器540的左上端。
137.第六区域565的pe可以在从下到上的方向上传播通过在按顺序输入的nn b的权重
与nn b的输入特征图数据之间执行乘法和加法运算而获得的相应的部分和。深度学习操作装置可以使用第四片上网络将传播到第六区域565的上侧的相应的部分和传送到输出累加器540的右下端。
138.第八区域575的pe可以在从上到下的方向上传播通过在按顺序输入的nn d的权重与nn d的输入特征图数据之间执行乘法和加法运算而获得的相应的部分和。传播到第八区域575的下侧的相应的部分和可以被传送到输出累加器540的右上端。
139.图6是示出通过空间多任务处理执行深度学习操作的方法的流程图。
140.参照图6,操作610到655可以由参照以上的图1a至图1d、图2b至图5f以及下面的图7描述的深度学习操作装置中的任何一个、任何组合或全部来执行。
141.在操作610中,深度学习操作装置可以确定是否存在正在运行的第一nn。
142.在操作615中,当确定存在正在运行的第一nn时,深度学习操作装置可以基于第一nn的特性和第二nn的特性来分配pe(例如,脉动阵列的所有pe),以同时执行第一nn的深度学习操作和第二nn的深度学习操作。第二nn可以是新接收或确定为/调度为要运行的nn。
143.深度学习操作装置可以基于第一nn的特性和第二nn的特性来确定pe的分配方法和分配比率。nn的特性可以包括例如nn层的数量、每个层的输入、权重和输出数据的大小。
144.深度学习操作装置可以通过基于分配方法和分配比率抢占(preempt)第一nn的深度学习操作来获得pe,并且将通过抢占获得的pe中的两个或更多个pe分配给第二nn的深度学习操作。在一个示例中,深度学习操作装置可以将通过抢占获得的pe中的另外的两个或更多个pe分配给第一nn的深度学习操作。
145.在操作620中,深度学习操作装置可以基于第一nn的特性和第二nn的特性来设置相应的输入数据和相应的部分和的传播方向。深度学习操作装置可以设置第一nn的输入数据和第二nn的输入数据将在向左方向上传播还是在向右方向上传播,并且设置对应的部分和将在向上方向上传播还是在向下方向上传播。
146.在操作625中,深度学习操作装置可以使用分配的pe同时执行第一nn的深度学习操作和第二nn的深度学习操作。
147.当正在运行的第一nn随后被确定或调度为不存在时,深度学习操作装置可以使用脉动阵列的所有pe(或脉动阵列的所有pe中的一部分)来运行第二nn。
148.此外,为了提高nn吞吐量和tops/watt,即使在单独运行nn的情况下,深度学习操作装置也可以将一个nn划分为多个子nn并同时运行子nn。
149.在操作630中,深度学习操作装置可以确定第二nn是否具有多个批(batch)。
150.在操作635中,当第二nn具有多个批(batch)时(例如,当要对多个图像执行图像识别时),深度学习操作装置可以将第二nn划分为多个子nn。例如,深度学习操作装置可以将第二nn划分为具有一半的批的两个子nn。
151.在操作640中,深度学习操作装置可以基于多个子nn(或多个子nn中的两个或更多个子nn)的特性来分配pe(或pe中的两个或更多个pe),以同时执行多个子nn(或多个子nn中的两个或更多个子nn)的深度学习操作。
152.在操作645中,深度学习操作装置可以基于多个子nn(或多个子nn中的两个或更多个子nn)的特性来设置输入数据和相应的部分和的传播方向。例如,深度学习操作装置可以将脉动阵列的pe平均地分配给两个子nn。
153.在操作650中,深度学习操作装置可以使用分配的pe(或pe中的分配的两个或更多个pe)同时执行多个子nn(或多个子nn中的两个或更多个子nn)的深度学习操作。
154.当构成nn的各个层的大小和形状极端(drastic)时,可以有效地使用将一个nn划分为多个子nn并同时运行多个子nn的方法。例如,就权重固定的(weight-stationary)npu而言,如果输出通道的数量比pe的水平侧的长度小,则可能无法完全利用计算资源。根据同时运行多个子nn的方法,在如以上示例中未完全利用pe的情况下,当与仅可以运行一个nn的典型方法相比时,可以通过将一个nn划分为多个子nn并同时运行多个子nn来实现更高的性能。当各个层的大小或形状由于不同层的不同训练任务而极端时,可以有效地使用将nn划分为多个子nn的使用的另一这样的示例。在一个示例中,可根据nn的不同层的相应的任务或根据nn的不同批来执行将nn划分为多个子nn的处理。此外,对应于参照同时执行的深度学习操作的图2b的讨论,单独的内核操作可以被视为子nn。
155.在操作655中,当第二nn具有一个批时,深度学习操作装置可以使用脉动阵列的所有pe来运行第二nn。在一个示例中,当确定存在正在运行的第一nn时,深度学习操作装置也可以根据第二nn的相应的批将第二nn划分为多个子nn,基于多个子nn的特性分配多个pe中的两个或更多个pe,以同时执行多个子nn的深度学习操作,基于多个子nn的特性来设置输入数据和相应的部分和的传播方向,使用分配的两个或更多个pe来同时执行多个子nn的深度学习操作。
156.图7是示出利用npu进行空间多任务处理的方法的示例的示图。
157.参照图7,深度学习操作装置可以在具有用于空间多任务处理的npu的多用户环境(诸如,服务器或桌面)中同时运行多个nn(例如,nn a 710-1和nn b 710-2)。
158.多个nn可以通过神经网络框架720(诸如,张量流图(tensorflow)和学习框架(pytorch))来请求利用npu。该请求可以被转发到较低水平软件(神经网络调度器730)。
159.典型的npu不支持空间多任务处理。因此,在将运行一个nn的命令发送到典型的npu之后,不会将运行后续的nn的请求发送到典型的npu,直到针对所述一个nn的典型的npu的运行已经完成。
160.相反,各种实施例的深度学习操作装置可以同时运行多个nn以进行空间多任务处理。因此,考虑空间多任务处理的神经网络调度器730可以将运行多个nn的命令转发到npu。在这种情况下,由于npu 750是硬件并且神经网络调度器730是由深度学习操作装置的处理器执行的软件,因此可以通过npu装置驱动器740转发nn运行命令,npu装置驱动器740启动神经网络调度器730与npu 750之间的通信。
161.在深度学习操作装置中,支持空间多任务处理的npu 750可以同时运行考虑空间多任务处理的神经网络调度器730已经针对其发送用于运行的命令的多个nn。多个运行的nn可以包括涉及推断操作以及训练操作的nn。
162.在此关于图1a至图1d和图2b至图7描述的处理器、深度学习操作装置、处理元件(pe)、脉动阵列、主存储器、全局缓冲器、脉动数据设置、权重fifo、输出累加器、神经网络框架、神经网络调度器、npu装置驱动器、npu、输入数据传送模块、脉动数据设置模块、输出数据接收模块以及其他设备、模块、装置和其他组件由硬件组件实现。可以用于执行本技术中描述的操作的硬件组件的示例在适当的情况下包括控制器、传感器、生成器、驱动器、存储器、比较器、脉动阵列、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置
为执行本技术中描述的操作的任何其他电子组件。在其他示例中,执行本技术中描述的操作的一个或多个硬件组件由计算硬件实现(例如,由一个或多个处理器或计算机(例如,作为非限制性示例,与一个或多个脉动阵列协作)实现)。处理器或计算机可以由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以定义的方式响应并执行指令以实现期望结果的任何其他装置或装置的组合)实现。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可以执行指令或软件(诸如,操作系统(os)和在os上运行的一个或多个软件应用),以执行本技术中描述的操作。硬件组件还可以响应于指令或软件的执行而访问、操纵、处理、创建和存储数据。为了简单,可以在本技术中描述的示例的描述中使用单数术语“处理器”或“计算机”,但是在其他示例中,可以使用多个处理器或计算机,或者处理器或计算机可以包括多个处理元件,或多种类型的处理元件,或两者。例如,单个硬件组件或两个或更多个硬件组件可以由单个处理器、或两个或更多个处理器、或处理器和控制器来实现。一个或多个硬件组件可以由一个或多个处理器或者处理器和控制器实现,并且一个或多个其他硬件组件可以由一个或多个其他处理器或者另外的处理器和另外的控制器实现。一个或多个处理器或处理器和控制器可以实现单个硬件组件或两个或更多个硬件组件。硬件组件可以具有不同处理配置中的任何一个或多个,硬件组件的示例包括单个处理器、独立处理器、并行处理器、单指令单数据(sisd)多处理、单指令多数据(simd)多处理、多指令单数据(misd)多处理和多指令多数据(mimd)多处理。
163.执行本技术中描述的操作的图1a至图1d和图2b至图7的方法由计算硬件(例如,由一个或多个处理器或计算机)执行,计算硬件被实现为如上所述地执行指令或软件,以执行在本技术中描述的通过该方法执行的操作,以执行本技术中描述的由所述方法执行的操作。例如,单个操作或者两个或更多个操作可以由单个处理器、或两个或更多个处理器、或处理器和控制器执行。一个或多个操作可以由一个或多个处理器或者处理器和控制器执行,并且一个或多个其他操作可以由一个或多个其他处理器或者另外的处理器和另外的控制器执行。一个或多个处理器或者处理器和控制器可以执行单个操作或者两个或更多个操作。
164.用于控制计算硬件(例如,作为非限制性示例的一个或多个处理器或计算机以及与一个或多个处理器或计算机组合的一个或多个脉动阵列)以实现硬件组件并执行如上所述的方法的指令或软件可以被编写为计算机程序、代码段、指令或它们的任何组合,用于单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的更高级代码。可基于附图中所示的框图和流程图以及在此使用的对应描述使用任何编程语言来编写指令或软件,附图中所示的框图和流程图以及在此使用的对应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
165.用于控制计算硬件(例如,一个或多个处理器或计算机以及与一个或多个处理器或计算机组合的一个或多个脉动阵列)以实现硬件组件并执行如上所述的方法的指令或软
件、以及任何相关的数据、数据文件和数据结构可以被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括只读存储器(rom)、随机存取可编程只读存储器(prom)、电可擦除可编程只读存储器(eeprom)、随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪存、非易失性存储器、cd-rom、cd-r、cd+r、cd-rw、cd+rw、dvd-rom、dvd-r、dvd+r、dvd-rw、dvd+rw、dvd-ram、bd-rom、bd-r、bd-r lth、bd-re、蓝光或光盘存储器、硬盘驱动器(hdd)、固态驱动器(ssd)、卡型存储器(诸如,多媒体卡或微型卡(例如,安全数字(sd)或极限数字(xd)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及被配置为以非暂时性方式存储指令或软件以及任何相关的数据、数据文件和数据结构并向一个或多个处理器或计算机提供指令或软件以及任何相关的数据、数据文件以及数据结构,使得一个或多个处理器或计算机可以执行指令的任何其他装置。在一个示例中,指令或软件以及任何相关的数据、数据文件和数据结构分布在网络连接的计算机系统上,使得指令和软件以及任何相关的数据、数据文件和数据结构由一个或多个处理器或计算机以分布式方式存储、访问和执行。
166.虽然本公开包括具体示例,但是在理解本技术的公开之后将清楚的是,在不脱离权利要求及其等同物的精神和范围的情况下,可以在这些示例中进行形式和细节上的各种改变。在此描述的示例仅应被认为是描述性的,而不是为了限制的目的。每个示例中的特征或方面的描述应被认为适用于其他示例中的类似特征或方面。如果描述的技术以不同的顺序执行,和/或如果描述的系统、架构、装置或电路中的组件以不同的方式组合,和/或由其他组件或其等同物替换或补充,则可以实现合适的结果。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1