用于执行并行计算的方法和系统与流程

文档序号:24639473发布日期:2021-04-09 20:51阅读:153来源:国知局
用于执行并行计算的方法和系统与流程

相关申请的交叉引用

本公开要求2018年8月29日提交的美国临时申请号62/724,539和2019年7月30日提交的美国专利申请号16/526,597的优先权的权益,这些申请通过引用整体地并入本文中。



背景技术:

卷积神经网络(cnn)是广泛地应用在机器学习上的一种类型的神经网络。cnn被用在包括图像处理、语音识别、玩游戏、机器人等的各种应用中。用于cnn运算的高效架构并将cnn运算映射到架构中的设计可能是非常重要的。



技术实现要素:

本公开的实施例提供一种用于执行并行计算的系统。该系统可包括:任务管理器;和多个核心,该多个核心与任务管理器耦合并被配置成基于来自任务管理器的指令分别地执行并行计算任务集,其中多个核心中的每一个还包括:处理单元,该处理单元被配置成生成与并行计算任务集当中的第一计算任务相对应的第一输出特征图;接口,该接口被配置成从任务管理器接收一个或多个指令以从多个核心中的其他核心收集与并行计算任务集相对应的外部输出特征图;约简单元,该约简单元被配置成基于第一输出特征图和接收到的外部输出特征图生成约简特征图。

本公开的实施例还提供一种用于在与任务管理器耦合的多个核心中的一核心处执行并行计算任务集的方法。该方法可包括:由核心的处理单元生成与并行计算任务集当中的第一计算任务相对应的第一输出特征图;由核心的接口从任务管理器接收一个或多个指令以从多个核心中的其他核心收集与并行计算任务集相对应的外部输出特征图;由核心的约简单元基于第一输出特征图和接收到的外部输出特征图生成约简特征图。

本公开的实施例还提供一种用于由与多个核心耦合的任务管理器来管理任务的方法。该方法可包括:指示多个核心中的一核心生成与并行计算任务集当中的第一计算任务相对应的第一输出特征图,其中在生成第一输出特征图之后,核心向任务管理器发出屏障指令并且停止与第二计算任务相对应的第二输出特征图的生成;从多个核心中的其他核心接收屏障指令;在接收到屏障指令之后,向核心发送恢复指令以恢复第二输出特征图的生成;选择核心作为约简核心以从其他核心接收与并行计算任务集相对应的外部输出特征图,以基于第一输出特征图和外部输出特征图生成约简特征图,其中第二输出特征图的生成与约简特征图的生成并行地发生。

所公开的实施例的附加特征和优点将部分地在以下描述中被阐述,并且部分地将从描述中显而易见,或者可以通过对实施例的实践来学习。可以通过权利要求中阐述的要素和组合来实现和获得所公开的实施例的特征和优点。

应当理解,上述一般描述和以下详细描述都仅仅是示例性和说明性的,而不限制如要求保护的所公开的实施例。

附图说明

在以下详细描述和附图中图示本公开的实施例和各个方面。图中所示的各种特征未按比例绘制。

图1a图示示例性卷积神经网络(cnn)运算。

图1b图示cnn运算的划分。

图1c图示用于训练卷积神经网络的示例性程序。

图2a图示根据本公开的实施例的示例性神经网络处理架构。

图2b图示根据本公开的实施例的并入神经网络处理架构的示例性云系统的示意图。

图3图示根据本公开的实施例的用于执行并行计算的系统的结构图。

图4图示根据本公开的实施例的用于执行并行计算的示例性程序。

图5图示根据本公开的实施例的提供用于由与任务管理器耦合的多个核心对矩阵集执行并行计算任务集的示例性方法的流程图。

图6图示根据本公开的实施例的提供用于由与多个核心耦合的任务管理器来管理任务的示例性方法的流程图。

具体实施方式

在下面更详细地描述本公开的特定方面。如果与通过引用并入的术语和/或定义冲突,则本文提供的术语和定义为准。

本公开中描述的技术具有以下技术效果中的一种或多种。在一些实现方式中,本公开中描述的技术提供一种用于执行并行计算的系统,包括:任务管理器;和多个核心,该多个核心与任务管理器耦合并被配置成基于来自任务管理器的指令分别地执行并行计算任务集,其中多个核心中的每一个还包括:处理单元,该处理单元被配置成生成与并行计算任务集当中的第一计算任务相对应的第一输出特征图;接口,该接口被配置成从任务管理器接收一个或多个指令以从多个核心中的其他核心收集与并行计算任务集相对应的外部输出特征图;约简单元,该约简单元被配置成基于第一输出特征图和接收到的外部输出特征图生成约简特征图。此任务管理器允许处理单元处理用于当前迭代和其他组件(例如,接口、存储器单元和约简单元)的矩阵以并行地基于先前迭代的结果生成约简特征图。因此,可进一步利用例如cnn运算的并行性。

如本文所使用的,术语“包括”、“包括有”或其任何其他变化旨在涵盖非排他性包括,使得包括元件的列表的过程、方法、组合物、制品或装置不仅包括那些元件,而且可以包括未明确地列举或这种过程、方法、组合物、制品或装置所固有的其他元件。在“示例”而不是“理想”的意义使用术语“示例性”。

图1a图示示例性卷积神经网络(cnn)运算。在此示例性运算中,层的输入激活被构造为跨许多(例如,c个)通道的二维(2d)输入特征图集。可将二维输入特征图中的每一个称为通道。如图1a中所示,一个通道的输入数据102(例如,图像)具有h×w的大小。因此,二维(2d)输入特征图集的大小可以为h×w×c。

每个通道可与来自一堆过滤器104的大小为s×r的2d过滤器进行卷积。一个过滤器104可被相应地用于一个通道。过滤器104可在输入特征图上滑动,并且可从过滤器104(包括权重)和由过滤器104覆盖的输入特征图的一部分的卷积运算生成点。通过在特征图上滑动过滤器104并重复卷积运算,可生成h’×w’大小的特征输出图106。如图1a中所示,存在k个过滤器组104,从而h’×w’大小的特征输出图106的k个维度。换句话说,特征输出图106的大小是h’×w’×k。

在cnn模型中,此类运算可针对多个层重复。在这些运算期间,前一层的特征输出图106用作下一层的输入数据。换句话说,在前一层中大小为h’×w’×k的特征输出图106可用作下一层中的输入数据102。应领会,前一层中的特征输出图106的大小值(例如,h’、w’和k)可被用作下一层中的输入数据102的大小值(例如,h、w和c)。

由于cnn训练的并行性,cnn训练的cnn运算可在k个维度上分布在多个处理核心之间。图1b图示cnn运算的划分。在一些实施例中,可在若干处理核心之间划分和分发cnn运算。例如,如图1b中所示,大小为h×w×c的输入数据102可被划分成例如四个部分112、114、116和18,并且被分发给四个处理核心(例如,核心132、134、136和138)。因此,每个处理核心负责输入数据102的1/4。大小为s×r×c的过滤器也跨四个处理核心132、134、136和138分布。因此,在图1b的并行计算的阶段中,四个处理核心132、134、136和138中的每一个可并行地生成中间特征图。在四个处理核心132、134、136和138生成中间特征图之后,四个处理核心132、134、136和138中的第一核心(例如,核心132)可在收集和约简的阶段中收集所生成的中间特征图并将它们约简为单个特征图。应领会,在收集和约简的阶段中生成的单个特征图是第一层中的k个过滤器组104中的第一组的输出。

图1c图示用于训练卷积神经网络的示例性程序130。程序130示出第一层l的输出与第二层l+1的输入之间的连接。例如,在示例性程序130中,在第一层l的迭代中,可生成输出rl并将其用作第二层l+1的迭代的输入。

如以上所讨论的,前一层的输出可以是下一层的输入。因此,可重复以上两个阶段达k次。在迭代期间,收集和约简在所有核心之间轮换。例如,第二核心执行第二轮收集和还原,第三核心和第四核心分别执行第三轮和第四轮,并且再次返回到第一核心以进行第五轮。返回参考图1b,迭代可产生包括以交错方式分布在4个核心上的k个特征图的输出120。

本公开的实施例提供用于并行计算例如cnn运算的系统和方法。所公开的实施例将计算和约简分发到核心的不同组件,从而允许并行地执行计算和约简。例如,计算的阶段可使用算术和逻辑单元(alu),然而收集和约简阶段可使用存储器、接口和约简单元。因此,可使迭代流水线化以增强性能。

图2a图示根据本公开的实施例的示例性并行计算架构200。如图2a中所示,架构200可包括芯片通信系统202、主机存储器204、存储器控制器206、直接存储器存取(dma)单元208、联合测试行动组(jtag)/测试访问端(tap)控制器210、外围接口212、总线214、全局存储器216等。应领会,芯片通信系统202可基于传递的数据执行算法运算(例如,机器学习运算)。

芯片通信系统202可包括全局管理器2022和多个核心2024。全局管理器2022可包括至少一个任务管理器以与一个或多个核心2024协调。每个任务管理器可与提供用于并行计算的突触/神经元电路(例如,神经网络)的核心矩阵2024相关联。例如,图2a的处理元件的顶层可以向神经网络提供表示输入层的电路,然而核心的第二层可以提供表示神经网络的隐藏层的电路。在一些实施例中,可将芯片通信系统202实现为神经网络处理单元(npu)、图形处理单元(gpu)或另一异构加速器单元。如图2a中所示,全局管理器2022可包括两个任务管理器以与两个核心阵列协调。

核心2024例如可包括一个或多个处理元件,每个处理元件包括单指令多数据(simd)架构,该simd结构包括被配置成基于从全局管理器2022接收到的指令执行一个或多个运算(例如,乘法、加法、乘累加等)的一个或多个处理单元。为了对所传递的数据分组执行运算,核心2024可包括用于处理数据分组中的信息的一个或多个处理元件。每个处理元件可以包括任何数目的处理单元。在一些实施例中,可将核心2024被认为是块片等。

主机存储器204可以是诸如主机cpu的存储器的片外存储器。例如,主机存储器204可以是ddr存储器(例如,ddrsdram)等。与作为更高级别的高速缓存集成在一个或多个处理器内的片上存储器相比,主机存储器204可被配置成以较慢的访问速度存储大量数据。

存储器控制器206可管理往返于具有片上存储器块(例如,8gb第二代高带宽存储器(hbm2)的4个块)用作主存储器的全局存储器216内的具体存储器块的数据的读取和写入。例如,存储器控制器206可管理来自外部芯片通信系统202(例如,来自dma单元208或与另一npu相对应的dma单元)或来自芯片通信系统202内部(例如,经由通过全局管理器2022的任务管理器控制的2d网格来自核心2024中的本地存储器)的读取/写入数据。此外,尽管在图2a中示出一个存储器控制器,但是应领会,可在架构200中提供不止一个存储器控制器。例如,在全局存储器216内的每个存储器块(例如,hbm2)可有一个存储器控制器。

存储器控制器206可生成存储器地址并发起存储器读取或写入周期。存储器控制器206可包含可由一个或多个处理器写入和读取的若干硬件寄存器。寄存器可包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器及其他类型的寄存器。这些寄存器可指定源、目的地、转移的方向(从输入/输出(i/o)设备读取或者向i/o设备写入)、转移单元的大小、要在一个突发中转移的字节数和/或存储控制器的其他典型特征的某种组合。

dma单元208可协助在主机存储器204与全局存储器216之间转移数据。另外,dma单元208可协助在多个npu(例如,npu202)之间转移数据。dma单元208可允许片外设备访问片上存储器和片外存储器两者而不引起cpu中断。因此,dma单元208还可生成存储器地址并发起存储器读取或写入周期。dma单元208还可包含可由一个或多个处理器写入和读取的若干硬件寄存器,包括存储器地址寄存器、字节计数寄存器、一个或多个控制寄存器及其他类型的寄存器。这些寄存器可指定源、目的地、转移的方向(从输入/输出(i/o)设备读取或者向i/o设备写入)、转移单元的大小和/或要在一次突发中转移的字节数的某种组合。应领会,架构200可包括第二dma单元,其可用于在其他神经网络处理架构之间转移数据以允许多个神经网络处理架构在不涉及主机cpu的情况下直接通信。

jtag/tap控制器210可指定实现用于对npu进行低开销访问而无需对系统地址和数据总线进行直接外部访问的串行通信接口(例如,jtag接口)的专用调试端口。jtag/tap控制器210还可具有实现协议来访问呈现各个部分的芯片逻辑级别和设备能力的一组测试寄存器的片上测试访问接口(例如,tap接口)。

外围接口212(诸如pcie接口),若存在的话,用作(并且通常是)芯片间总线,从而提供架构200与其他设备之间的通信。

总线214包括芯片内总线和芯片间总线。芯片内总线像由系统架构所要求的那样将所有内部组件彼此连接。虽然并非所有组件都连接到每一其他组件,但是所有组件确实具有到它们需要与之进行通信的其他组件的某种连接。芯片间总线将npu与诸如片外存储器或外围设备的其他设备相连。通常,如果存在外围接口212(例如,芯片间总线),则总线214仅与芯片内总线有关,但是在一些实现方式中,它仍然能与专门的总线间通信有关。

芯片通信系统202可被配置成执行基于神经网络的运算。

架构200还可包括主机单元220。主机单元220可以是一个或多个处理单元(例如,x86中央处理单元)。在一些实施例中,具有主机单元220和主机存储器204的主机系统可包括编译器(未示出)。编译器是将用一种编程语言编写的计算机代码转换成npu指令以创建可执行程序的程序或计算机软件。在机器学习应用中,编译器可执行各种运算,例如,预处理、词法分析、解析、语义分析、将输入程序转换为中间表示、代码优化和代码生成或它们的组合。

在一些实施例中,生成npu指令的编译器可以在主机系统上,该主机系统将命令推送到芯片通信系统202。基于这些命令,每个任务管理器可将任何数目的任务指派给一个或多个核心(例如,核心2024)。这些命令中的一些可指示dma单元208将指令(由编译器生成)和数据从主机存储器204加载到全局存储器216中。然后可将所加载的指令分发给被指派有对应任务的每个核心,并且一个或多个核心可处理这些指令。

图2b图示根据本公开的实施例的并入神经网络处理架构200的示例性云系统230的示意图。

如图2b中所示,云系统230可给云服务提供人工智能(ai)能力,并且可包括多个计算服务器(例如,232和234)。在一些实施例中,计算服务器232可例如并入图2a的并行计算架构200。为了简单和清楚,在图2b中以简化方式示出并行计算架构200。

借助并行计算架构200,云系统700可提供图像识别、面部识别、翻译、3d建模等的扩展ai能力。

应领会,可将并行计算架构200部署到其他形式的计算设备。例如,还可将神经网络处理架构200集成在诸如智能电话、平板和可穿戴设备的计算设备中。

此外,虽然在图2a-2b中示出了并行计算架构,但是应领会,可使用提供执行并行计算的能力的任何加速器。

图3图示根据本公开的实施例的用于执行并行计算的系统300的结构图。系统300可以是图2a的架构200的子系统,并且包括多个核心(例如,核心2024、2026、2028和2030)以及与该多个核心耦合的任务管理器310。多个核心可被配置成根据来自任务管理器310的指令来分别对作为输入数据的矩阵集执行并行计算任务集。

在一些实施例中,核心2024可包括计算单元302、接口304、存储器单元306和约简单元308。应领会,核心2026、2028、2030等可包括核心2024的类似或相同的结构,并且在此省略其描述。

计算单元302可包括被配置成对矩阵的一部分(例如,矩阵集中的第一矩阵或第二矩阵)执行一个或多个计算任务(例如,卷积计算)的一个或多个alu(作为例如乘法器、加法器或乘累加器)。例如,计算单元302可处理第一矩阵以生成与并行计算任务集当中的第一计算任务相对应的第一输出特征图。应领会,在一些实施例中,矩阵(例如,第一矩阵)可包括仅一行数据。由核心2024的计算单元302生成的卷积计算的结果可被存储在本地或者由另一核心(例如,核心2026、2028或2030)检索。在本地存储的结果可被称为本地结果。例如,可在本地存储第一输出特征图。

接口304可被配置成与任务管理器230和相同组中的其他核心一起传递数据。在一些实施例中,接口304可被配置成从任务管理器310接收一个或多个指令以从多个核心当中的其他核心收集与并行计算任务集相对应的外部输出特征图。

接口304可由任务管理器(例如,任务管理器310)控制。例如,任务管理器310可向接口304提供指令以使得核心2024能够执行卷积计算。接口304还可与其他核心(例如,核心2026、2028和2030)进行通信以接收指派给这些核心的卷积计算的结果。从其他核心接收到的结果可被称为外部输出特征图。在收集到外部输出特征图之后,核心2024可对所收集到的外部输出特征图和本地结果(例如,第一输出特征图)进一步执行约简。

除从其他核心主动地获取外部输出特征图以外,接口304还可以是被动的并允许任务管理器310指示其他核心将外部输出特征图发送到核心2024,该核心负责执行收集和约简。

本地存储器单元306可被配置成存储本地结果和所检索到的外部输出特征图。本地存储器单元306可包括使用统一寻址空间的多个存储器块。在一些实施例中,统一寻址空间的较高位可与核心的标识(例如,核心id)相关联。此外,每个核心的存储器可独立于计算单元302执行收集和约简。并且本地存储器单元306可具有用于收集和约简的专用端口。例如,本地存储器单元306可包括用于与另一核心一起收发数据(例如,本地结果或外部输出特征图)的第一端口和用于在约简上与计算单元302合作的第二端口。因此,可与在每个核心处执行的卷积计算并行地执行收集和约简。

约简单元308可被配置成基于第一输出特征图和所接收到的外部输出特征图生成约简特征图(例如,具有h’×w’的维度)。例如,可通过池化将第一输出特征图和所接收到的外部输出特征图约简成约简特征图。池化可通过计算特征图的区域的最大值或平均值来约简第一输出特征图和所接收到的外部输出特征图。

任务管理器310可协调多个核心(例如,核心2024、2026、2028和2030)。例如,任务管理器310可包括被配置成指示多个核心执行并行计算(包括卷积计算、收集和约简)的dma引擎(在图3中未示出)。在一些实施例中,任务管理器310可被配置成指示核心的计算单元302生成与第二计算任务相对应的第二输出特征图并且指示核心的约简单元308同时地生成约简特征图。

因为约简特征图是基于输出特征图(包括第一输出特征图和由其他核心生成的外部输出特征图)生成的,所以核心等待直到所有外部输出特征图被生成为止。因此,如果在接收较早的输出特征图以进行约简之前生成了新的输出特征图,则可用新的输出特征替换较早的输出特征图。因此,当第一输出特征图被生成时,计算单元302可向任务管理器310发出屏障指令并停止第二输出特征图的生成。以这种方式,可将输出特征图保留在本地存储器单元306中直到输出特征图被用于约简为止。

任务管理器310然后可从多个核心中的每一个接收屏障指令。在从多个核心中的每一个接收到屏障指令之后,它向任务管理器310指示特征图(包括第一输出特征图和外部输出特征图)已为约简准备好。由任务管理器310选择用于约简第一输出特征图和外部输出特征图的核心然后可从其他核心接收外部输出特征图并约这些简特征图。另一方面,多个核心中的每一个可继续生成新的特征图集(例如,第二输出特征图)。因此,在从多个核心中的每一个接收到屏障指令之后,任务管理器310可向核心发送恢复指令以恢复第二输出特征图的生成。

图4图示根据本公开的实施例的用于执行并行计算的示例性程序400。

与图1c的程序130相比,程序400将k次迭代划分成低级程序402和高级程序404。如以上所讨论的,卷积计算任务可由处理单元执行,而收集和约简可由存储器、接口和约简单元执行。因此,可并行地执行卷积计算及收集和约简。通过将程序130修改此程序400的形式,可利用卷积计算与收集和约简之间的并行性。

可以在n个核心(例如,图3中所示的四个核心)的每一个上并行地执行低级程序402。在低级程序402的每个循环中,第n个核心可通过调用函数“compute(n)”来执行其对应的卷积计算。在函数“compute(n)”的执行完成之后,第n个核心可向任务管理器发出例如屏障指令。例如,参考图3,当第一矩阵的处理完成时,核心2024的计算单元302可执行函数“signal(i,1)”以向任务管理器310的dma引擎发出屏障指令。响应于屏障指令,任务管理器310知道在第n个核心上完成的卷积计算。应领会,任务管理器310可从与任务管理器310相关联的所有核心(例如,包括核心2024、2026、2028和2030)接收屏障指令。例如,任务管理器310可确定是否已接收到来自所有核心的屏障指令。当已接收到来自所有核心的屏障指令时,任务管理器310可确定第一次迭代的卷积计算完成。

响应于所接收到的屏障指令,任务管理器310可指令第n个核心停止卷积计算。例如,任务管理器310可向第n个核心发送“wait”指令以使第n个核心执行函数wait(i,n),使得可停止卷积计算。虽然在第n个核心上停止卷积计算,但是第n个核心可以仍然等待来自任务管理器310的进一步指令。

应领会,可将卷积计算的结果(例如,中间特征图)存储在每个核心的本地存储器(例如,本地存储器单元306)中。

在一些实施例中,在已接收到来自所有核心的屏障指令之后,可执行高级程序404。在一些实施例中,可在例如任务管理器310上执行高级程序404。例如,当任务管理器在接收到来自所有核心的屏障指令之后确定第一次迭代的卷积计算完成时,任务管理器310可选择这些核心中的一个(例如,核心2024)并且向该核心提供“collect&reduce(收集和约简)”指令以从其他核心收集数据(例如,中间特征图)并将它们约简成一个特征图,该一个特征图可被用作下一层的输入。例如,核心2024可与任务管理器310关联地从每个核心的本地存储器中检索中间特征图并且将所检索到的中间特征图存储在核心2024的本地存储器单元306中。因此,在已从其他核心中检索到中间特征图之后,核心2024可拥有所有中间特征图以进一步处理。

除发送“collect&reduce”指令以外,在已接收到来自所有核心的屏障指令之后,任务管理器310可向所有核心发送“resume(恢复)”指令以恢复卷积计算以进行第二次迭代。如以上所讨论的,每个核心可包括多个处理单元和约简单元。因此,可并行地执行第一次迭代的收集和约简以及第二迭代的卷积计算。这在任务管理器与核心之间允许同步方案,从而在需要跨核心数据交换时在所有核心之间建立依赖关系。

在一些实施例中,编译器可负责生成“wait”指令、“collect&reduce”指令和“resume”指令并将它们发送到每个核心。应领会,可将“wait”指令和“collect&reduce”指令编译成硬件指令。

下表1还图示程序400在图3的核心上的执行。如以上所讨论的,在核心2024中,计算单元302可执行卷积计算,并且接口304、本地存储器单元306和约简单元308可执行收集和约简。因此,在表1中,可将接口、本地存储器单元和约简单元统称为r&c单元。

表1

如表1中所示,在第i次迭代(即,第一行)中,每个核心(例如,核心2024、2026、2028或2030)对矩阵集执行卷积计算以生成特征图,并且将例如屏障指令用信号通知给任务管理器(例如,图3的任务管理器310)。可将卷积计算的结果在本地存储在每个核心中。在任务管理器接收到来自所有四个核心的所有屏障指令之后,任务管理器可生成“resume”指令和“wait”指令并将它们分别发出到每个核心的处理单元和r&c单元。在接收到“resume”指令时,处理单元可执行第i+1次迭代的卷积计算。同时,核心2024的r&c单元可从其他核心收集特征图并对所收集到的特征图执行约简。如表1中所示,第i+1次迭代的卷积计算和对第i次迭代的特征图的约简被并行地执行。

另外,参考表1,当与任务管理器相关联的核心的数目为n并且要处理的矩阵集的数目为k时,对于第k次迭代,核心当中的第(k%n)个核心可充当约简核心,其从其他核心中检索与矩阵集相关联的外部结果并生成约简矩阵。k是小于或等于k的正整数。应领会,其他核心可将本地结果进一步传送到第(k%n)个核心。“k%n”表示在将k除以n之后的余数。例如,如表1中所示,当n=4且k=3时,第3个核心(例如,核心320)将检索外部结果并生成约简矩阵

在表1中,在核心当中,第一核心(例如,核心2024)生成第一约简矩阵,第二核心(例如,核心2026)生成第二约简矩阵,第三核心(例如,核心2028)生成第三约简矩阵,并且第四核心(例如,核心2030)生成第四约简矩阵,并且可将第一约简矩阵、第二约简矩阵、第三约简矩阵和第四约简矩阵以交错方式组合成约简矩阵集。

图5图示根据本公开的实施例的用于由与任务管理器耦合的多个核心对矩阵集执行并行计算任务集的方法500。方法500可由例如图3的核心2024、2026、2028和2030中的一个来实现。方法500可包括如下步骤。

在步骤502中,核心的处理单元可生成与并行计算任务集当中的第一计算任务相对应的第一输出特征图。可通过对矩阵集中的第一矩阵执行卷积处理来生成第一输出特征图。核心的处理单元还可生成与第二计算任务相对应的第二输出特征图。当第一输出特征图被生成时,核心可向任务管理器发出屏障指令,并且停止第二输出特征图的生成。应领会,每个核心可向任务管理器发出它自己的屏障指令。

在步骤504中,核心的接口可从任务管理器接收一个或多个指令以从多个核心中的其他核心收集与并行计算任务集相对应的外部输出特征图。应领会,多个核心中的每一个可对矩阵集的一部分执行处理并生成输出特征图。

在步骤506中,核心的约简单元可基于第一输出特征图和外部输出特征图生成约简特征图。如以上所讨论的,约简特征图可被用作并行计算任务的下一次迭代的输入。

在多个核心当中,第一核心可生成第一约简输出特征图,第二核心可生成第二约简输出特征图,第三核心可生成第三约简输出特征图,第四核心可生成第四约简输出特征图,并且第一约简输出特征图、第二约简输出特征图、第三约简输出特征图和第四约简输出特征图被以交错方式组合成约简输出特征图集。

在一些实施例中,任务管理器可确定是否接收到来自多个核心中的每一个的屏障指令。响应于确定接收到来自多个核心中的每一个的屏障指令,任务管理器然后可向多个核心中的每一个发送恢复指令以恢复第二输出特征图的生成。

此外,任务管理器还可在多个核心中选择约简核心以接收外部输出特征图并与第二输出特征图的生成并行地生成约简特征图。例如,核心的数目可以是n,矩阵集的数目可以是k,并且对于第k次迭代,约简核心是多个核心当中的第(k%n)个核心。应领会,k是小于或等于k的正整数。

图6图示根据本公开的实施例的用于由与多个核心耦合的任务管理器来管理任务的方法600。方法600可由例如图3的任务管理器310来实现。方法600可包括如下步骤。

在步骤602中,任务管理器310可指示多个核心中的一个核心(例如,核心2024)生成与并行计算任务集当中的第一计算任务相对应的第一输出特征图。例如,可通过对数据矩阵执行卷积处理来生成第一输出特征图。如以上所讨论的,当在核心上生成第一输出特征图时,该核心可向任务管理器310发出屏障指令并且可停止与第二计算任务相对应的第二输出特征图的生成。在一些实施例中,任务管理器310可基于屏障指令停止处理。

因此,在步骤604中,任务管理器310可从多个核心中的其他核心接收屏障指令。应领会,由核心在步骤602中发送的屏障指令也由任务管理器310接收。屏障指令可充当同步方案。

在步骤606中,任务管理器310可向核心发送恢复指令以恢复第二输出特征图的生成。在接收到来自所有多个核心的所有屏障指令之后,任务管理器310可确定第一计算任务已在多个核心中的每一个上完成并将恢复指令发送到每个核心以恢复第二输出特征图的生成。

在步骤608中,任务管理器310可选择核心作为约简核心以从其他核心接收与并行计算任务集相对应的外部输出特征图以基于第一输出特征图和外部输出特征图生成约简特征图。第二输出特征图的生成与约简特征图的生成并行地发生。例如,在接收到来自多个核心中的所有核心的屏障指令之后,任务管理器310可向所选择的约简核心发出指令以从除约简核心以外的核心收集外部输出特征图以生成约简特征图。因为在步骤606中还恢复了第二输出特征图的生成,所以第二输出特征图的生成和约简特征图的生成可以以不同的次序或并行地发生。

本公开的实施例还提供了一种计算机程序产品。该计算机程序产品可以包括在其上存储有计算机可读程序指令以用于使处理器执行上述方法的非暂时性计算机可读存储介质。

计算机可读存储介质可以是可存储指令以供由指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁性存储设备、光学存储设备、电磁存储设备、半导体存储设备或上述各项的任何合适的组合。计算机可读存储介质的更具体示例的非详尽列表包括下列的:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、静态随机存取存储器(sram)、便携式紧致盘只读存储器(cd-rom)、数字通用盘(dvd)、记忆棒、软盘、诸如穿孔卡或在其上记录有记录的凹槽中的凸起结构的机械地编码的设备、以及上述各项的任何合适的组合。

用于执行上述方法的计算机可读程序指令可以是汇编程序指令、指令集架构(isa)指令、机器指令、机器相关指令、微码、固件指令、状态设定数据、或用一种或多种编程语言(包括面向对象编程语言)和常规过程编程语言的任何组合编写的源代码或目标代码。计算机可读程序指令可以完全地作为独立软件包在计算机系统上执行,或者部分地在第一计算机上并部分地在远离第一计算机的第二计算机上执行。在后者场景中,第二远程计算机可以通过包括局域网(lan)或广域网(wan)的任何类型的网络连接到第一计算机。

可以将计算机可读程序指令提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现上述方法的手段。

图中的流程图和图图示根据本说明书的各种实施例的设备、方法和计算机程序产品的可能的实现方式的架构、功能性和运算。在这方面,流程图或图中的框可以表示软件程序、代码段或部分,该代码包括用于实现具体功能的一个或多个可执行指令。还应该注意,在一些替代实现方式中各框中指出的功能可以不按图中指出的次序发生。例如,取决于所涉及的功能性,实际上可以基本上同时执行相继示出的两个框,或者有时可以以相反次序执行这些框。还应注意,图和/或流程图的每个框以及图和流程图中的各框的组合可以由执行所指定的功能或行为的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。

应领会,还可以在单个实施方式中相结合地提供为了清楚在单独的实施方式的上下文中描述的本说明书的某些特征。相反地,还可以单独地或以任何合适的子组合或如在本说明书的任何其他描述的实施例中合适那样提供为了简洁在单个实施例的上下文中描述的本说明书的各种特征。在各种实施例的上下文中描述的某些特征不应被认为是那些实施例的必要特征,除非该实施例在没有那些要素的情况下不起作用。

尽管已结合本说明书的具体实施例描述了本说明书,但是显然,许多替代方案、修改和变化对于本领域的技术人员而言将是显而易见的。例如,尽管使用对输入数据矩阵的处理作为示例来描述一些实施例,但是所描述的系统和方法可被应用于任何并行计算任务。因此,旨在包含落在所附权利要求的精神和广义范围内的所有此类替代方案、修改和变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1