掌桥专利:专业的专利平台
掌桥专利
首页

一种芯片、片间通信方法、电子设备和存储介质

文献发布时间:2023-06-19 11:08:20


一种芯片、片间通信方法、电子设备和存储介质

技术领域

本申请涉及计算机技术,具体涉及一种芯片、片间通信方法、电子设备和存储介质。

背景技术

随着科技进步,单颗芯片提供的算力有限,需要多颗芯片协同完成计算,在多颗芯片间需要通过片间通信技术进行数据共享。

为了保证正常处理数据,各颗芯片之间需要进行片间通信。上述片间通信可以是指芯片在接收到与其连接的第一芯片发送的数据后,向与其连接的第二芯片输出该数据或者对该数据进行处理后,向上述第二芯片输出上述处理得到的数据的过程。以人工智能运算领域为例,随着人工智能模型越来越大,需要处理的数据越来越多,单颗人工智能(Artificial Intelligence)芯片(以下简称AI芯片)已无法满足提供足够算力,因此,需要多颗AI芯片联合提供足够的算力以保证数据正常处理。

可见需要高效率的片间通信方式来提升人工智能运算效率。

发明内容

有鉴于此,本申请公开一种芯片,上述芯片包括片间通信链路单元,与上述片间通信链路单元连接的片间通信处理单元;

其中,上述片间通信链路单元,用于接收与上述芯片连接的第一芯片发送的第一数据,并将上述第一数据发送至上述片间通信处理单元;

上述片间通信处理单元,用于基于上述第一数据完成片间通信。

在示出的一些实施例中,上述片间通信处理单元,用于响应于接收的上述第一数据,从内存读取与上述第一数据对应的第二数据,并基于上述第一数据与上述第二数据完成片间通信。

在示出的一些实施例中,上述片间通信处理单元,用于响应于接收的上述第一数据,从内存读取与上述第一数据对应的第二数据,并上述片间通信处理单元,用于将上述第二数据与上述第一数据进行运算,得到运算结果数据;输出上述运算结果数据。

在示出的一些实施例中,上述片间通信处理单元包括数据读取子单元,以及数据运算子单元;

其中,上述数据读取子单元,用于从内存读取与上述第一数据对应的第二数据,并将读取到的上述第二数据传输至上述数据运算子单元;

上述数据运算子单元,用于将上述第二数据与上述第一数据进行运算,得到运算结果数据,以及输出上述运算结果数据。

在示出的一些实施例中,上述片间通信处理单元包括数据读取子单元,数据缓冲子单元以及数据运算子单元;

其中,上述数据读取子单元,用于从内存读取与上述第一数据对应的第二数据,并将读取到的上述第二数据传输至上述数据缓冲子单元;

上述数据缓冲子单元,用于缓冲上述第二数据,以及将上述第二数据传输至上述数据运算子单元;

上述数据运算子单元,用于将上述第二数据与上述第一数据进行运算,得到运算结果数据,以及输出上述运算结果数据。

在示出的一些实施例中,上述片间通信处理单元,用于输出接收到的第一数据。

在示出的一些实施例中,上述片间通信处理单元,用于将输出数据存储至内存;和\或,将输出数据发送至与上述芯片连接的第二芯片。

在示出的一些实施例中,上述芯片还包括计算单元;

上述计算单元,用于进行预设运算;

上述计算单元,还用于响应于预设运算完成,通过事件触发片间通信单元执行后续操作;其中,上述片间通信单元包括:上述片间通信链路单元和/或上述片间通信处理单元;上述片间通信单元,用于响应于上述事件,或者响应于上述事件且数据传输条件满足,执行数据传输操作;或者,

上述计算单元,还用于响应于预设运算完成,且数据传输条件满足,通过事件触发片间通信单元执行后续操作;上述片间通信单元,用于响应于上述事件,执行数据传输操作。

在示出的一些实施例中,针对对目标模型进行模型训练的场景,上述计算单元用于对上述目标模型的第i层进行反向传播运算;

上述片间通信处理单元,用于响应于接收到上述第一芯片针对上述目标模型的第j层的第一反向传播运算结果,从内存读取上述芯片针对上述目标模型的第j层的第二反向传播运算结果,并基于上述第一反向传播运算结果与上述第二反向传播运算结果完成片间通信。

在示出的一些实施例中,上述数据传输条件满足,包括:

待传输数据大小达到预设阈值;或者

j的数值达到预设数值的倍数。

本申请还提出一种片间通信方法,应用于如前述任一实施例示出的芯片;上述方法可以包括:

通过上述片间通信链路单元,接收与上述芯片连接的第一芯片发送的第一数据,并将上述第一数据发送至上述片间通信处理单元;

通过上述片间通信处理单元,基于上述第一数据完成片间通信。

本申请还提出一种电子设备,包括:上述任一实施例示出的芯片。

本申请还提出一种计算机可读存储介质,其上存储有计算机程序,上述程序被控制器执行时实现上述任一方法。

在上述方案中,一方面使得该片间通信处理单元代替计算单元进行片间通信,释放计算单元,从而可以并行进行计算任务与片间通信任务,提升芯片进行人工智能运算的效率;另一方面,在进行片间通信时,可以减少对内存的访问次数,提升片间通信的效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

为了更清楚地说明本申请一个或多个实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请示出的一种AI芯片的结构示意图;

图2为本申请示出的一种AI芯片的结构示意图;

图3为本申请示出的一种片间通信方法的方法流程示意图;

图4为本申请示出的一种片间通信第一阶段的流程示意图;

图5为本申请示出的一种片间通信芯片存储数据的示意图;

图6为本申请示出的一种片间通信第二阶段的流程示意图。

具体实施方式

下面将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的设备和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“上述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。还应当理解,本文中所使用的词语“如果”,取决于语境,可以被解释成为“在……时”或“当……时”或“响应于确定”。

下面主要以AI芯片为例进行说明。目前,片间通信方式需要依赖AI芯片的计算内核。

以All-Reduce(全局归约)为例,在进行片间通信时,AI芯片(在本申请中,当前需要进行片间通信流程的AI芯片称为本地)需要先将从与上述本地连接的第一芯片接收到的第一数据传输至内存中。

其中,上述第一数据是指在片间通信过程中,需要在本地进行处理的数据。在一些例子中,例如在All-Reduce过程中,上述第一数据可以是指将上述第一芯片中的数据按照预设规则进行分块后,需要传输至本地的数据。例如,上述第一芯片中的数据按照预设规则分为4个分块,其中1号分块需要传输至本地。此时上述1号分块则为上述第一数据。

需要说明的是,上述预设规则可以根据业务需求进行设定。例如,上述预设规则可以是按照芯片数量进行分块。本申请不对上述预设规则进行特别限定。

然后,本地包括的计算内核可以从上述内存中读取上述第一数据,以及与上述第一数据对应的第二数据。其中,上述第二数据可以理解为对上述第一数据进行处理时需要使用的数据。

在一些例子中,例如在All-Reduce过程中,上述第二数据可以是指将本地内存中的数据按照上述预设规则进行分块后,与上述第一数据对应的分块号相同的分块数据。例如,本地内存中的数据按照预设规则分为4个分块,假设第一数据的分块号为1号。此时,上述第二数据则为本地内存中分块号为2的分块数据。

之后,上述计算内核可以对上述第一数据和上述第二数据进行数据处理(例如叠加),并将处理得到的数据存储至上述内存或将上述处理得到的数据发送至与上述本地连接的第二芯片。

在上述片间通信过程中不难发现,一方面,芯片需要利用计算单元进行片间通信,而计算单元还需承担其他人工智能运算任务,因此导致芯片不同并行进行片间通信与其他运算任务,进而导致人工智能运算效率低;另一方面,芯片在进行片间通信时,存在多次计算单元与内存之间的数据传输,进而影响片间通信的效率。

有鉴于此,本申请提出一种芯片。通过在该芯片中的片间通信链路单元与内存之间增加可以进行片间通信的片间通信处理单元,一方面使得该片间通信处理单元代替计算单元进行片间通信,释放计算单元,从而可以并行进行计算任务与片间通信任务,提升芯片进行人工智能运算的效率;另一方面,在进行片间通信时,可以减少对内存的访问次数,提升片间通信的效率。

在一些例子中,上述芯片可以是AI芯片。在本申请中以上述芯片为AI芯片为例进行说明。上述AI芯片可以包括FPGA、GPU、CPU等。需要说明的是,本申请不限定AI芯片的具体类型。在一些例子中为了保证AI芯片运算效率,使用NoC(network-on-chip,片上网络)对该AI芯片包括的各单元进行连接。

请参见图1,图1为本申请示出的一种AI芯片的结构示意图。需要说明的是,图1仅为示意性说明,在图1中并未示出AI芯片包括的所有片间通信单元,以及AI芯片包括的其他功能单元。

如图1所示,AI芯片可以包括多个片间通信单元,计算单元以及内存。其中,各硬件单元之间可以通过NoC进行连接。即各硬件单元之间可以通过NoC进行数据传输。

上述片间通信单元可以用于处理该芯片与该AI芯片连接的其它芯片之间的片间通信。

上述片间通信单元可以包括片间通信链路单元(以下简称链路单元)与片间通信处理单元(以下简称处理单元)。

上述片间通信链路单元,可以用于接收与上述芯片连接的第一芯片发送的第一数据(对于上述第一数据的解释可以参照前述内容),并将上述第一数据发送至上述片间通信处理单元。例如,上述链路单元可以包括上述AI芯片的引脚。该链路单元可以通过引脚与上述第一芯片连接并从上述第一芯片获取数据。

在一些例子中,为了提升片间通信效率,可以一个链路单元唯一对应一个处理单元。由此,AI芯片可以并行的从多个链路单元获取数据,从而可以通过与多个链路单元分别对应的多个处理单元并行进行片间通信,进而提升片间通信效率。

上述片间通信处理单元,可以用于基于上述第一数据完成片间通信。在一些例子中,上述片间通信处理单元,可以用于响应于接收的上述第一数据,从上述内存读取与上述第一数据对应的第二数据(对于上述第二数据的解释可以参照前述内容),并基于上述第一数据与上述第二数据完成片间通信。

在一些例子中,在基于上述第一数据与上述第二数据完成片间通信时,可以将上述第二数据与上述第一数据进行运算,得到运算结果数据。然后输出上述运算结果数据。上述运算可以包括任意类型的运算。例如上述运算可以包括叠加、相减、确定最大值等。由此可以在本地对第一数据与本地存储的第二数据进行叠加融合,便于后续在各AI芯片中共享数据。

在一些例子中,输出上述运算结果数据(简称输出数据)的方法可以根据实际业务需求进行设定。例如,当需要存储输出数据时可以选择将上述输出数据存储至内存。当需要将输出数据发送至第二芯片时,可以选择将上述输出数据发送至与上述芯片连接的第二芯片。即,可以将输出数据存储至内存;和\或,将输出数据发送至与上述芯片连接的第二芯片。

由此提供了多种输出运算结果数据的方法,从而更好的兼容各种片间通信方法(例如,All-Reduce)。

在一些例子中,上述片间通信处理单元可以包括数据读取子单元(以下简称读取子单元)与数据运算子单元(以下简称运算子单元)。

请参见图2,图2为本申请示出的一种AI芯片的结构示意图。

如图2所示,AI芯片可以包括多个片间通信单元,计算单元以及内存。其中,各硬件单元之间可以通过NoC进行连接。即各硬件单元之间可以通过NoC进行数据传输。

上述片间通信处理单元可以包括读取子单元与运算子单元。其中,上述读取子单元,可以用于读取数据。在一些例子中,可以从上述内存读取与上述第一数据对应的第二数据,并将读取到的上述第二数据传输至上述数据缓冲子单元。

上述运算子单元,可以用于进行数据处理。在一些例子中,可以用于将上述第二数据与上述第一数据进行运算,得到运算结果以及输出上述运算结果数据。在本申请中以叠加为例进行说明。

上述片间通信处理单元通过上述结构,可以对上述片间通信处理单元具有的各功能进行分单元处理,提高数据并行处理能力,进而提升片间通信效率。

在一些例子中,上述片间通信处理单元还可以包括数据缓冲子单元(以下简称缓冲子单元)。上述缓冲子单元,可以用于缓冲数据。在一些例子中,可以缓冲上述第二数据,以及将上述第二数据传输至上述数据运算子单元。由此可以实现上述运算子单元与上述读取子单元之间的相互配合。或者为了提高处理效率,还可以将第二数据预先存储在缓冲子单元。在上述方案中,AI芯片可以包括片间通信链路单元,与上述片间通信链路单元连接的片间通信处理单元。其中,上述片间通信链路单元,用于接收与上述芯片连接的第一芯片发送的第一数据,并将上述第一数据发送至上述片间通信处理单元。上述片间通信处理单元,用于响应于接收的上述第一数据,从上述内存读取与上述第一数据对应的第二数据,并基于上述第一数据与上述第二数据完成片间通信。

可见,在上述方案中,一方面使得该片间通信处理单元代替计算单元进行片间通信,释放计算单元,从而可以并行进行计算任务与片间通信任务,提升芯片进行人工智能运算的效率;另一方面,在进行片间通信时,可以减少对内存的访问次数,提升片间通信的效率。

在一些例子中,上述片间通信处理单元可以支持数据直通功能。即,上述片间通信链路单元,用于接收上述第一芯片发送的第一数据,并将上述第一数据发送至上述片间通信处理单元。上述片间通信处理单元,还用于输出接收到的上述第一数据。在一些例子中,可以通过上述运算子单元进行第一数据传输。在一些例子中,输出上述第一数据,包括将上述第一数据存储至本地内存;和\或,将上述第一数据发送至第二芯片。

本例中的第一数据,具体是指本地需要进行直通的数据。例如,在All-Reduce过程中,可以分为两个阶段,其中第一阶段可以包括在每个芯片中,汇总一个分块号的所有分块数据;第二阶段可以包括将各芯片中存储的数据进行相互传输保证各芯片均包括完整的数据。在上述第二阶段中,在各芯片之间传输的数据无需在本地进行诸如叠加处理即可存储至本地内存和\或第二芯片,也即可以将All-Reduce第二阶段本地接收的数据看作为上述第一数据。再例如,在sync_bn(Synchronized Batch Normalization,同步批数据标准化)场景中,当本地芯片接收到第一芯片发送的批数据后,无需对该批数据进行运算处理,即可将该批数据直通至第二芯片,也即上述批数据可以看作是上述第一数据。

可见,通过使上述片间通信处理单元支持数据直通功能,进而更好的兼容各种片间通信方法(例如,All-Reduce)。

在一些例子中,上述芯片还包括计算单元。上述计算单元,用于进行预设运算。上述预设运算可以根据实际业务情形进行设定。上述计算单元,还用于响应于预设运算完成,通过事件触发片间通信单元执行后续操作;其中,上述片间通信单元包括:上述片间通信链路单元和/或上述片间通信处理单元;上述片间通信单元,用于响应于上述事件,或者响应于上述事件且数据传输条件满足,执行数据传输操作;或者,

上述计算单元,还用于响应于预设运算完成,且数据传输条件满足,通过事件触发片间通信单元执行后续操作;上述片间通信单元,用于响应于上述事件,执行数据传输操作。

在上述芯片中存在事件机制,当计算单元完成计算后,可以以事件的形式触发片间通信单元完成诸如数据同步等操作。由此实现在各芯片中进行计算结果的共享。

在一些例子中,在以事件方式触发片间通信单元进行数据同步之前,上述计算单元还可以确定当前是否满足数据传输条件,并在满足上述条件时通过事件触发片间通信单元进行数据同步。

上述数据传输条件可以根据实际情形进行设定。在一些例子中为了提升数据传输效率,上述数据传输条件可以是待传输数据大小达到预设阈值,或者待传输数据包括计算单元完成预设次数的计算得到的计算结果。

本申请还提出一种片间通信方法。该方法可以应用于如前述任一实施例示出的芯片。该方法通过利用上述芯片包括的片间通信处理单元进行片间通信,一方面使得该片间通信处理单元代替计算单元进行片间通信,从而释放计算单元,可以并行进行计算任务与片间通信任务,提升芯片进行人工智能运算的效率;另一方面,在进行片间通信时,可以减少对内存的访问次数,提升片间通信的效率。以下以芯片为AI芯片为例。

请参见图3,图3为本申请示出的一种片间通信方法的方法流程示意图。

如图3所示,上述方法可以包括:

S302,通过上述片间通信链路单元,接收与上述芯片连接的第一芯片发送的第一数据,并将上述第一数据发送至上述片间通信处理单元。

其中,对上述第一数据的解释可以参照前述内容。

在一些例子中,第一芯片通过图2示出的片间通信单元1(以下简称系统1)与上述AI芯片相连。此时,上述第一芯片可以通过与AI芯片相连的引脚将数据传输至该AI芯片。该AI芯片可以通过系统1包括的链路单元接收该第一数据,并将上述第一数据发送至处理单元包括的运算子单元中,等待进行数据处理。

S304,通过上述片间通信处理单元,基于上述第一数据完成片间通信。在一些例子中,可以响应于接收的上述第一数据,从上述内存读取与上述第一数据对应的第二数据,并基于上述第一数据与上述第二数据完成片间通信。

其中,对上述第二数据的解释可以参照前述内容。

在一些例子中,第一芯片可以通过图2示出的系统1与上述AI芯片相连。此时,可以通过上述处理单元包括的读取单元,响应于接收的上述第一数据,从上述内存读取与上述第一数据对应的第二数据,并将上述第二数据发送至上述处理单元包括的缓存子单元。然后通过上述缓冲子单元可以将上述第二数据传输至上述处理单元包括的运算子单元,以基于上述第一数据与上述第二数据完成片间通信。

在一些例子中,上述运算子单元可以将上述第二数据与上述第一数据进行运算,得到运算结果数据。然后输出上述运算结果数据。

在一些例子中,上述运算子单元可以将输出数据存储在本地内存;和\或,将输出数据发送至与上述芯片连接的第二芯片。由此可以更好的兼容各种片间通信方法(例如,All-Reduce)。

上述AI芯片还可以通过上述片间通信处理单元,输出接收的第一数据。在一些例子中,上述处理单元包括的运算子单元具有数据直通功能。在AI芯片接收到需要直通的第一数据时,可以通过上述运算子单元之间输出上述第一数据。在一些例子中,输出上述第一数据,包括将上述第一数据存储至本地内存;和\或,将上述第一数据发送至第二芯片。

在上述方案中,上述AI芯片可以通过自身搭载的片间通信链路单元,接收与上述芯片连接的第一芯片发送的第一数据,并将上述第一数据发送至上述片间通信处理单元,以及,通过自身搭载的片间通信处理单元,响应于接收的上述第一数据,从上述内存读取与上述第一数据对应的第二数据,并基于上述第一数据与上述第二数据完成片间通信。

可见,在上述方案中,一方面使得该片间通信处理单元代替计算单元进行片间通信,从而释放计算单元,可以并行进行计算任务与片间通信任务,提升AI芯片进行人工智能运算的效率;另一方面,在进行片间通信时,可以减少对内存的访问次数,提升片间通信的效率。

以下结合模型训练场景与图2示出AI芯片对实施例说明。

在模型训练场景中,可以通过具有如图2示出的芯片结构的A、B、C、D,4个AI芯片对目标模型进行分布式训练。上述分布式训练可以通过反向传播法对目标模型的参数进行更新。在反向传播进行参数更新的过程中,通常需要从目标模型包括的最后一层网络开始逐层进行参数更新。

其中,在进行某一层网络的参数更新时,可以先对该层网络进行反向传播运算,得到反向传播结果。在一些例子中上述反向传播结果可以包括需要下降的梯度。

然后,可以根据反向传播结果对该层网络的参数进行更新。由于在上述模型训练场景中采用的是分布式训练,因此,在更新各层网络的参数前,可以先通过片间通信将参与分布式训练的各芯片内部的针对该层网络的反向传播结果进行共享,然后在各芯片中利用共享后的反向传播结果进行参数更新,进而保证各芯片内存储的模型参数是相同的。

以下以通过All-Reduce进行片间通信为例进行说明。可以理解的进行片间通信时,可以通过调度单元对各芯片进行调度使各芯片执行片间通信。在本申请中并未示出调度单元,上述调度单元可以是上述4个芯片所在的节点或者是任意独立的管理节点,本申请中不作特别限定。

在All-Reduce过程中,可以分为两个阶段,其中第一阶段可以包括在每个芯片中,汇总一个分块号的所有分块数据;第二阶段可以包括将各芯片中存储的数据进行相互传输保证各芯片均包括完整的数据。

请参见图4,图4为本申请示出的一种片间通信第一阶段的流程示意图。

图4示出了A、B、C、D,4个参与上述分布式训练的AI芯片。其中,上述4个芯片中均已针对目标模型的第m层网络进行反向传播运算得到了第m层网络对应的反向计算结果数据。在图4中,各芯片内部的401-404即为各芯片中与第m层网络对应的反向计算结果数据(以下简称反向计算结果数据)。在一些例子中,各芯片将数据存储在如图2示出的内存中。

图4中示出的405可以为片间通信处理单元中的一块存储空间。该存储空间可以存储第一芯片发来的第一数据以及本地对应的第二数据。

在一些例子中,在进行片间通信时,各芯片内部可以先执行S41,按照芯片数量(本例中为4)将各芯片内存中的反向计算结果数据分成4份,即为图4中示出的401-404。

然后各芯片可以执行S42(图4实线箭头指示),将与自身编号对应的第一数据发送至下一芯片。例如,A芯片对应的第一数据为1号数据块,B芯片对应的第一数据为2号数据块,以此类推。

以芯片A为例,芯片A可以执行S42,将1号数据块发送至芯片B。

然后各芯片可以执行S43(图4实线箭头指示),响应于接收到的第一数据,从内存中读取与第一数据对应的第二数据,并将上述第二数据与上述第一数据进行叠加,得到叠加数据。

以芯片B为例,芯片B可以执行S43,通过链路单元接收上述芯片A的1号数据块,并将上述1号数据块写入处理单元的运算子单元中。然后,上述处理单元可以通过读取子单元从本地内存中读取1号数据块(以下称为本地1号数据块),并通过缓冲子单元将本地1号数据块发送至上述运算子单元(图4示出的405)。之后,上述运算子单元可以对接收到的1号数据块和本地1号数据块进行叠加,完成本地数据与第一芯片数据关于1号数据块的融合,得到叠加数据。

之后各芯片可以执行S44(图4虚线箭头指示),将叠加数据存储至本地内存以及发送至下一芯片(第二芯片)。

仍以芯片B为例,芯片B可以执行S44,一方面,可以通过NoC网络将上述叠加数据存储至本地内存,实现对内存中原有1号数据块的覆盖;另一方面,通过与芯片C连接的引脚,将叠加数据发送至芯片C。

之后各芯片可以重复执行S43-S44,直至各芯片中只保留1个编号的数据块。

请参见图5,图5为本申请示出的一种片间通信芯片存储数据的示意图。需要说明的是,图5中示意的“数字+字母”形式是为了清楚指示对应数据块。例如,图5中示出的“1A”指示进行All-Reduce之前,存储在A芯片中1号分块数据。

如图5所示,完成第一阶段后,芯片A包括编号为2的完整数据块,芯片B包括编号为3的完整数据块,芯片C包括编号为4的完整数据块,芯片D包括编号为1的完整数据块。至此则完成片间通信第一阶段。其中,上述完整数据块可以是指包含所有芯片中具有相同编号的分块数据的数据块。例如,2号完整数据块可以是指包含芯片A、B、C、D中的2号数据块的数据块。

之后可以进行第二阶段,对各芯片内部的数据进行传递,以保证各芯片保存所有的数据块。

请参见图6,图6为本申请示出的一种片间通信第二阶段的流程示意图。

如图6所示,各芯片可以执行S61(图6实线箭头指示),将自身存储的完整数据块(第一数据)发送至下一芯片。例如,芯片A存储的完整数据块为2号完整数据块,芯片B存储的完整数据块为3号完整数据块,以此类推。

以芯片A为例,芯片A可以执行S61,将2号完整数据块发送至芯片B。

然后各芯片可以执行S62(图6虚线箭头指示),响应于接收到的第一数据,将上述第一数据存储至本地内存以及发送至下一芯片。

以芯片B为例,芯片B可以执行S62,通过链路单元接收上述2号完整数据块,然后一方面,可以通过NoC网络将上述2号完整数据块存储至本地内存,实现对内存中原有2号数据块的覆盖;另一方面,可以通过与芯片C连接的引脚,将2号完整数据块发送至芯片C。

之后各芯片可以重复执行S61-S62,直至各芯片中均包括4个完整数据块。

由此可见,在片间通信过程中,各芯片可以通过搭载的片间通信处理单元进行片间通信,因此,一方面使得该片间通信处理单元代替计算单元进行片间通信,从而释放计算单元,可以并行进行计算任务与片间通信任务,提升AI芯片进行人工智能运算的效率;另一方面,在进行片间通信时,可以减少对内存的访问次数,提升片间通信的效率。

在一些例子中,在针对目标模型进行模型训练时,各芯片内部可以同时进行反向传播运算以及反向传播结果的片间通信。

在一些例子中,响应于针对目标模型进行模型训练,通过上述计算单元,对上述目标模型的第i层进行反向传播运算。

以及,通过上述计算单元,响应于接收到上述第一芯片针对上述目标模型的第j层的第一反向传播运算结果,从上述内存读取上述芯片针对上述目标模型的第j层的第二反向传播运算结果,并基于上述第一反向传播运算结果与上述第二反向传播运算结果完成片间通信。

通过上述方法,可以使该芯片同时进行运算与片间通信,提升芯片整体运行效率。

在一些例子中,上述i的数值可以小于j的数值。例如,i=j-1时,刚好可以在进行第j层网络的反向传播运算结果共享的过程中,同时使芯片进行第j-1层网络的反向传播运算,由此,可以实现芯片高效的完成模型训练任务。

在一些例子中,为了可以使反向传播运算过程与片间通信过程不冲突,可以使用不同的数据流进行以上过程数据的传输。在一些例子中,可以通过第一数据流进行反向传播运算过程中数据的传输。和\或,通过第二数据流进行片间通信过程中数据的传输。

在一些例子中,为了减少每次启动片间通信需要造成的开销,可以增加每次片间通信传输的数据量。

在一些例子中,可以确定上述第二数据流包括的数据大小是否达到预设阈值。如果是,输出上述第二数据流以进行片间通信过程中数据的传输。

上述预设阈值可以是根据业务需求进行设定的数值。例如,该预设阈值可以是1兆字节。由此,可以控制每次进行片间通信时传输的数据量为1兆字节,从而避免频繁进行片间通信,进而减少开销。

在一些例子中,可以确定j的数值是否为预设数值的倍数。如果是,输出上述第二数据流以进行片间通信过程中数据的传输。

上述预设数值为根据业务需求进行设定的数值。例如,该预设数值可以是5。由此,可以控制每产生5层网络对应的反向传播运算结果时,进行一次片间通信,从而避免频繁进行片间通信,进而减少开销。

本申请还提出一种电子设备,包括上述任一实施例示出的芯片。

本申请还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被控制器执行时实现本申请公开的任一片间通信方法。

例如,该电子设备可以是手机等智能终端,或者也可以是具有摄像头并可以进行图像处理的其他设备。示例性的,当该电子设备参与分布式模型训练时,可以采用本申请实施例示出的芯片进行片间通信。由于上述芯片一方面通过片间通信处理单元代替计算单元进行片间通信,释放计算单元,可以并行进行计算任务与片间通信任务,提升芯片进行人工智能运算的效率,另一方面在进行片间通信时可以减少对内存的访问次数,从而可以提升片间通信的效率,因此该电子设备的性能可以得到大幅提升。本领域技术人员应明白,本申请一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本申请一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。

本申请中记载的“和/或”表示至少具有两者中的其中一个,例如,“A和/或B”包括三种方案:A、B、以及“A和B”。

本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的行为或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本申请中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本申请中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本申请中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。

本申请中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。上述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。

适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理系统。通常,中央处理系统将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理系统以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及0xCD_00ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。

虽然本申请包含许多具体实施细节,但是这些不应被解释为限制任何公开的范围或所要求保护的范围,而是主要用于描述特定公开的具体实施例的特征。本申请内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上上述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。

由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。

以上上述仅为本申请一个或多个实施例的较佳实施例而已,并不用以限制本申请一个或多个实施例,凡在本申请一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请一个或多个实施例保护的范围之内。

相关技术
  • 一种芯片、片间通信方法、电子设备和存储介质
  • 一种进程间通信方法、电子设备及可读存储介质
技术分类

06120112811022