一种主CPU与NPU的数据交互方法及计算设备技术

技术编号:27695469 阅读:25 留言:0更新日期:2021-03-17 05:17
本申请实施例公开了一种主CPU与NPU的数据交互方法及计算设备,可应用于人工智能领域中,该方法应用于计算设备,计算设备包括主CPU和NPU,主CPU上运行目标APP,主CPU包括AI Service和NPU驱动,NPU包括NPU控制器、运算逻辑单元和N个寄存器,该方法包括:主CPU将AI模型加载到NPU后,NPU为AI模型分配一个寄存器,主CPU在接收到NPU发送的寄存器的物理地址后,会将物理地址映射为目标APP上虚拟内存的虚拟地址,主CPU通过目标APP实际上可以直接读/写NPU上对应的寄存器,相当于目标APP与NPU之间有了直连通路。当主CPU通过目标APP向NPU下发AI模型的执行命令到获取AI模型的执行结果的整个流程中,计算通路旁路了AI Service和NPU驱动,只有寄存器读/写的开销,提高了AI模型推理的实时性。

【技术实现步骤摘要】
【国外来华专利技术】一种主CPU与NPU的数据交互方法及计算设备
本申请涉及人工智能(artificialintelligence,AI)
,尤其涉及一种主CPU与NPU的数据交互方法及计算设备。
技术介绍
随着AI的广泛应用,深度学习已成为当前AI研究和应用的主流方式,面对海量数据的并行运算,AI对于算力的要求不断提升,因此对硬件的运算速度及功耗提出了更高的要求。除了通用的中央处理器(centralprocessingunit,CPU)外,作为硬件加速的图形处理器(graphicsprocessingunit,GPU)、神经网络处理器(neuralnetworksprocessunit,NPU)、现场可编程逻辑门阵列(fieldprogrammablegatearray,FPGA)等一些芯片处理器也在深度学习的不同应用中发挥着各自的优势。其中,NPU尤其擅长处理视频、图像类的海量多媒体数据,在实际应用中,NPU需要CPU的协同处理才能完成特定的任务,也就是NPU作为协处理器挂载到主CPU(HostCPU),由主CPU分配任务(即发送任务相关的命令),NPU再执行相应任务,并向主CPU返回执行的处理结果。目前,主CPU与NPU之间的数据交互流程是:先将AI模型加载至NPU,如图1所示,先对主CPU上的应用程序(application,APP)进行初始化,并调用主CPU上AI服务(AIService)的服务接口,将AIService能够识别的AI模型文件,发给AIService,AIService对该AI模型进行解析,并将解析好的AI模型文件转换为NPU可处理的格式,之后,AIService再调用主CPU上NPU驱动(NPUdriver)的用户态接口,NPU驱动进一步切换到内核态,配置NPU的相关寄存器和接口,将AI模型加载到NPU,由NPU保存该AI模型,并依次经过NPU驱动和AIService向APP返回加载成功的结果。AI模型加载成功后,且在输入数据准备好之后(比如摄像头完成一帧图像输出),通过该APP下发命令(即AI模型的执行命令)调用AIService的服务接口以及NPU驱动,进行AI模型推理,NPU执行完相关推理任务后,同样需要依次通过NPU驱动以及AIService将得到的执行结果返回到APP,如图2所示。由上述主CPU与NPU之间的数据交互流程可知,主CPU通过APP下发AI模型推理的命令,需要经过AIService和NPU驱动才能到达NPU(即命令通路),同样地,AI模型的执行结果也需要经过NPU驱动和AIService才能返回APP(即响应通路),使得命令通路和响应通路所花费的时间都很长,主要是由如下几点导致的:1)APP和AIService之间是进程间的消息通讯;2)NPU驱动涉及驱动在用户态和内核态之间的切换;3)NPU驱动所在的主CPU和NPU是两个系统,是系统间的通讯。在一些实际应用场景中(如,自动驾驶对实时性就具有很高要求),这样的一次AI模型推理的命令通路和响应通路上的时间开销非常大
技术实现思路
本专利技术实施例提供一种主CPU与NPU的数据交互方法及计算设备,用于在进行AI推理时,减少主CPU上的APP与NPU之间计算通路上的时间开销,提高AI模型执行的效率。本申请第一方面提供一种计算设备,该计算设备包括主CPU和NPU,主CPU上运行目标应用程序(APP),该主CPU包括AI服务(AIService)和NPU驱动,该NPU包括NPU控制器、运算逻辑单元和N个寄存器,N≥1;其中,主CPU,用于通过AIService和NPU驱动将目标APP对应的AI模型加载至NPU,以使得NPU保存该AI模型;NPU,用于通过NPU控制器为AI模型分配一个寄存器(可称为第一寄存器),这个寄存器属于NPU上N个寄存器中的一个,由于每个寄存器都有一个对应的物理地址,NPU通过NPU控制器给AI模型分配一个寄存器,同时也就可以得到该寄存器的物理地址;NPU还用于将该寄存器的物理地址向主CPU发送;主CPU,还用于接收NPU发送的该寄存器的物理地址,并将该寄存器的物理地址映射到目标APP上一个虚拟内存(可称为第一虚拟内存)的虚拟地址,这样,一个被加载至NPU的AI模型,就对应分配有一个寄存器,并且该寄存器的物理地址被映射为目标APP上虚拟内存的虚拟地址;有了寄存器对应的目标APP上的虚拟地址,主CPU就可以用于根据该虚拟地址,通过目标APP写该虚拟内存;NPU,还用于当主CPU根据第一虚拟地址通过目标APP写第一虚拟内存,通过NPU控制器控制运算逻辑单元执行该AI模型;NPU,还用于通过NPU控制器将AI模型的执行结果写入该第一寄存器;主CPU,还用于根据第一虚拟地址,通过目标APP轮询第一虚拟内存,从该第一寄存器中读取该AI模型的执行结果。在本申请上述实施方式中,阐述了一种包括主CPU和NPU的计算设备,该NPU上设置有至少一个寄存器,主CPU将AI模型加载到NPU后,NPU会为该AI模型分配一个寄存器,并且,主CPU在接收到NPU发送的该寄存器的物理地址后,会进一步将该寄存器的物理地址映射到目标APP上虚拟内存的虚拟地址,主CPU通过目标APP实际上可以直接读/写AI模型在NPU上对应的寄存器,相当于目标APP与NPU之间有了直连通路。这样,当主CPU通过目标APP向NPU下发AI模型的执行命令(即直接通过写该虚拟内存触发NPU执行AI模型),到获取AI模型的执行结果(即通过读该虚拟内存获取AI模型的执行结果)的整个流程中,计算通路旁路了AIService和NPU驱动,只有寄存器读/写的开销,相对于已有方案的时间开销,完全可以忽略不计。本申请实施例AI模型推理的过程中只有寄存器读/写的开销,大大提高了AI模型的推理效率,也就是提高了AI模型推理的实时性。在第一方面的一种可能实现方式中,由于每个寄存器都有一个对应的物理地址(physicaladdress,PA),因此主CPU具体可以用于:通过NPU驱动接收该NPU控制器发送的该物理地址,并通过该NPU驱动将该物理地址映射到该AIService的虚拟内存空间,得到该AIService上第二虚拟内存的第二虚拟地址;通过该AIService将该第二虚拟地址映射到该APP的虚拟内存空间,得到该APP上第一虚拟内存的第一虚拟地址。在本申请上述实施方式中,具体阐述了NPU的另一作用,即为AI模型分配的一个寄存器的物理地址如何映射成目标APP上虚拟内存的虚拟地址,具备可实现性。在第一方面的一种可能实现方式中,主CPU具体还用于:通过该APP接收该AIService发送的第二虚拟地址的内存句柄;通过该APP将该第二虚拟地址的内存句柄映射为该APP上第一虚拟内存的第一虚拟地址。在本申请上述实施方式中,给出了AIService上虚拟内存的虚拟地址映射为目标APP上虚拟内存的虚拟地址的具体实现方式,具备可选择性和灵活性。在第一方面的一种可能实现方式中,主CPU具体用于:通过该NPU驱动接收该NPU控制器发送的该第一寄存器的物理地址;通本文档来自技高网
...

【技术保护点】
1.一种计算设备,所述计算设备包括主CPU和NPU,所述主CPU上运行目标应用程序(APP),所述主CPU包括AI服务(AI Service)和NPU驱动,所述NPU包括NPU控制器、运算逻辑单元和N个寄存器,N≥1;/n所述主CPU,用于通过所述AI Service和所述NPU驱动将所述目标APP对应的AI模型加载至所述NPU;/n所述NPU,用于通过所述NPU控制器为所述AI模型分配第一寄存器,并将所述第一寄存器的物理地址向所述主CPU发送,所述第一寄存器属于所述N个寄存器;/n所述主CPU,还用于接收所述NPU发送的所述物理地址,并将所述物理地址映射为所述目标APP上第一虚拟内存的第一虚拟地址;/n所述主CPU,还用于根据所述第一虚拟地址通过所述目标APP写所述第一虚拟内存;/n所述NPU,还用于当所述主CPU根据所述第一虚拟地址通过所述目标APP写所述第一虚拟内存,通过所述NPU控制器控制所述运算逻辑单元执行所述AI模型;/n所述NPU,还用于通过所述NPU控制器将所述AI模型的执行结果写入所述第一寄存器;/n所述主CPU,还用于根据所述第一虚拟地址,通过所述目标APP轮询所述第一虚拟内存,从所述第一寄存器中读取所述AI模型的执行结果。/n...

【技术特征摘要】
【国外来华专利技术】1.一种计算设备,所述计算设备包括主CPU和NPU,所述主CPU上运行目标应用程序(APP),所述主CPU包括AI服务(AIService)和NPU驱动,所述NPU包括NPU控制器、运算逻辑单元和N个寄存器,N≥1;
所述主CPU,用于通过所述AIService和所述NPU驱动将所述目标APP对应的AI模型加载至所述NPU;
所述NPU,用于通过所述NPU控制器为所述AI模型分配第一寄存器,并将所述第一寄存器的物理地址向所述主CPU发送,所述第一寄存器属于所述N个寄存器;
所述主CPU,还用于接收所述NPU发送的所述物理地址,并将所述物理地址映射为所述目标APP上第一虚拟内存的第一虚拟地址;
所述主CPU,还用于根据所述第一虚拟地址通过所述目标APP写所述第一虚拟内存;
所述NPU,还用于当所述主CPU根据所述第一虚拟地址通过所述目标APP写所述第一虚拟内存,通过所述NPU控制器控制所述运算逻辑单元执行所述AI模型;
所述NPU,还用于通过所述NPU控制器将所述AI模型的执行结果写入所述第一寄存器;
所述主CPU,还用于根据所述第一虚拟地址,通过所述目标APP轮询所述第一虚拟内存,从所述第一寄存器中读取所述AI模型的执行结果。


2.根据权利要求1所述的设备,其特征在于,所述主CPU,具体用于:
通过所述NPU驱动接收所述NPU控制器发送的所述物理地址,并通过所述NPU驱动将所述物理地址映射到所述AIService的虚拟内存空间,得到所述AIService上第二虚拟内存的第二虚拟地址;
通过所述AIService将所述第二虚拟地址映射到所述目标APP的虚拟内存空间,得到所述目标APP上第一虚拟内存的第一虚拟地址。


3.根据权利要求2所述的设备,其特征在于,所述主CPU,具体还用于:
通过所述目标APP接收所述AIService发送的第二虚拟地址的内存句柄;
通过所述目标APP将所述第二虚拟地址的内存句柄映射为所述目标APP上第一虚拟内存的第一虚拟地址。


4.根据权利要求1所述的设备,其特征在于,所述主CPU,具体用于:
通过所述NPU驱动接收所述NPU控制器发送的所述第一寄存器的物理地址;
通过所述NPU驱动将所述第一寄存器的物理地址直接映射到所述目标APP的虚拟内存空间,得到所述目标APP上第一虚拟内存的第一虚拟地址。


5.根据权利要求1-4中任一项所述的设备,其特征在于,所述NPU,具体用于:
将所述第一寄存器的物理地址向所述主CPU的NPU驱动发送。


6.一种计算设备,所述计算设备包括主CPU和NPU,所述主CPU上运行目标应用程序(APP),所述主CPU包括AI服务(AIService)和NPU驱动,所述NPU包括NPU控制器、运算逻辑单元和N个寄存器,N≥2;
所述主CPU,用于通过所述AIService和所述NPU驱动将所述目标APP对应的AI模型加载至所述NPU;
所述NPU,用于通过所述NPU控制器为所述AI模型分配第一寄存器和第二寄存器,并将所述第一寄存器的第一物理地址和所述第二寄存器的第二物理地址向所述主CPU发送,所述第一寄存器和所述第二寄存器属于所述N个寄存器;
所述主CPU,还用于接收所述NPU发送的所述第一物理地址和所述第二物理地址,并将所述第一物理地址和所述第二物理地址分别映射为所述目标APP上第一虚拟内存的第一虚拟地址和第二虚拟内存的第二虚拟地址;
所述主CPU,还用于根据所述第一虚拟地址通过所述目标APP写所述第一虚拟内存;
所述NPU,还用于当所述主CPU根据所述第一虚拟地址通过所述目标APP写所述第一虚拟内存,通过所述NPU控制器控制所述运算逻辑单元执行所述AI模型;
所述NPU,还用于通过所述NPU控制器将所述AI模型的执行结果写入所述第二寄存器;
所述主CPU,还用于根据所述第二虚拟地址,通过所述目标APP轮询所述第二虚拟内存,从所述第二寄存器中读取所述AI模型的执行结果。


7.根据权利要求6所述的设备,其特征在于,所述主CPU,具体用于:
通过所述NPU驱动接收所述NPU控制器发送的所述第一物理地址和所述第二物理地址,并通过所述NPU驱动将所述第一物理地址和所述第二物理地址分别映射到所述AIService的虚拟内存空间,得到所述AIService上第三虚拟内存的第三虚拟地址和第四虚拟内存的第四虚拟地址;
通过所述AIService将所述第三虚拟地址和所述第四虚拟地址分别映射到所述目标APP的虚拟内存空间,得到所述目标APP上第一虚拟内存的第一虚拟地址和第二虚拟内存的第二虚拟地址。


8.根据权利要求7所述的设备,其特征在于,所述主CPU,具体还用于:
通过所述目标APP接收所述AIService发送的第三虚拟地址的内存句柄和第四虚拟地址的内存句柄;
通过所述目标APP将所述第三虚拟地址的内存句柄和所述第四虚拟地址的内存句柄分别映射为所述目标APP上第一虚拟内存的第一虚拟地址和第二虚拟内存的第二虚拟地址。


9.根据权利要求6所述的设备,其特征在于,所述主CPU,具体用于:
通过所述NPU驱动接收所述NPU控制器发送的所述第一物理地址和所述第二物理地址;
通过所述NPU驱动将所述第一物理地址和所述第二物理地址分别直接映射到所述目标APP的虚拟内存空间,得到所述目标APP上第一虚拟内存的第一虚拟地址和第二虚拟内存的第二虚拟地址。


10.根据权利要求6-9中任一项所述的设备,其特征在于,所述NPU,具体用于:
将所述第一寄存器的第一物理地址和所述第二寄存器的第二物理地址向所述主CPU的NPU驱动发送。


11.一种计算设备,所述计算设备包括主CPU和NPU,所述主CPU上运行目标应用程序(APP),所述主CPU包括AI服务(AIService)和NPU驱动,所述NPU包括NPU控制器和运算逻辑单元;
所述主CPU,用于通过所述AIService和所述NPU驱动将所述目标APP对应的AI模型加载至所述NPU;
所述主CPU,还用于通过所述NPU驱动为所述AI模型分配第一内存,并将第一内存的地址映射为所述目标APP上第一虚拟内存的第一虚拟地址,所述第一内存为在所述NPU驱动上开辟的内存;
所述主CPU,还用于根据所述第一虚拟地址通过所述目标APP写所述第一虚拟内存;
所述主CPU,还用于当所述主CPU根据所述第一虚拟地址通过所述目标APP写所述第一虚拟内存,通过所述NPU驱动向所述NPU控制器发送执行命令;
所述NPU,用于通过所述NPU控制器根据所述执行命令控制所述运算逻辑单元执行所述AI模型,并通过所述NPU控制器将所述AI模型的执行结果向所述NPU驱动发送;
所述主CPU,还用于通过所述NPU驱动将所述AI模型的执行结果写入所述第一内存;
所述主CPU,还用于根据所述第一虚拟地址,通过所述目标APP轮询所述第一虚拟内存,从所述第一内存中读取所述AI模型的执行结果。


12.一种计算设备,所述计算设备包括主CPU和NPU,所述主CPU上运行目标应用程序(APP),所述主CPU包括AI服务(AIService)和NPU驱动,所述NPU包括NPU控制器和运算逻辑单元;
所述主CPU,用于通过所述AIService和所述NPU驱动将所述目标APP对应的AI模型加载至所述NPU;
所述主CPU,还用于通过所述NPU驱动为所述AI模型分配第一内存和第二内存,并将第一内存的地址和第二内存的地址分别映射为所述目标APP上第一虚拟内存的第一虚拟地址和第二虚拟内存的第二虚拟地址,所述第一内存和所述第二内存为在所述NPU驱动上开辟的内存;
所述主CPU,还用于根据所述第一虚拟地址通过所述目标APP写所述第一虚拟内存;
所述主CPU,还用于当所述主CPU根据所述第一虚拟地址通过所述目标APP写所述第一虚拟内存,通过所述NPU驱动向所述NPU控制器发送执行命令;
所述NPU,用于通过所述NPU控制器根据所述执行命令控制所述运算逻辑单元执行所述AI模型,并通过所述NPU控制器将所述AI模型的执行结果向所述NPU驱动发送;
所述主CPU,还用于通过所述NPU驱动将所述AI模型的执行结果写入所述第二内存;
所述主CPU,还用于根据所述第二虚拟地址,通过所述目标APP轮询所述第二虚拟内存,从所述第二内存中读取所述AI模型的执行结果。


13.一种计算设备,包括主CPU和NPU,其特征在于:
所述主CPU包括AI服务(AIService)和NPU驱动;
所述NPU包括NPU控制器、运算逻辑单元和至少一个寄存器,所述至少一个寄存器中的第一寄存器用于存放加载到所述NPU上的第一AI模型的执行结果;
所述AIService和所述NPU驱动通信连接;
所述NPU驱动和所述NPU控制器通信连接。


14.根据权利要求13所述的设备,其特征在于,所述至少一个寄存器设置在所述NPU控制器上。


15.一种主CPU与NPU的数据交互方法,其特征在于,所述方法应用于计算设备中,所述计算设备包括主CPU和NPU,所述主CPU上运行目标应用程序(APP),所述主CPU包括AI服务(AIService)和NPU驱动,所述NPU包括NPU控制器、运算逻辑单元和N个寄存器,N≥1;所述方法包括:
所述主CPU通过所述AIService和所...

【专利技术属性】
技术研发人员:朱湘毅
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1