数据处理方法、装置、系统及计算机可读存储介质转让专利
申请号 : CN202111436322.7
文献号 : CN113849293B
文献日 : 2022-02-22
发明人 : 原嵩 , 张运星 , 迟亮 , 金正雄
申请人 : 湖北芯擎科技有限公司
摘要 :
权利要求 :
1.一种数据处理方法,其特征在于,应用在芯片中的神经网络处理器上,所述神经网络处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器上部署有神经网络的子网络模块,所述神经网络处理器包括多个计算单元和存储器,所述数据处理方法,包括:
所述神经网络处理器的计算单元获取用于保存子网络输出数据的内存地址,所述子网络输出数据是调用所述存储器中的子网络模块进行处理而输出的数据;
所述计算单元将所述内存地址封装为预设格式的硬件层的报文,并通过硬件将所述报文发送至所述远程直接内存访问引擎中的待发送队列,从而无需所述芯片上的CPU来创建传输请求,无需经过所述芯片上的CPU的调度将所述传输请求发送至所述待发送队列并将所述传输请求转换为预设格式,所述预设格式为所述直接内存访问引擎支持的格式;
所述远程直接内存访问引擎获取所述待发送队列中的所述报文中的所述内存地址,从所述内存地址中获取所述子网络输出数据,并通过所述子网络模块与部署有所述神经网络的另一子网络模块之间创建的传输通道,将所述子网络输出数据发送至所述另一子网络模块所在的目标神经网络处理器上。
2.根据权利要求1所述的数据处理方法,其特征在于,所述计算单元将所述内存地址封装为预设格式的硬件层的报文,并将所述报文发送至所述远程直接内存访问引擎中的待发送队列的步骤,包括:
所述计算单元利用预设算子将内存地址封装为预设格式的硬件层的报文,并利用所述预设算子将所述报文发送至所述远程直接内存访问引擎中的待发送队列,其中,所述预设算子是预先封装的原子计算指令集合,所述原子计算指令集合中包括远程直接内存访问原语。
3.根据权利要求2所述的数据处理方法,其特征在于,在所述计算单元利用预设算子将内存地址封装为预设格式的硬件层的报文的步骤之前,还包括:在定义所述神经网络的网络结构时,加入预设算子;或者在利用神经网络编译器编译所述神经网络,并将编译后的所述神经网络切片后得到的每个子网络模块中加入预设算子。
4.根据权利要求1所述的数据处理方法,其特征在于,所述计算单元将所述内存地址封装为预设格式的硬件层的报文的步骤,包括:所述计算单元触发CPU中断,并将所述内存地址的发送指令发送至用户态协议栈,所述CPU为神经网络处理器内嵌的CPU;
基于所述发送指令,利用所述用户态协议栈将所述内存地址直接封装为硬件层的报文。
5.根据权利要求1所述的数据处理方法,其特征在于,在所述获取用于保存子网络输出数据的内存地址的步骤之后,还包括:所述计算单元将所述内存地址进行保存;
当检测到需要向所述内存地址中写入所述子网络输出数据时,触发将所述内存地址封装为预设格式的硬件层的报文的步骤。
6.根据权利要求5所述的数据处理方法,其特征在于,还包括:当所述神经网络处理器接收到所述神经网络的其他子网络模块发送的子网络输出数据后,获取预先分配的保存所接收到的所述子网络输出数据的目标内存地址;
获取预先分配的所述神经网络处理器自身的存储地址范围、以及其他神经网络处理器中部署的神经网络的其他子网络模块所对应的网络层数据;
根据所述目标内存地址、所述存储地址范围和所述网络层数据确定保存所述子网络输出数据的目标神经网络处理器;
当所确定的目标神经网络处理器为所述神经网络处理器时,将所述子网络输出数据保存在所述目标内存地址中;
当所确定的目标神经网络处理器不为所述神经网络处理器时,所述计算单元将所述子网络输出数据和所述目标神经网络处理器的标识信息封装为预设格式的硬件层的报文,并触发将所述报文发送至所述远程直接内存访问引擎中的待发送队列的步骤。
7.根据权利要求1所述的数据处理方法,其特征在于,还包括:当所述神经网络处理器接收到所述神经网络的其他子网络模块发送的子网络输出数据后,将所述子网络输出数据保存在所述存储器中,并向所述计算单元广播所述子网络输出数据;
所述计算单元调用所述存储器中的子网络模块对所述子网络输出数据进行处理。
8.一种数据处理装置,其特征在于,应用在芯片中的神经网络处理器上,所述神经网络处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器上部署有神经网络的子网络模块,所述神经网络处理器包括多个计算单元和存储器,所述数据处理装置,包括:
第一获取模块,用于通过所述神经网络处理器的计算单元获取用于保存子网络输出数据的内存地址,所述子网络输出数据是调用所述存储器中的子网络模块进行处理而输出的数据;
封装模块,用于通过所述计算单元将所述内存地址封装为预设格式的硬件层的报文,并通过硬件将所述报文发送至所述远程直接内存访问引擎中的待发送队列,从而无需所述芯片上的CPU来创建传输请求,无需经过所述芯片上的CPU的调度将所述传输请求发送至所述待发送队列并将所述传输请求转换为预设格式,所述预设格式为所述直接内存访问引擎支持的格式;
第二获取模块,用于通过所述远程直接内存访问引擎获取所述待发送队列中的所述报文中的所述内存地址,从所述内存地址中获取所述子网络输出数据;
发送模块,用于通过所述子网络模块与部署有所述神经网络的另一子网络模块之间创建的传输通道,将所述子网络输出数据发送至所述另一子网络模块所在的目标神经网络处理器上。
9.一种数据处理系统,其特征在于,所述数据处理系统包括多个神经网络处理器,神经网络的多个子网络模块被部署于各神经网络处理器中,所述神经网络处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器包括多个计算单元和存储器,所述存储器中存储有子网络模块,所述神经网络处理器用于执行上述权利要求1‑7任一项所述的数据处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如权利要求1‑7任一项所述的数据处理方法中的步骤。
说明书 :
数据处理方法、装置、系统及计算机可读存储介质
技术领域
背景技术
200层)的方式,随着感知引擎记录了越来越多的对象,导致了神经网络规模迅速膨胀。另一
方面,在未来的发展中,自动驾驶领域中的车辆又需要支持更高级别的ADAS系统(Advanced
Driving Assistance System,高级驾驶员辅助系统),而更高级别的ADAS系统需要更大的
算力。
Neural Processing Unit,神经网络处理器)、TPU(Neural Processing Unit,张量处理器)
等,这些专用的神经网络处理器往往以资源和空间来换取效率,采用多个计算单元排列成
矩阵实现并行处理、采用矩阵分解的方式来简化过滤器的计算等。
单元。由于各个处理器厂商的解决方案不同,就需要有低、中、高算力的系列芯片同时生产,
同时更多权重网络存储空间和更多计算单元增加了成本。
整体的性能和效率;且多个TPU/NPU中的很多中间计算结果和信息都被丢掉了,会显著降低
智能性和舒适性;另外,CPU作为中间人在NPU、GPU和CPU的多个软件模块中传递数据导致端
到端反应时间超长。这些原因均导致实现一个复杂的神经网络分布到多个TPU/NPU上存在
诸多困难。
发明内容
且可提高神经网络处理器与其他神经网络处理器之间传输数据的效率。
署有神经网络的子网络模块,所述神经网络处理器包括多个计算单元和存储器,所述数据
处理方法,包括:
支持的格式;
经网络的另一子网络模块之间创建的传输通道,将所述子网络输出数据发送至所述另一子
网络模块所在的目标神经网络处理器上。
署有神经网络的子网络模块,所述神经网络处理器包括多个计算单元和存储器,所述数据
处理装置,包括:
出的数据;
述直接内存访问引擎支持的格式;
络处理器上。
程直接内存访问引擎的硬件,所述神经网络处理器包括多个计算单元和存储器,所述存储
器中存储有子网络模块,所述神经网络处理器用于执行上述任一项所述的数据处理方法。
理方法中的步骤。
一实施例所述的数据处理方法中的步骤。
存子网络输出数据的内存地址封装为报文,该子网络输出数据为神经网络处理器调用神经
网络的子网络模块处理而输出的数据,并将报文发送至直接内存访问引擎中的待发送队
列,并由直接内存访问引擎将内存地址中保存的子网络输出数据发送至神经网络另一子网
络模块所在的目标神经网络处理器上,如此,将部署有神经网络的子网络模块的神经网络
处理器处理得到的子网络输出数据发送至部署有神经网络的另一子网络模块的目标神经
网络处理器上,子网络输出数据并没有被丢掉,使得可很好的利用子网络模块处理得到的
子网络输出数据进行下一步的处理,提高神经网络处理数据的效率,此外,子网络模块处理
得到的子网络输出数据的传输不必经过芯片上的CPU,不必生成传输请求(生成传输请求需
要调用芯片上的CPU来进行处理),而直接封装为硬件层的报文,从计算单元发送至直接内
存访问引擎中的待发送队列,直接通过硬件传输,如此提高了神经网络处理器之间传输数
据的效率。在子网络模块处理得到的子网络输出数据没有丢失,且能高效的在神经网络处
理器之间传输子网络输出数据的基础上,不增加芯片成本,即可实现将一个复杂的神经网
络部署到多个神经网络处理器上,解决了现有技术的难题。
附图说明
本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附
图。
具体实施方式
本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施
例,都属于本申请保护的范围。
理器来执行。其中,该芯片可以为系统级芯片(SoC),还可以是其他的可集成神经网络处理
器的芯片。在每个芯片中,集成有一个或者多个神经网络处理器。神经网络处理器包括TPU、
NPU等AIPU处理器,下文中以NPU为例进行说明。
块或者传感器融合模块、定位和预测模块、规划和决策模块、控制模块等。其中,神经网络用
在物体感知、物体跟踪或传感器融合上,使用神经网络处理器来进行处理,而定位和预测模
块、规划和决策模块、控制模块等往往利用CPU或者GPU来进行处理。
驾驶控制系统的示意图,在该自动驾驶控制系统中,包括了图像识别和分类的神经网络、多
目标连续跟踪网络、3D感知识别网络(感知骨干)和采用类似SSD的感知神经网络(感知头
部)。可以看到,图2中使用了四类神经网络(图中灰色所示方框),其中,类似SSD的感知神经
网络还需要使用3D感知识别网络的中间层数据。
算单元增加了芯片的成本。由此,想到另一种可能会使用的方案,即将一个复杂的神经网络
分布到多个神经网络处理器上。
发调度,由发送者NPU内嵌的CPU和中间人CPU(系统的主控CPU)之间要发生交互,CPU要运行
自己的软件栈、再把被传送的数据或者指针发送给接收者NPU内嵌的CPU,接收者NPU内嵌的
CPU需要获取数据的地址,进一步可能需要把数据拷贝到自己的地址空间,再触发自己的
NPU逻辑继续执行。这样使用CPU来实现多个任务/进程/芯片间交互的方式,导致效率非常
低下;而且CPU作为中间人在NPU和GPU和CPU的多个软件模块中传递数据导致端到端反应时
间超长。
了,而修改现有神经网络或者建立新的网络会使得开发代价变高。
理器上。
装的芯片集成一个神经网络处理器来进行说明。本申请实施例中的方案适用于多个神经网
络处理器之间传递数据,而无论多个神经网络处理器是处于同一个芯片中,还是处于多个
不同的芯片中。
的限定。
神经网络处理器中,每个神经网络处理器上安装有集成远程直接内存访问(Remote Direct
Memory Access,RDMA)引擎的硬件,神经网络处理器包括多个计算单元和存储器。存储器中
包括用于保存中间结果和子网络模块的子网络模型的静态随机存取存储器(Static
Random Access Memory,SRAM)和用于保存子网络模块的子网络输出数据/子网络计算结果
数据的外接双倍速率随机存储器(Double Data Rate Random Access Memory, DDR‑RAM)。
RDMA引擎的网络上。可以在以太网上部署RDMA引擎,采用支持RDMA引擎的网卡和相关的协
议栈/硬件数字逻辑、以及以太网交换机来构建通信子系统;也可以在PCIe上部署RDMA引
擎,采用PCIe交换机来连接多个芯片上集成的多个神经网络处理器来构建通信子系统。
网络模块还可以对应神经网络中的权重网络,其中,权重网络包括计算数据的权重,用于将
一个神经元的输出数值乘以权重,再传递给一下个神经元,作为下一个神经元的输入,对应
地,子网络模块的最小单位为权重网络,多个权重网络构成一个大型神经网络;子网络模块
还可以以层为最小单位,如此,子网络模块对应神经网络的一层/多层,多个子网络模块形
成一个神经网络。
处理器,该四个神经网络处理器级联来实现一个大型的复杂的神经网络。将神经网络部署
在四个不同的神经网络处理器中,这四个不同的神经网络处理器分别实现感知/跟踪/融
合、定位和预测、规划、决策等功能,将这四种不同的功能分别通过神经网络的子网络模块
来实现。
用长短时记忆神经网络(Long Short Term Mermory network,LSTM)或卷积神经网络
(Convolutional Neural Network,卷积神经网络)来实现;决策模块可使用空时神经网络
来实现等。需要注意的是,此处的每个子网络模块所使用的神经网络仅仅只是示例说明,方
便理解。
用于每个神经网络处理器中。
个芯片之间的数据传递就可以直接通过RDMA引擎出来,无需芯片上的CPU来帮忙,大大提高
了四个芯片之间的数据传递效率。
决策模块进行连接。自动驾驶控制系统还包括实时性调控模块、控制模块、精确定位模块
等,这些模块有自动驾驶控制系统的CPU来进行调度和处理。其中,实时性调控模块用于对
神经网络的感知/跟踪/融合模块进行实时性管控,神经网络的最终处理结果和高清地图会
发送至精确定位模块以用于得到精确定位相关的定位信息,并将定位信息发送至控制模
块,控制模块控制车控微控制单元(Microcontroller Unit,MCU)来控制动力系统和底盘系
统,以实现车辆的自动驾驶。
元,再利用车控微控制单元来控制动力系统和底盘系统,以实现车辆的自动驾驶。
多个神经网络处理器中。可采用流式处理机制(以数据流的流向为准),当第一个神经网络
处理器上的权重网络处理结束,输出的子网络输出数据会自动传送至下一级的神经网络处
理器,采用下一级的神经网络处理器的权重网络来进行处理。如此,可线性扩展整个神经网
络的算力,而且对于自动驾驶这类需要承担连续处理任务的应用来说,可提高处理效率。
权重网络2和权重网络3。每个权重网络之间通过子网络输出数据连接起来。需要注意的是,
图4仅仅是示例说明而已。
网络处理器如NPU2。其中,输入数据可以是整个神经网络的输入数据如图片,还可以是神经
网络中的某些层的输入数据,如包括输入图片和中间层得到的特征图等。
擎发送至第三级的神经网络处理器如NPU3。第三级的神经网络处理器NPU3根据上一级得到
的子网络输出数据和权重网络3,利用计算单元的硬件逻辑来进行计算,以得到神经网络的
各权重网络计算的最终处理结果。
第1‑100层作为一个子网络模块,部署在第一个神经网络处理器上,第101‑200层作为一个
子网络模块,部署在第二个神经网络处理器上,第201‑350层作为一个子网络模块,部署在
第三个神经网络处理器上,第351至500层作为一个子网络模块,部署在第四个神经网络处
理器上,该神经网络的多层之间通过子网络模块的子网络输出数据连起来。
其中,该卷积神经网络的每层对应的权重网络保存在存储器中。把每层作为子网络模块,将
神经网络的四层分布到四个神经网络处理器上,根据数据流的流向来进行处理。其中,大箭
头的方向表示数据流的流向。
作为子网络输出数据保存在第一级NPU的存储器中,并发送至第二级NPU。第二级NPU中的计
算单元根据低尺度特征图调用存储器中的权重网络进行卷积计算,得到中尺度特征图
(Mid‑Level Features),将中尺度特征图作为子网络输出数据保存在第二级NPU的存储器
中,并发送至第三级NPU。第三级NPU中的计算单元调用存储器中的权重网络进行卷积计算,
得到大尺度特征图(High‑Level Features),将大尺度特征图保存保存在对应的存储器中,
同时发送至第四级NPU。最后,第四级NPU根据大尺度特征图调用全连接网络(FC Layer)进
行处理,如全连接处理(Fully Connected)和非线性化处理(Nonlinearity),以得到卷积神
经网络的分类结果,即最终处理结果(Class Scores)。对于每个卷积层,分别进行卷积计算
(convolution)、归一化处理(Normalization)、非线性化处理(Nonlinearity)和池化
(Pooling)等处理。
的输入层。其中,每级NPU中的子网络输出数据都是本级NPU的子网络模块处理后得到的数
据。下文中介绍本申请实施例中的数据处理方法时将会详细描述如何高效的将子网络输出
数据输出至下一级NPU。
硬件,神经网络处理器上部署有神经网络的子网络模块,所述神经网络处理器包括多个计
算单元和存储器。如图7所示,是本申请实施例提供的数据处理方法的流程示意图,该数据
处理方法包括如下步骤。
器对神经网络编译并切片后,该变量会映射到具体的内存地址,如此用于保存子网络输出
数据的内存地址就已确定,即该内存地址在神经网络编译器编译所述神经网络,并对编译
后的神经网络进行切换后确定的。神经网络处理器的计算单元获取该神经网络中用于保存
子网络输出数据的内存地址。
一网络层处理后得到的数据为例进行说明。
实施例中,以QWE格式为例进行说明。
为将一段内存地址构成的消息送给本地的RDMA引擎。
处理器)和远端(下一级神经网络处理器)应用之间创建的channel‑IO连接之上。当应用需
要通信时,就会创建一条Channel连接,每条Channel的首尾端点是两对Queue Pairs(队列
对,QP),每对QP由Send Queue(发送队列,SQ)和Receive Queue(接收队列,RQ)构成,这些队
列中管理着各种类型的消息。QP会被映射到应用的虚拟地址空间,使得应用直接通过它访
问RNIC(直接内存存储)。
端的消息内容。其中,创建传输请求WR时,需要用到RDMA引擎中的函数库来创建,而RDMA引
擎的函数库运行于芯片的CPU之上,即在创建传输请求WR时,需要调用芯片的CPU来进行处
理(而调用芯片的CPU必然会大大降低效率),并将传输请求WR通知/发送给QP中的某个队
列‑Work Queue(WQ)。在WQ中,用户的WR被转化为Work Queue Ellement(WQE)的格式,等待
RNIC的异步调度解析,并从WQE指向的内存(buffer)中拿到真正的消息发送到Channel对
端。
经过芯片上的CPU来生成传输请求(在应用层生成),无需经过CPU来进行调度(CPU进行调度
时还可能需要等待或者发生其他异常的几率较大),而直接将内存地址封装为硬件层的报
文,直接通过硬件发送至RDMA引擎中的待发送队列。其中,本申请实施例中的待发送队列可
以包括QWE格式的发送队列。首先,本申请实施例直接通过生成硬件层的报文,通过硬件发
送的方式出现异常的几率较小,几乎不会出现异常;其次,生成硬件层的报文通过硬件发
送,无需经过芯片上的CPU来生成传输请求,无需经过芯片上的CPU的调度,大大提高了处理
的效率;最后,生成的报文采用的是预设格式的,是RDMA引擎支持的格式,如此,省去了现有
技术中的将传输请求转换为RDMA引擎支持格式的时间,如转换为QWE格式,进一步提高了效
率。
创建的传输通道,将子网络输出数据发送至另一子网络模块所在的目标神经网络处理器
上。
子网络模块之间创建的传输通道,如channel‑IO传输通道,将子网络输出数据发送至另一
子网络模块所在的目标神经网络处理器上。其中,将子网络输出数据发送至目标神经网络
处理器中对应的目标存储器上。该目标存储器上会分配对应的内存地址以用来保存该子网
络输出数据。
回写至本地对应的内存地址中。
的神经网络处理器为目标神经网络处理器。
擎把子网络输出数据写到对应的被指定的内存地址中。
输出数据并没有被丢掉,使得可很好的利用子网络模块处理得到的子网络输出数据进行下
一步的处理,提高神经网络处理数据的效率,此外,子网络模块处理得到的子网络输出数据
的传输不必经过芯片上的CPU,不必生成传输请求(生成传输请求需要调用芯片上的CPU来
进行处理),而直接封装为硬件层的报文,从计算单元发送至直接内存访问引擎中的待发送
队列,直接通过硬件传输,如此提高了神经网络处理器之间传输数据的效率。
功能,也不必改变神经网络处理器所在的芯片的功能,即可实现将一个复杂的神经网络部
署到多个神经网络处理器上。
述数据处理方法应用于数据处理系统中的第一个神经网络处理器时,子网络输出数据是调
用存储器中的子网络模块,对输入数据如原始图片进行处理而得到的数据。
送的子网络输出数据时,将接收的子网络输出数据保存在本地存储器中,并将计算单元广
播子网络输出数据,计算单元调用存储器中的子网络模块对接收的子网络输出数据进行处
理。如此,对应的子网络输出数据是调用存储器中的子网络模块,对上一级输出的子网络输
出数据进行处理而得到的数据。需要提醒的是,该实施例中的方案同样应用于下文中所述
的数据处理方法中。
理方法,还包括:通过计算单元调用存储器中的子网络模块对接收到的子网络输出数据进
行处理后,得到神经网络的最终处理结果,得到最终处理结果之后,结束神经网络部分的处
理;再利用最终处理结果生成行车轨迹、或者利用最终处理结果得到行车决策,并将形成轨
迹或者行车决策发送至车控微控制单元。需要提醒的是,该实施例中的方案同样应用于下
文中所述的数据处理方法中。
数据。
预先封装的原子计算指令集合,该原子计算指令集合中包括远程直接内存访问原语,该预
设格式为直接内存访问引擎支持的格式。
地,预设算子operator会变换为计算单元执行的指令序列,其中,该指令序列中包括远程直
接内存访问原语构成的指令序列。该步骤中可以理解为通过预设算子实现把一段内存地址
构成的消息(包括内存地址和内存地址的地址长度)送给本地的RDMA引擎,从而避免了现有
技术中创建传输请求等的步骤,避免了使用芯片的CPU来进行处理。具体的有益效果可参看
上文中的对应描述,在此不再赘述。
层神经网络的不同神经元的输出,该不同神经元的输出一起构成partial sum队列,即子网
络输出数据;F000、F100、F010等表示神经网络计算的代码逻辑,包括加法计算、减法计算、矩阵
计算等,还可以实现逻辑解析等功能。最后,将保存子网络输出数据的内存地址经过RDMA原
语处理后的数据发送至RDMA引擎的待发送队列。
创建的传输通道,将子网络输出数据发送至另一子网络模块所在的目标神经网络处理器
上。
应的网络层处理得到对应的处理结果时,加入预设算子。
后一个网络层处理完毕后加入预设算子。
RDMA引擎的待发送队列。
数据。
骤中的CPU指的是神经网络处理器内嵌的CPU,即神经网络处理器自带的CPU。
持的格式。
列。在该实施例中,是基于用户态协议栈的改进,使得用户态协议栈可直接从应用层调至硬
件层来运行。
处理等,这些直接降低了现有技术中的创建传输请求并发送至RDMA引擎的效率。本申请实
施例中利用用户态协议栈直接运行于硬件层,利用硬件层来进行将内存地址转换为硬件层
的报文的处理,无需创建session、保存句柄,无需进行内核中调度等(在内核中调度需要从
应用程序的用户态切换至内核态,切换时需要占用CPU资源,且同时需要占用较多的时间),
提高了处理的效率。
创建的传输通道,将子网络输出数据发送至另一子网络模块所在的目标神经网络处理器
上。
应地,预先在用户态协议栈的硬件层中加入预设算子。对应步骤可参看上文中的描述,在此
不再赘述。
虽然触发用户态协议栈会调用一次CPU(该CPU是神经网络内嵌的CPU,并不是芯片上的
CPU),但触发用户态协议栈后则完全运行于硬件层上,通过硬件发送的方式出现异常的几
率较小,几乎不会出现异常;其次,生成硬件层的报文通过硬件发送,无需经过芯片上的CPU
来生成传输请求,无需经过芯片上的CPU的调度,大大提高了处理的效率;最后,生成的报文
采用的是预设格式的,是RDMA引擎支持的格式,如此,省去了现有技术中的将传输请求转换
为RDMA引擎支持格式的时间,如转换为QWE格式,进一步提高了效率。
的数据。
出数据的内存地址,即指的是本地存储器的DDR‑RAM中保存的本地得到的子网络输出数据
的内存地址。该内存地址也是在神经网络编译器编译神经网络并对网络进行优化如切片时
就可得到。该内存地址保存在本地存储器中。或者也可以是当神经网络编译器编译并优化
神经网络后,将保存本地子网络输出数据的内存地址告知计算单元,如此,计算单元获取用
于保存子网络输出数据的内存地址并进行保存。
列,该预设格式为直接内存访问引擎支持的格式。
报文,并将报文发送至远程直接内存访问引擎中的待发送队列。由于计算单元已经知道保
存本地子网络输出数据的内存地址,因此,将检测到需要向内存地址中写入数据,可确定写
入的数据为本地子网络输出数据。
创建的传输通道,将子网络输出数据发送至另一子网络模块所在的目标神经网络处理器
上。
利用预设算子将报文发送至远程直接内存访问引擎中的待发送队列。对应的内容请参看上
文中对应步骤的描述。
数据的内存地址告知每个计算单元,每个计算单元需要保存该内存地址。如此,当计算单元
检测到需要向内存地址中写入数据时,即可触发计算单元执行封装报文并发送报文的操
作。由于计算单元需要保存内存地址,因此,需要对计算单元(计算单元是硬件)进行相应的
改进,以使地计算单元可以保存该内存地址。
其他子网络模块发送的子网络输出数据后该如何处理。
出数据的内存地址为目标内存地址,该目标内存地址是预先分配的可用来保存其他子网络
输出数据的内存地址。
块部署在哪个NPU上。例如,神经网络的网络层为300层,第一个子网络模块的网络层为第1‑
90层,部署在第一个NPU上,第二个NPU上部署的第二个子网络模块的网络层为第91‑200层,
第三个NPU上部署的第三个子网络模块所对应的网络层为第201‑250层,第四个NPU上部署
的第四个子网络模块所对应的网络层为第251‑300层。
为目标神经网络处理器,若否,则根据写入的目标内存地址可确定需要子网络输出数据的
目标网络层,根据目标网络层和神经网络的其他子网络模块所对应的网络层数据可确定目
标神经网络处理器。
发送至远程直接内存访问引擎中的待发送队列,该预设格式为直接内存访问引擎支持的格
式。
送至哪一个目标神经网络处理器。
出数据发送至另一子网络模块所在的目标神经网络处理器上。
网络输出数据的存储地址不在本NPU的内存地址范围内,触发对应的报文传输操作,将子网
络输出数据发送至目标神经网络处理器上。
装置600应用在芯片中的神经网络处理器上,神经网络处理器上安装有集成远程直接内存
访问引擎的硬件,神经网络处理器上部署有神经网络的子网络模块,神经网络处理器包括
多个计算单元和存储器,该数据处理装置600可以包括第一获取模块601,封装模块602,第
二获取模块603以及发送模块604。
而输出的数据。
为所述直接内存访问引擎支持的格式。
经网络处理器上。
内存访问引擎中的待发送队列,其中,所述预设算子是预先封装的原子计算指令集合,所述
原子计算指令集合中包括远程直接内存访问原语。对应地,数据处理装置600还包括添加模
块605。其中,添加模块605,用于在所述计算单元利用预设算子将内存地址封装为预设格式
的硬件层的报文之前,在定义所述神经网络的网络结构时,加入预设算子;或者在利用神经
网络编译器编译所述神经网络,并将编译后的所述神经网络切片后得到的每个子网络模块
中加入预设算子。
址的发送指令发送至用户态协议栈;基于所述发送指令,利用所述用户态协议栈将所述内
存地址直接封装为硬件层的报文。
述内存地址中写入所述子网络输出数据时,将所述内存地址封装为预设格式的硬件层的报
文,并将所述报文发送至所述远程直接内存访问引擎中的待发送队列。
网络输出数据,并将所述子网络输出数据保存在所述存储器中。广播模块606,用于向所述
计算单元广播所述子网络输出数据。网络处理模块607,用于通过所述计算单元调用所述存
储器中的子网络模块对所述子网络输出数据进行处理,以得到子网络输出数据/神经网络
的最终处理结果,得到最终处理结果之后,结束神经网络部分的处理,再利用最终处理结果
生成行车轨迹、或者利用最终处理结果得到行车决策,以将形成轨迹或者行车决策发送至
车控微控制单元。
数据后,获取预先分配的保存所接收到的所述子网络输出数据的目标内存地址,以及获取
预先分配的所述神经网络处理器自身的存储地址范围、以及其他神经网络处理器中部署的
神经网络的其他子网络模块所对应的网络层数据。确定模块,用于根据所述目标内存地址、
所述存储地址范围和所述网络层数据确定保存所述子网络输出数据的目标神经网络处理
器。接收模块606,还用于当所确定的目标神经网络处理器为所述神经网络处理器时,将所
述子网络输出数据保存在所述目标内存地址中。封装模块602,还用于当所确定的目标神经
网络处理器不为所述神经网络处理器时,通过所述计算单元将所述子网络输出数据和所述
目标神经网络处理器的标识信息封装为预设格式的硬件层的报文,并将所述报文发送至所
述远程直接内存访问引擎中的待发送队列。
处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器包括多个计算单
元和存储器,所述存储器中存储有子网络模块,所述神经网络处理器用于执行上述任一项
所述的数据处理方法。
算力,使用该数据处理系统可在不增加芯片成本的基础上,实现将一个复杂的神经网络部
署到多个神经网络处理器上,解决了现有技术的难题。数据处理系统中的部分具体可参看
前文中所述的对应内容。
述的数据处理方法。具体达到的有益效果可参看上文中所述的有益效果,在此不再赘述。
可以包括处理器、存储器、触控显示屏、射频电路、音频电路、输入单元、电源、摄像头、传感
器、无线保真模块、蓝牙模块中的一个或者多个。其中,处理器分别与触控显示屏、射频电
路、音频电路、输入单元、电源、摄像头、传感器、无线保真模块、蓝牙模块电性连接。
储介质中,并由处理器进行加载和执行。
中的步骤。例如,该计算机程序可以执行如下步骤:
将所述内存地址封装为预设格式的硬件层的报文,并将所述报文发送至所述远程直接内存
访问引擎中的待发送队列,所述预设格式为所述直接内存访问引擎支持的格式;所述远程
直接内存访问引擎获取所述待发送队列中的所述报文中的所述内存地址,从所述内存地址
中获取所述子网络输出数据,并通过所述子网络模块与部署有所述神经网络的另一子网络
模块之间创建的传输通道,将所述子网络输出数据发送至所述另一子网络模块所在的目标
神经网络处理器上。
实现的有益效果,详见前面的实施例,在此不再赘述。
施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,
依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内
容不应理解为对本申请的限制。