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

数据处理方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 19:14:59


数据处理方法、装置、电子设备及存储介质

技术领域

本公开涉及芯片技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。

背景技术

随着汽车电子电气(Electrical/Electronic,EE)架构从分布式到跨域集中式发展,在单一的系统级芯片(SOC)中部署计算机视觉引擎已经不能满足越来越丰富的车载应用场景对计算机视觉引擎(CV-Engine)处理低延时,大算力的需求。相关技术中,CV-Engine独立部署在芯片的一个系统中,部署CV-Engine的系统之间无法均衡算力、共享算力也无法做的带宽共享。

发明内容

本公开提供了一种数据处理方法、装置、电子设备及存储介质,以至少解决现有技术中存在的以上技术问题。

根据本公开的第一方面,提供了一种数据处理方法,包括:

接收第一应用程序发送的第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存;

将所述第一请求发送至所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求;

响应于所述第一后端处理所述第一请求,接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一应用程序;

其中,所述第一应用程序包括第一系统对应的应用程序,或者所述第一系统以外的远程系统对应的应用程序;

响应于所述第一应用程序为所述第一系统对应的应用程序,则所述第一后端包括所述第一系统所包括的后端,或者所述远程系统所包括的后端;所述第一缓存包括所述第一系统所包括的缓存,或者所述远程系统所包括的缓存;

响应于所述第一应用程序为所述远程系统对应的应用程序,则所述第一后端包括所述第一系统所包括的后端,所述第一缓存包括所述第一系统所对应的缓存。

上述方案中,所述第一系统和所述远程系统集成于同一芯片内部;所述远程系统包括所述芯片中除所述第一系统以外的任一系统;

所述第一系统与所述远程系统之间基于核间通信的方式进行数据传输。

根据本公开的第二方面,提供一种数据处理装置,包括:

接收单元,用于接收第一应用程序发送的第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存;

发送单元,用于将所述第一请求发送至所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求;

传输单元,用于响应于所述第一后端处理所述第一请求,接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一应用程序;

其中,所述第一应用程序包括第一系统对应的应用程序,或者所述第一系统以外的远程系统对应的应用程序;

响应于所述第一应用程序为所述第一系统对应的应用程序,则所述第一后端包括所述第一系统所包括的后端,或者所述远程系统所包括的后端;所述第一缓存包括所述第一系统所包括的缓存,或者所述远程系统所包括的缓存;

响应于所述第一应用程序为所述远程系统对应的应用程序,则所述第一后端包括所述第一系统所包括的后端,所述第一缓存包括所述第一系统所对应的缓存。

根据本公开的第三方面,提供了一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开所述的方法。

根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本公开所述的方法。

本公开的数据处理方法,通过接收第一应用程序发送的第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存;将所述第一请求发送至所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求;响应于所述第一后端处理所述第一请求,接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一应用程序;其中,所述第一应用程序包括第一系统对应的应用程序,或者所述第一系统以外的远程系统对应的应用程序;响应于所述第一应用程序为所述第一系统对应的应用程序,则所述第一后端包括所述第一系统所包括的后端,或者所述远程系统所包括的后端;所述第一缓存包括所述第一系统所包括的缓存,或者所述远程系统所包括的缓存;响应于所述第一应用程序为所述远程系统对应的应用程序,则所述第一后端包括所述第一系统所包括的后端,所述第一缓存包括所述第一系统所对应的缓存。如此,在接收第一请求和处理第一请求的第一后端在不同系统中时,可以通过系统间的交互,由其他系统处理第一请求,从而实现均衡算力、共享算力以及带宽分享。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:

在附图中,相同或对应的标号表示相同或对应的部分。

图1示出了相关技术中多后端视觉引擎技术进行数据处理的示意图;

图2示出了本公开实施例提供的数据处理方法的一种可选结构示意图;

图3示出了本公开实施例提供的多后端视觉引擎技术进行数据处理的示意图;

图4示出了本公开实施例提供的建立所述第一应用程序与所述第一系统之间的传输通道得可选示意图;

图5示出了本公开实施例提供的数据处理方法的另一种可选流程示意图;

图6示出了本公开实施例提供的数据处理方法的又一种可选流程示意图;

图7示出了本公开实施例提供的多后端视觉引擎技术进行数据处理的另一种示意图;

图8示出了本公开实施例提供的数据处理方法的再一种可选流程示意图;

图9示出了本公开实施例提供的数据处理方法的一种数据流示意图;

图10示出了本公开实施例提供的数据处理方法的另一种数据流示意图;

图11示出了本公开实施例提供的数据处理装置的可选结构示意图;

图12示出了本公开实施例一种电子设备的组成结构示意图。

具体实施方式

为使本公开的目的、特征、优点能够更加的明显和易懂,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而非全部实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

随着汽车EE架构从分布式到跨域集中式发展,在单一系统级芯片(SOC)中部署计算机视觉引擎已经不能满足越来越丰富的车载应用场景对计算机视觉处理低延时、低带宽和大算力的需求。比如,SOC内部多个操作系统(简称系统)调度各类硬件资源实现座舱及自动驾驶程序,运行过程中可以通过计算视觉引擎系统(CV-Engine)调动SOC上的多个后端加速设备或者其他SOC的多个后端计算设备,从而加速视频、图像的处理,解决低延时,大算力的需求。其中,所述操作系统可以是进行时(Runtime)系统Linux、Android、QNX等;本公开实施例中,应用程序、运行时服务器(Runtime Server)和CV-Engine均部署于操作系统内部,所述操作系统的相关操作可以由运行时服务器实现。

目前通用的多后端视觉引擎技术是运行(或部署)在一个个独立的操作系统中,在单一系统中利用进程间通信的方式将客户端(应用程序端)处理请求发送给服务端(即Runtime端)处理后返回到客户端(应用程序端),请求可以是同步或异步方式。

图1示出了相关技术中多后端视觉引擎技术进行数据处理的示意图。

如图1所示,应用程序(包括Python应用程序,和C/C++应用程序)所产生的请求发送至运行时(或称运行时服务器)后,运行时将所述请求发送至后端实施(BackendImplementation),并在实施完成后,将实施结果(或处理结果)返回至运行时,所述运行时再将实施结果返回至应用程序。其中,所述应用程序对应一个客户端(Client);汽车场景中,应用程序可以是汽车座舱的智能视觉监控系统(In-cabin Monitoring System,IMS)等,也可以是导航辅助驾驶或导航辅助功能(Navigate On Auto Pilot,NOA)。其中,IMS既包括驾驶员监控系统(Driver Monitoring System,DMS)和乘客监测系统(OccupancyMonitoring System,OMS),也包括面部识别(FACE ID)、手势识别、体征监测、远程监控等。

相关技术中,CV-Engine独立部署在一个系统中,部署CV-Engine的系统之间无法进行交互,从而无法均衡算力,无法共享算力,同时也无法做到双倍速率同步动态随机存储器(Double Data Rate SDRAM,DDR SDRAM)带宽分享。

针对相关技术中存在的缺陷,本公开提供一种数据处理方法,采用虚拟后端设备的方式,扩展当前系统的真实后端能力,应用程序通过虚拟设备(Virtual Device)将当前系统的算力请求转移(offload)到其他已经部署了CV-Engine的系统,由其他系统的后端设备完成CV计算,实现跨域,跨SOC的算力共享,而且分布式的实现可以避免跨SOC的内存拷贝,缓解DDR的带宽压力。

图2示出了本公开实施例提供的数据处理方法的一种可选结构示意图,图3示出了本公开实施例提供的多后端视觉引擎技术进行数据处理的示意图。

在一些实施例中,所述第一应用程序可以是第一系统对应的应用程序,也就是说,参考图1,所述第一应用程序为第一系统对应的应用程序,则所述第一应用程序为图1所示的Python应用程序或C/C++应用程序,所述第一系统为直接接收第一应用程序的第一请求的系统,所述第一系统的相关操作由所述第一系统包括的Runtime(或称Runtime Server)实现。或者,所述第一应用程序也可以是远程系统对应的应用程序,参考图3,所述远程系统为芯片中除第一系统(系统1)以外的其他系统(系统X),所述第一应用程序为图3中远程系统对应的Python应用程序或C/C++应用程序,即远程系统可以直接接收第一应用程序的第一请求;具体的,本公开实施例,远程系统的相关操作由所述远程系统包括的Runtime实现。

需要说明的是,所述第一系统和所述远程系统集成于同一SOC芯片内部(即多核异构),所述远程系统并不是指物理位置上相对第一系统较远的系统,而是芯片内部除第一系统以外的任一系统。

如图3所示,已经部署CV-Engine的系统1的应用程序如果想发起将自己的任务交给系统X上的CV-Engine进行CV计算,系统1可以通过虚拟设备发出CV计算请求,系统1的Runtime将该虚拟设备上的请求转发给目标系统X(即系统X),该目标系统X上也部署了同样的CV-Engine程序。系统X根据当前系统虚拟设备上收到的请求进而通过Runtime调动真正的后端设备处理该请求,系统X处理后的结果原路返还给系统1,如此,完成了一次跨系统计算,具体流程包括:

步骤S201,接收第一应用程序发送的第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存。

在一些实施例中,数据处理装置(以下简称装置)接收第一应用程序发送的第一请求之前,所述方法还可以包括建立所述第一应用程序与所述第一系统之间的传输通道,以及所述第一应用程序的映射;或者,建立所述第一应用程序与所述远程系统之间的传输通道,以及所述第一应用程序的映射。

具体实施时,若所述第一应用程序为所述第一系统对应的应用程序(即所述第一系统直接接收所述第一应用程序发送的第一请求),数据处理装置可以是第一系统,所述装置创建第一系统的第一接收通道,以接收所述第一应用程序的请求;响应于所述第一应用程序发起创建会话,则创建所述第一应用程序的第二接收通道和第二发送通道;创建所述第一系统的第一发送通道和所述第一应用程序的映射;其中,所述第一应用程序的映射包括所述第一发送通道、所述第一应用程序的标识和缓存列表,可选的,还可以包括缓存标识、缓存起始地址和缓存结束地址。其中,多个应用程序的映射(agent)通过双向链表(list)连接。所述后端可以是CPU、GPU和DSP等。

或者,具体实施时,若所述第一应用程序为所述远程系统对应的应用程序(即所述远程系统直接接收所述第一应用程序发送的第一请求),数据处理装置可以是远程系统,所述装置创建远程系统的第三接收通道,以接收所述第一应用程序的第一请求;响应于所述第一应用程序发起创建会话,则创建所述第一应用程序的第四接收通道和第四发送通道;创建所述远程系统的第三发送通道和所述第一应用程序的映射;其中,所述第一应用程序的映射包括所述第三发送通道、所述第一应用程序的标识和缓存列表,可选的,还可以包括缓存标识、缓存起始地址和缓存结束地址。其中,多个应用程序的映射通过双向链表连接。

在一些实施例中,所述装置可以基于所述第一接收通道或第三接收通道接收所述第一应用程序的第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存。

在一些可选实施例中,响应于处理所述第一请求的第一后端与第一缓存所对应的系统,不是直接接收所述第一请求的系统,则通过接收所述第一请求的系统所包括的虚拟设备,将所述第一请求发送至处理所述第一请求的第一后端与第一缓存所对应的系统所包括的虚拟设备中。

在一些实施例中,所述处理第一请求的第一后端和第一缓存,可以是第一系统对应的第一后端和第一缓存,也可以是远程系统对应的第一后端和第一缓存。

具体实施时,响应于所述第一应用程序为所述第一系统对应的应用程序,则所述第一后端包括所述第一系统所包括的后端,或者所述远程系统所包括的后端;所述第一缓存包括所述第一系统所包括的缓存,或者所述远程系统所包括的缓存;响应于所述第一应用程序为所述远程系统对应的应用程序,则所述第一后端包括所述第一系统所包括的后端,所述第一缓存包括所述第一系统所对应的缓存。需要说明的是,第一后端和第一缓存可以是同一系统对应的后端和缓存,也可以是不同系统对应的后端和缓存,如多个系统共享一个缓存等。

在一些实施例中,所述后端标识,即所述第一应用程序期望处理所述第一请求的后端的唯一标识,在所述第一系统和远端系统所集成的芯片中,每一个系统中的后端都有唯一的标识,基于所述标识可以确定唯一的后端,所述第一缓存同理。与现有的PC-服务器架构不同,PC-服务器架构中,PC不需要在指令或请求中携带执行所述指令或请求的后端,只要接收到处理结果即可;但本公开中,第一应用程序必须指定执行请求或指令的后端。

步骤S202,将所述第一请求发送至所述第一后端对应的任务队列中。

在一些实施例中,所述装置经步骤S201确认处理所述第一请求的第一后端和第一缓存之后,响应于所述第一应用程序为所述第一系统对应的应用程序,所述第一后端为所述第一系统所包括的后端,第一缓存为所述第一系统所包括的缓存,则将所述第一请求发送至所述第一系统中,所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求;

或者,响应于所述第一应用程序为所述第一系统对应的应用程序,所述第一后端为所述远程系统所包括的后端,第一缓存为所述远程系统所包括的缓存,则将所述第一请求基于所述第一系统包括的第一虚拟设备发送至所述远程系统包括的第二虚拟设备中;所述第二虚拟设备接收所述第一请求后,将所述第一请求发送至所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求。

或者,响应于所述第一应用程序为所述远程系统对应的应用程序,则基于所述第一系统包括的第一虚拟设备接收所述第一请求,并基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存,将所述第一请求发送至所述第一后端对应的任务队列中。

在一些实施例中,任务队列中包括多个请求对应的任务,每一个后端对应一个任务队列,即一个任务队列中包括指定后端待执行的任务。

步骤S203,响应于所述第一后端处理所述第一请求,接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一应用程序。

在一些实施例中,响应于所述第一后端处理所述第一请求,则所述远程系统接收所述第一请求的处理结果,并基于所述第二虚拟设备和所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一虚拟设备中;所述第一虚拟设备基于所述第一请求中携带的应用程序标识将所述第一请求的处理结果发送至所述第一应用程序;或者,响应于所述第一后端处理所述第一请求,则所述第一系统接收所述第一请求的处理结果,并基于所述第一虚拟设备和所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第二虚拟设备中;所述第二虚拟设备基于所述第一请求中携带的应用程序标识将所述第一请求的处理结果发送至所述第一应用程序。

如此,通过本公开实施例提供的数据处理方法,在接收第一请求和处理第一请求的第一后端在不同系统中时,可以通过系统间的交互,由其他系统处理第一请求,从而实现单个SOC内部不同跨域或者多个SOC之间共享CV算力。

图4示出了本公开实施例提供的建立所述第一应用程序与所述第一系统之间的传输通道得可选示意图,即步骤S201所涉及的内容。

应用程序与系统之前是典型的client-server架构,在CV-Engine运行时服务器启动时,创建Runtime server端的接收通道,只负责接收来自应用程序的消息(或请求)。

在应用程序发起创建会话(session)时,创建应用程序的发送通道和接收通道,然后应用程序发送初始化消息给系统包括的运行时服务器,在运行时服务器端处理初始化请求时,创建该应用程序的映射,然后运行时服务器创建该应用程序映射的发送通道,用于向该应用程序发送回信(或处理请求的结果)。在应用程序销毁会话时,发送销毁信息给运行时服务器,在运行时服务器端开始销毁已经备份的该应用程序对应的映射,并发送确认字符(Acknowledge character,ACK)至该应用程序,在应用程序端收到ACK后释放所有资源。

图5示出了本公开实施例提供的数据处理方法的另一种可选流程示意图,将根据各个步骤进行说明。

图5所示的实施例为第一应用程序为第一系统所对应的应用程序,且第一后端和第一缓存为第一系统对应的后端和缓存的场景。

步骤S301,第一系统接收第一应用程序发送的第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存。

本实施例中,所述数据处理装置基于所述第一系统执行步骤S301至步骤S303;具体的,可以基于第一系统中运行时服务器执行步骤S301至步骤S303。

在一些实施例中,所述第一系统基于所述第一应用程序与所述第一系统之间的传输通道接收所述第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存。

步骤S302,第一系统将所述第一请求发送至所述第一后端对应的任务队列中。

在一些实施例中,所述第一系统将所述第一请求发送至所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求。

步骤S303,响应于所述第一后端处理所述第一请求,第一系统接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一应用程序。

在一些实施例中,所述第一系统响应于所述第一后端处理所述第一请求,则所述第一系统接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识将所述第一请求的处理结果发送至所述第一应用程序。

如此,通过本公开实施例提供的数据处理方法,可以实现单个SOC内部不同跨域之间共享CV算力。

图6示出了本公开实施例提供的数据处理方法的又一种可选流程示意图,将根据各个步骤进行说明;图7示出了本公开实施例提供的多后端视觉引擎技术进行数据处理的另一种示意图。

如图7所示,应用程序(用户应用程序)和运行时服务器之间通过消息交互传送请求和请求对应的处理结果。运行时服务器接收到用户消息后将远程设备的消息请求(即其他运行时服务器对应的应用程序的请求)缓存到虚拟设备后端设备对应的虚拟队列(Virtual Queue)中。因为可能存在多个远程系统,所以需要维护多个Virtual Queue。虚拟设备解析Virtual Queue中的消息,并发送给正确的远程系统X,系统X的虚拟设备在等待消息中被唤醒,接收到来自系统1的消息并解析后将消息分派(dispatch)到对应当前系统后端设备的任务队列(worker queue)中。后端设备处理完成后,根据信息(Message,msg)的类型通过虚拟设备发送消息给系统1。所述运行时服务器可以是CV-Engine所包括的运行时服务器。需要说明的是,若第一应用程序是第一系统对应的应用程序,且第一后端和第一缓存为第一系统对应的后端和缓存,则所述第一应用程序的第一请求缓存至第一系统的任务队列中;若第一后端和第一缓存为远程系统对应的后端和缓存,则所述第一请求缓存至远程系统的虚拟队列中。

图6所示为第一应用程序为第一系统所对应的应用程序,且第一后端和第一缓存为远程系统对应的后端和缓存的场景。

步骤S401,第一系统接收第一应用程序发送的第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存。

本实施例中,所述数据处理装置基于所述第一系统和远程系统执行步骤S401至步骤S403;具体的,可以由第一系统中运行时服务器和远程系统中运行时服务器执行步骤S401至步骤S403。

在一些实施例中,如图7所示,所述第一系统基于所述第一应用程序与所述第一系统之间的传输通道接收所述第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存为所述远程系统对应的后端和缓存。

在一些实施例中,所述第一系统将所述第一请求基于所述第一系统包括的第一虚拟设备发送至所述远程系统包括的第二虚拟设备中。

具体实施时,如图7所示,所述第一系统可以基于第一虚拟设备包括的发送模块,向第二虚拟设备发送第一请求;相应的,远程系统(系统X)可以基于第二虚拟设备包括的接收模块,接收所述第一请求。

步骤S402,远程系统接收第一请求。

在一些实施例中,如图7所示,所述远程系统基于第二虚拟设备接收所述第一请求后,将所述第一请求发送至所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求。

在一些可选实施例中,如图7所示,对于第一系统发送的第一请求,所述远程系统将所述第一请求发送至所述第一后端对应的虚拟队列中,并在处理后发送至第二虚拟设备,通过所述第二虚拟设备发送至第一虚拟设备。而对于远端系统自身接收的请求,则发送至所述远端系统包括的工作队列中。

在一些可选实施例中,所述远程系统还可以基于所述第一请求,获取所述第一请求对应的图像或视频。例如,第一系统未挂接相机(Camera)或数据生产设备,或者为了减少第一系统与远程系统的消息交互,减少DDR内存带宽,所述第一系统可以不向远程系统发送处理所述第一请求所需要的数据,由所述远程系统自行获取。

步骤S403,远程系统向第一系统发送第一请求的处理结果。

在一些实施例中,如图7所示,响应于所述第一后端处理所述第一请求,则所述远程系统接收所述第一请求的处理结果;将所述第一请求的处理结果通过所述第二虚拟设备发送至所述第一虚拟设备中。

在一些可选实施例中,所述远程系统可以存储或使用所述第一请求的处理结果,例如,处理结果为图像、视频数据,则所述图像、视频数据可以供远程系统商神经网络加速器使用。

如此,可以减少系统间数据交互和DDR内存带宽开销。

步骤S404,第一系统接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一应用程序。

在一些实施例中,如图7所示,所述第一系统基于所述第一虚拟设备接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一应用程序。

如此,通过本公开实施例提供的数据处理方法,在接收第一请求和处理第一请求的第一后端在不同系统中时,可以通过系统间的交互,由其他系统处理第一请求,从而实现单个SOC内部不同跨域或者多个SOC之间共享CV算力。

图8示出了本公开实施例提供的数据处理方法的再一种可选流程示意图,将根据各个步骤进行说明。

图8所示为第一应用程序为远程系统所对应的应用程序,且第一后端和第一缓存为第一系统对应的后端和缓存的场景。

步骤S501,远程系统接收第一应用程序发送的第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存。

本实施例中,所述数据处理装置基于所述第一系统和远程系统执行步骤S501至步骤S503;具体的,可以由第一系统中运行时服务器和远程系统中运行时服务器执行步骤S501至步骤S503。

在一些实施例中,如图7所示,所述远程系统基于所述第一应用程序与所述远程系统之间的传输通道接收所述第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存为所述第一系统对应的后端和缓存。

在一些实施例中,所述远程系统将所述第一请求基于所述远程系统包括的第二虚拟设备发送至所述第一系统包括的第一虚拟设备中。

步骤S502,第一系统接收第一请求。

在一些实施例中,如图7所示,所述第一系统基于第一虚拟设备接收所述第一请求后,将所述第一请求发送至所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求。

步骤S503,第一系统向远程系统发送第一请求的处理结果。

在一些实施例中,如图7所示,响应于所述第一后端处理所述第一请求,则所述第一系统接收所述第一请求的处理结果;将所述第一请求的处理结果通过所述第一虚拟设备发送至所述第二虚拟设备中。

步骤S504,远程系统接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一应用程序。

在一些实施例中,如图7所示,所述远程系统基于所述第一虚拟设备接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一应用程序。

如此,通过本公开实施例提供的数据处理方法,在接收第一请求和处理第一请求的第一后端在不同系统中时,可以通过系统间的交互,由其他系统处理第一请求,从而实现单个SOC内部不同跨域或者多个SOC之间共享CV算力。

图9示出了本公开实施例提供的数据处理方法的一种数据流示意图。

图9示出了上述步骤S201至步骤S203、步骤S301至步骤S303、步骤S401至步骤S404,以及步骤S501至步骤S504中数据流示意图。

如图9所示,运行时服务器(第一系统或远程系统中的Runtime)接收多个客户端(应用程序)发送的请求,所述请求可以是所述运行时服务器直接接收的(即应用程序直接发送的),也可以是运行时服务器以外的系统所对应的应用程序发送的请求(即运行时服务器所对应的系统以外的系统接收请求后,通过虚拟设备发送至运行时服务器所对应的系统)。

所述运行时服务器接收所述请求后,基于所述请求所携带的后端标识和缓存标识,确认处理所述第一请求的后端和缓存,将所述第一请求发送至所述第一后端对应的任务队列中(即图8中run queue)。图8中worker用于触发任务队列所对应的后端,并在后端基于所述缓存处理所述请求后收集所述请求的处理结果,并基于所述第一请求对应的映射中存储的应用程序的标识,将所述请求的处理结果发送至响应的应用程序中。

具体的,若所述第一请求对应的应用程序与所述运行时服务器相对应,则基于应用程序与运行时服务器之间的传输通道发送所述请求的处理结果;若所述第一请求对应的应用程序与所述运行时服务器不对应,则先基于运行时服务器包括的虚拟设备与所述应用程序对应的系统包括的虚拟设备将所述处理结果发送至所述应用程序对应的系统,然后基于应用程序与所述处理之间的传输通道发送所述请求的处理结果。

图10示出了本公开实施例提供的数据处理方法的另一种数据流示意图。

图10是图9的进一步描述。如图10所示,每一个应用程序(代码中用client_ctx,client context)中均包括接收通道、发送通道和应用程序标识(uid),应用程序与运行时服务器之间建立传输通道的方式可以参考图4,本公开中不再重复赘述。

在建立传输通道的过程中,会建立每个应用程序的映射,即图10中client_agent,其中映射中包括发送通道标识、对应的应用程序标识、缓存标识、缓存的起始位置、缓存的结束位置以及缓存列表。其中,每一个应用程序的映射通过list链接,形成双向链表。

在缓存列表中,包括应用程序可能会用到的缓存(buffer)信息,可以包括总缓存大小、地址、大小、缓存标识等信息,每一个缓存列表均通过list进行链接,形成链表。

进一步,运行时服务器(代码中用server_ctx,server context)中包括接收通道、worker列表和应用程序的映射列表,如此可以通过应用程序的列表快速索引到所述应用程序相关的信息,以及执行所述请求的缓存的相关信息。此外,worker列表中可以包括任务队列和后端标识,每一个worker列表通过list链接,形成链表。

进一步,在运行时服务器确定第一请求对应的第一后端和第一缓存之后,通过字符串匹配或者通过句柄匹配缓存标识的方式在缓存列表中找到第一缓存,然后将所述第一缓存的地址取出,供后端处理所述第一请求。

图11示出了本公开实施例提供的数据处理装置的可选结构示意图,将根据各个部分进行说明。

在一些实施例中,所述数据处理装置600包括接收单元601、发送单元602和传输单元603。

所述接收单元601,用于接收第一应用程序发送的第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存;

所述发送单元602,用于将所述第一请求发送至所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求;

所述传输单元603,用于响应于所述第一后端处理所述第一请求,接收所述第一请求的处理结果,基于所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一应用程序;

其中,所述第一应用程序包括第一系统对应的应用程序,或者所述第一系统以外的远程系统对应的应用程序;

响应于所述第一应用程序为所述第一系统对应的应用程序,则所述第一后端包括所述第一系统所包括的后端,或者所述远程系统所包括的后端;所述第一缓存包括所述第一系统所包括的缓存,或者所述远程系统所包括的缓存;

响应于所述第一应用程序为所述远程系统对应的应用程序,则所述第一后端包括所述第一系统所包括的后端,所述第一缓存包括所述第一系统所对应的缓存。

在一些实施例中,所述第一系统和所述远程系统集成于同一芯片内部;所述远程系统包括所述芯片中除所述第一系统以外的任一系统;

所述第一系统与所述远程系统之间基于核间通信的方式进行数据传输。

在一些实施例中,所述数据处理装置600还可以包括建立单元604。

所述建立单元604,在所述接收第一应用程序发送的第一请求之前,用于建立所述第一应用程序与所述第一系统之间的传输通道,以及所述第一应用程序的映射;或者,建立所述第一应用程序与所述远程系统之间的传输通道,以及所述第一应用程序的映射。

所述建立单元604,具体用于创建第一系统的第一接收通道,以接收所述第一应用程序的请求;响应于所述第一应用程序发起创建会话,则创建所述第一应用程序的第二接收通道和第二发送通道;创建所述第一系统的第一发送通道和所述第一应用程序的映射;其中,所述第一应用程序的映射包括所述第一发送通道、所述第一应用程序的标识和缓存列表。

所述接收单元601,具体用于响应于所述第一应用程序为所述第一系统对应的应用程序,则基于所述第一应用程序与所述第一系统之间的传输通道接收所述第一请求,基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存。

所述发送单元602,具体用于响应于所述第一后端为所述第一系统所包括的后端,第一缓存为所述第一系统所包括的缓存,则将所述第一请求发送至所述第一系统中,所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求。

所述发送单元602,具体用于响应于所述第一后端为所述远程系统所包括的后端,第一缓存为所述远程系统所包括的缓存,则将所述第一请求基于所述第一系统包括的第一虚拟设备发送至所述远程系统包括的第二虚拟设备中;在所述第二虚拟设备接收所述第一请求后,将所述第一请求发送至所述第一后端对应的任务队列中,以使所述第一后端基于所述第一缓存处理所述任务队列中的第一请求。

所述传输单元603,具体用于响应于所述第一后端处理所述第一请求,则接收所述第一请求的处理结果,并基于所述第二虚拟设备和所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第一虚拟设备中;通过所述第一虚拟设备,和所述第一请求中携带的应用程序标识将所述第一请求的处理结果发送至所述第一应用程序。

所述接收单元601,具体用于响应于所述第一应用程序为所述远程系统对应的应用程序,则基于所述第一系统包括的第一虚拟设备接收所述第一请求,并基于所述第一请求携带的后端标识和缓存标识,确认处理所述第一请求的第一后端和第一缓存;

其中,所述第一后端为所述第一系统所包括的后端;所述第一缓存为所述第一系统所包括的缓存。

所述传输单元603,具体用于响应于所述第一后端处理所述第一请求,则所述第一系统接收所述第一请求的处理结果,并基于所述第一虚拟设备和所述第一请求中携带的应用程序标识,将所述第一请求的处理结果发送至所述第二虚拟设备中;基于所述第二虚拟设备和所述第一请求中携带的应用程序标识将所述第一请求的处理结果发送至所述第一应用程序。

根据本公开的实施例,本公开还提供了一种电子设备和一种可读存储介质。

图12示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。

如图12所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。

电子设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如数据处理方法。例如,在一些实施例中,数据处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到电子设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的数据处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据处理方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 数据处理方法、装置、计算机可读存储介质和电子设备
  • 路由数据处理方法、装置、电子设备及存储介质
  • 数据处理方法及装置、电子设备、存储介质
  • 屏幕布局数据处理方法、装置、电子设备及存储介质
  • 网页操作数据的处理方法、装置、电子设备及存储介质
  • 数据加密处理方法、数据解密处理方法、装置、电子设备及可读存储介质
  • 数据处理方法、功耗数据处理方法、存储介质和电子设备
技术分类

06120115848113