CN117827454A - 任务处理方法及装置 - Google Patents

任务处理方法及装置 Download PDF

Info

Publication number
CN117827454A
CN117827454A CN202311869502.3A CN202311869502A CN117827454A CN 117827454 A CN117827454 A CN 117827454A CN 202311869502 A CN202311869502 A CN 202311869502A CN 117827454 A CN117827454 A CN 117827454A
Authority
CN
China
Prior art keywords
task
target
electronic device
processing
call request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311869502.3A
Other languages
English (en)
Inventor
钟浩
郑泽滨
郭壮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN202311869502.3A priority Critical patent/CN117827454A/zh
Publication of CN117827454A publication Critical patent/CN117827454A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请公开了一种任务处理方法及装置,其中,所述方法包括:响应于目标设备集群中的第一电子设备获得目标应用触发的目标处理任务,建立与从所述目标设备集群中确定的至少一第二电子设备之间的目标通信连接;通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备,以使得所述第二电子设备处理所述第一部分任务;其中,所述第一部分任务是所述目标处理任务中除所述第一电子设备处理的第二部分任务之外的剩余任务,所述目标设备集群是由多个电子设备组成的资源集群。

Description

任务处理方法及装置
技术领域
本申请涉及但不限于计算机技术领域,尤其涉及一种任务处理方法及装置。
背景技术
图形处理器(Graphic Process Unit,GPU)是一款专门的图像处理芯片,但其不仅在图像处理中应用广泛,还在科学计算、密码破解、数值分析、大数据处理及金融分析等需要计算的领域中广为应用。在个人计算机(Personal Computer,PC)上,GPU承担着主要的图像处理和计算任务。
随着云计算、大数据、人工智能和5G通信技术的不断发展,本地计算需求呈现指数级增长,而本地PC中的GPU算力难以满足对应的算力需求。因此,如何完成算力需求较大的任务,成为亟需解决的问题。
发明内容
有鉴于此,本申请至少提供一种任务处理方法及装置。
本申请的技术方案是这样实现的:
一方面,本申请提供一种任务处理方法,所述方法包括:
响应于目标设备集群中的第一电子设备获得目标应用触发的目标处理任务,建立与从所述目标设备集群中确定的至少一第二电子设备之间的目标通信连接;
通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备,以使得所述第二电子设备处理所述第一部分任务;
其中,所述第一部分任务是所述目标处理任务中除所述第一电子设备处理的第二部分任务之外的剩余任务,所述目标设备集群是由多个电子设备组成的资源集群。
在一些实施例中,所述方法还包括:
向第三电子设备发送任务处理请求,以通过所述第三电子设备确定能够处理所述任务处理请求的至少一第二电子设备;
其中,所述第三电子设备是从目标设备集群中确定的设备。
在一些实施例中,通过所述第三电子设备确定能够处理所述任务处理请求的至少一第二电子设备,包括以下至少之一:
如果所述任务处理请求中携带有目标标识信息、且所述目标标识信息与所述目标设备集群中的至少一电子设备的标识信息相匹配,将与所述目标标识信息匹配的电子设备确定为所述第二电子设备;
如果所述任务处理请求中携带有目标标识信息、但所述目标标识信息无法在所述目标设备集群中匹配到,基于所述任务处理请求和所述目标设备集群中的各电子设备的设备资源情况确定能够处理所述任务处理请求的至少一第二电子设备;
如果所述任务处理请求中未携带目标标识信息,基于所述任务处理请求和所述目标设备集群中的各电子设备的设备资源情况确定能够处理所述任务处理请求的至少一第二电子设备。
在一些实施例中,所述通过所述目标通信连接将所述目标处理任务的第一部分任务发送给第二电子设备,以使得所述第二电子设备处理所述第一部分任务,包括以下至少之一:
在所述第二电子设备唯一的情况下,将所述第一部分任务直接发送给该唯一的第二电子设备,以使得该唯一的第二电子设备和所述第一电子设备并行或串行处理所述目标处理任务;
在所述第二电子设备不唯一的情况下,基于各第二电子设备的设备资源情况将所述第一部分任务的各个子任务发送给对应的第二电子设备,以使得不唯一的第二电子设备和所述第一电子设备并行或串行处理对应的处理任务。
在一些实施例中,所述方法还包括:
对所述第二电子设备反馈的对所述第一部分任务的处理结果和自身对所述第二部分任务的处理结果进行整合处理后反馈至所述目标应用;且/或,
通过第三电子设备将任务完成通知发送给所述第二电子设备,以断开与所述第二电子设备之间的所述目标通信连接。
在一些实施例中,所述方法还包括:
拦截所述目标应用通过第一图形库接口对第一电子设备的图形处理器的调用请求,并基于所述第一电子设备的设备资源情况将所述目标处理任务分为第一部分任务和第二部分任务。
在一些实施例中,拦截所述目标应用通过目标图形库接口对第一电子设备的图形处理器的调用请求,包括:
拦截所述目标应用在第一图形库接口之后通过图形驱动程序模型的用户模式向其内核模式发送的调用请求;
对应地,通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备,包括:
将所述第一部分任务通过编码处理后发送给所述第二电子设备,将所述第二部分任务传递给所述第一电子设备的图形处理器驱动层进行后续处理。
在一些实施例中,所述方法还包括:
通过第二图形库接口拦截所述目标应用对第一图形库接口的调用请求,并基于所述第一电子设备的设备资源情况和所述目标设备集群中其他电子设备的设备资源情况将所述调用请求拆分成第一调用请求和至少一第二调用请求,以将所述第一调用请求发送给所述第一图形库接口、将所述至少一第二调用请求发送给确定的至少一第二电子设备的第三图形库接口。
在一些实施例中,所述方法还包括:
通过第二图形库接口拦截所述目标应用对第一图形库接口的调用请求,并基于所述目标设备集群的设备资源情况将所述调用请求拆分成至少一第二调用请求,以将所述至少一第二调用请求发送给确定的至少一第二电子设备的第三图形库接口。
另一方面,本申请提供了一种任务处理装置,包括:
通信建立模块,用于响应于目标设备集群中的第一电子设备获得目标应用触发的目标处理任务,建立与从所述目标设备集群中确定的至少一第二电子设备之间的目标通信连接;
数据发送模块,用于通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备,以使得所述第二电子设备处理所述第一部分任务;
其中,所述第一部分任务是所述目标处理任务中除所述第一电子设备处理的第二部分任务之外的剩余任务,所述目标设备集群是由多个电子设备组成的资源集群。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1为本申请提供的一种任务处理方法的实现流程示意图;
图2为本申请提供的任务处理方法中的目标设备集群的组成结构示意图;
图3为利用本申请提供的任务处理方法实现第一电子设备与第二电子设备协作处理目标处理任务的示意图;
图4为利用本申请提供的任务处理方法的目标设备集群的组成结构示意图;
图5为本申请提供的任务处理方法的一个实施例的时序图;
图6为利用本申请提供的任务处理方法进行目标任务处理的流程示意图;
图7为利用本申请提供的任务处理方法实现任务机与协作机协作处理目标处理任务的示意图;
图8为本申请提供的任务处理方法的一个实施例的实现流程示意图;
图9为本申请提供的任务处理方法的一个实施例的时序图;
图10为用于实现本申请提供的任务处理方法的任务处理系统的结构示意图;
图11为用于实现本申请提供的任务处理方法的软件架构示意图;
图12为本申请提供的一种任务处理装置的组成结构示意图;
图13为本申请提供的一种计算机设备的硬件实体示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请的目的,不是旨在限制本申请。
为了更好地理解本申请实施例提供的任务处理方法,下面先对相关技术中采用的任务处理方案进行说明。
相关技术中,为了处理算力需求较大的任务,提出了以下几种技术方案:
方案一:在服务器上,采用NVLink通信方式,实现单服务器多个GPU的桥接,以完成对算力需求较大的任务处理。
但是,在端侧PC上使用NV-Link方式实现多个GPU的桥接,往往对端侧PC的显卡、主板及电源等硬件要求很高,实现较为困难。
同时,端侧PC上采用的统一计算设备架构(Compute Unified DeviceArchitecture,CUDA)及MDDA等规范,仅允许端侧PC访问本地GPU,没有直接提供对远程GPU的访问接口。这导致多台PC上的多个GPU资源无法相互协助,从而产生算力闲置。
方案二:建立端边云架构,端侧PC的计算任务可以由云端服务器和边缘服务器完成,从而解决了段PC算力有限的问题。
但是,利用端边云架构实现任务处理需要支付较高的云端费用,并且通过网络传输数据存在无法保证数据安全性的问题。
方案三:采用Docker容器技术,将应用程序及其依赖项打包到一个轻量级、可移植的容器中,从而将任务分发给多个计算机节点进行处理。
但是,Docker容器技术需要占用较大的资源量,并且,容器内不适合运行可视化以及需要与用户进行用户界面(User Interface,UI)交互的场景,因此,不适合部署在PC上。
基于此,本申请提供一种任务处理方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是笔记本电脑、平板电脑、台式计算机、智能电视、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。
图1为本申请提供的一种任务处理方法的实现流程示意图,如图1所示,该方法包括如下步骤S101至步骤S102:
步骤S101,响应于目标设备集群中的第一电子设备获得目标应用触发的目标处理任务,建立与从所述目标设备集群中确定的至少一第二电子设备之间的目标通信连接。
这里,目标设备集群是由多个电子设备组成的设备集群,其中,多个电子设备可以是由个人PC组成的设备集群,还可以是由部分PC设备与云端服务器设备组成的设备集群。
在一些实施例中,多个电子设备之间通过组建局域网的方式构建目标设备集群。
在一些实施例中,多个电子设备之间通过因特网等连接方式构建目标设备集群。
在一个实施例中,如图2所示,由电子设备210、电子设备220、电子设备230和电子设备240通过网络250彼此通信连接,以形成设备集群。该设备集群中,每一电子设备具有对应的中央处理器(Central Processing Unit,CPU)、图形处理器(graphics processingunit,GPU)和通信接口。
第一电子设备表征产生待处理的目标处理任务的设备,即,在一次任务处理中,第一电子设备为目标集群中产生目标处理任务的任务机。
第二电子设备表征利用配置的硬件处理资源如计算处理资源、图形渲染资源等、协助第一电子设备完成至少部分目标处理任务的设备,即,在一次任务处理中,第二电子设备为目标集群中协助执行任务的协作机。
目标应用为第一电子设备上运行的应用程序,其可以触发对应的目标处理任务。例如,当目标应用为绘图应用或游戏应用时,其触发的目标处理任务为图像渲染任务;当目标应用金融分析相关应用时,其触发的目标处理任务为科学计算任务。
在一些实施例中,目标处理任务为需要利用电子设备的GPU资源执行图像渲染或科学计算的任务。
目标通信连接,是指第一电子设备与至少一个第二电子设备之间建立的、用于传输目标处理任务的第一部分任务的通信连接。
这里,目标通信连接可以是第一电子设备与每一第二电子设备之间建立的网络连接或者线缆连接。
在一些实施例中,第一电子设备可以直接与每一第二电子设备建立目标通信连接。
在一些实施例中,第一电子设备可以基于目标设备集群中的主控设备的控制信息,与每一第二电子设备建立目标通信连接。
步骤S102,通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备,以使得所述第二电子设备处理所述第一部分任务;其中,所述第一部分任务是所述目标处理任务中除所述第一电子设备处理的第二部分任务之外的剩余任务,所述目标设备集群是由多个电子设备组成的资源集群。
这里,对目标处理任务进行分析和拆分,以获得第一部分任务和第二部分任务,其中,第一部分任务由第一电子设备利用本地硬件资源和/或软件资源进行处理,第二部分任务由至少一第二电子设备利用其配置的硬件资源和/或软件资源进行处理。
在一些实施例中,将目标处理任务拆分为第一部分任务和第二部分任务时,基于第一电子设备和至少一第二电子设备中的可用硬件资源和/或软件资源,分别确定第一部分任务的任务量和第二部分任务的任务量。
在一些实施例中,由第一电子设备确定第一部分任务的任务量和第二部分任务的任务量。
在一些实施例中,由目标设备集群中的主控设备确定第一部分任务的任务量和第二部分任务的任务量。
图3为利用本申请提供的任务处理方法实现第一电子设备与第二电子设备协作处理目标处理任务的示意图。
如图3所示,第一电子设备310中的目标应用311触发目标处理任务;目标处理任务被发送至任务处理部件312,以判断目标处理任务所需的处理能力(如计算量);在确定第一电子设备310的设备资源情况不能满足目标处理任务所需的计算量时,通过通信接口313将目标处理任务中的第一部分任务发送至第二电子设备320的通信接口321,并将目标处理任务中的第二部分任务传送至第一电子设备310的GPU 314进行处理;第二电子设备320接收到第一部分处理任务后,将第一部分处理任务传送至任务处理部件322,由任务处理部件322生成GPU驱动指令;将任务处理部件322生成的GPU驱动指令发送至GPU 323,以由GPU323执行第一部分处理任务。
本申请提供的任务处理方法中,第一电子设备将目标处理任务中的第一部分任务发送给目标设备集群中的至少一第二电子设备,以使至少一第二电子设备处理该第一部分任务。这样,利用远程电子设备的处理资源协助完成本机目标处理任务,在本地电子设备算力有限的情况下,仍然可以完成算力需求较大的待处理任务,而无需额外升级本地电子设备或支付云端计算的高额费用;利用多台电子设备同时完成目标处理任务,可以提高对目标处理任务的处理效率;对于大规模数据处理、深度学习训练等计算密集型任务,采用多个设备的计算资源并行和/或串行计算,可以显著提高任务处理的效率;另外,目标设备集群中的电子设备之间可以直接或通过主控设备建立连接,即,连接方式简单,因此,可以基于任务计算需求,动态扩展或调整目标设备集群中的电子设备,以提高目标设备集群的整体计算能力,而不需要重新设计目标设备集群系统架构。
在一些实施例中,目标设备集群中采用监听机制(Watch机制)监控集群中各电子设备之间的数据传输情况,即,当目标设备集群中发生数据传输变化时,会将该变化情况通知Watch机制中注册了监听的客户端,以实现数据的及时通知。
在一些实施例中,本申请提供的任务处理方法还包括以下步骤S103:
步骤S103:向第三电子设备发送任务处理请求,以通过所述第三电子设备确定能够处理所述任务处理请求的至少一第二电子设备;
其中,所述第三电子设备是从目标设备集群中确定的设备。
这里,第三电子设备表征目标设备集群中用于执行资源分配的电子设备,即,第三设备为主控设备。
在一些实施例中,目标设备集群中的每一电子设备向第三电子设备发送本机信息及设备资源情况,所述设备资源情况包括设备资源配置情况和设备资源使用情况,以使第三电子设备可以基于目标设备集群中每一电子设备的设备资源情况确定至少一第二电子设备。例如,目标设备集群中的每一电子设备将本地的Mac地址(Media Access ControlAddress,Mac地址)信息、IP地址(Internet Protocol Address,IP地址)信息、硬件配置信息、GPU资源情况,等等,发送至第三电子设备。
在一些实施例中,第三电子设备可以是目标设备集群中除第一电子设备之外的其他电子设备中的一个电子设备。
在第三电子设备为目标设备集群中的一个电子设备的情况下,可以通过预定的选举机制从目标设备集群中确定第三电子设备。在一些实施例中,将目标设备集群中设备资源使用最少的一个电子设备确定为第三电子设备。在一些实施例中,将目标设备集群中GPU算力最弱或最强的设备作为第三电子设备。
如图4所示,在一个由5个客户端(电子设备)通过组建局域网构成的目标设备集群中,每一客户端(电子设备)分别对应于软件层中的从设备(协作机)或主设备(即,第三电子设备)。例如,客户端410与软件层中的主设备430对应;客户端420与软件层中的从设备440对应。
在上述实施例中,通过选举机制选举主设备时,每一客户端通过发送UDP广播的方式在局域网内广播本机的资源使用情况,从而选举出资源闲置较多的客户端,即,客户端410,并且每一客户端在本机中将客户端410标识为主设备。
下面结合图5,对利用本申请提供的任务处理方法进行任务处理的一个实施例的处理时序进行详细说明。
如图5所示,第一电子设备510收到目标应用触发的目标处理任务后,向第三电子设备530发送任务处理请求;
第三电子设备530收到第一电子设备510发送的任务处理请求后,从目标设备集群中确定至少一第二电子设备520,向第一电子设备510下发任务,该任务用于向第一电子设备510指示每一第二电子设备520;同时,向每一第二电子设备520下发任务,该任务用于向对应的第二电子设备520指示需要协作处理的目标处理任务对应的任务机(即,第一电子设备510);
第一电子设备510基于第三电子设备530分配的至少一第二电子设备的设备资源情况,向第二电子设备520发送第一部分任务;
第二电子设备520收到第一部分任务后,利用本机的设备资源对第一部分任务进行处理,得到第一部分任务的处理结果,并将该处理结果返回至第一电子设备510;
第一电子设备510收到第一部分任务的处理结果后,向第三电子设备530发送任务结束信息;
第三电子设备530收到任务结束信息后,将任务结束信息发送至每一第二电子设备520;
第一电子设备510断开与每一第二电子设备520的通信连接。
上述实施例中,以分布式应用模式,建立包括多个电子设备的目标设备集群,来满足多个电子设备之间的交流通信;将第三电子设备作为GPU资源的综合调度平台,可以实现对目标设备集群内电子设备的GPU资源情况的动态监测和管理,从而在目标设备集群内实现了GPU资源的高效利用,且可以避免单个电子设备故障对整个目标设备集群的影响;同时,第三电子设备可以根据不同目标处理任务的计算需求动态分配和调整目标设备集群内多个电子设备的GPU资源,在一个目标处理任务完成后,可以将相同的GPU资源分配给下一个目标处理任务,从而避免算力闲置。
在一些实施例中,上述步骤S103中的通过所述第三电子设备确定能够处理所述任务处理请求的至少一第二电子设备,可以通过以下步骤S1031至步骤S1033中的至少之一实现:
步骤S1031,如果所述任务处理请求中携带有目标标识信息、且所述目标标识信息与所述目标设备集群中的至少一电子设备的标识信息相匹配,将与所述目标标识信息匹配的电子设备确定为所述第二电子设备。
这里,目标标识信息是指目标电子设备或目标GPU资源的标识信息。目标电子设备或目标GPU资源是第一电子设备指定的用于处理目标处理任务的第一部分任务的至少一电子设备或GPU资源。
在一些实施例中,目标标识信息可以包括目标电子设备的Mac地址信息、设备名称信息及其他标识信息中的至少一个。
在一些实施例中,第一部分任务中包括第一子任务,该第一子任务与指定的电子设备或GPU资源绑定。例如,可以预先确定处理第一子任务效率最高的电子设备,并将该电子设备与第一子任务绑定。这样,当目标处理任务包含第一子任务时,第一电子设备向第三电子设备发送的任务处理请求中可以携带所述指定的电子设备或GPU资源的目标标识信息,以告知第三电子设备所需的资源情况。
这样,当目标标识信息与目标设备集群中的至少一电子设备的标识信息相匹配时,第三电子设备基于该目标标识信息及第三电子设备存储的目标设备集群中的电子设备信息,可以确定目标标识信息对应的至少一电子设备,并将目标标识信息指向的至少一电子设备确定为第二电子设备,以提高任务处理效率。
步骤S1032,如果所述任务处理请求中携带有目标标识信息、但所述目标标识信息无法在所述目标设备集群中匹配到,基于所述任务处理请求和所述目标设备集群中的各电子设备的设备资源情况确定能够处理所述任务处理请求的至少一第二电子设备。
本实施例中,第三电子设备基于目标标识信息及第三电子设备存储的目标设备集群中的电子设备信息,确定目标标识信息对应的电子设备或GPU资源没有加入目标设备集群。
这里,第一电子设备发送到第三电子设备的任务处理请求可以包含处理目标处理任务所需的任务总量,如计算总量,以使第三电子设备基于该计算总量确定第一电子设备所需的协作机。这里,完成所述目标处理任务所需的计算总量,是第一电子设备基于其本身的计算资源确定的。
在一些实施例中,目标设备集群中的各电子设备的设备资源情况,可以包括各电子设备的硬件配置情况、设备资源总量以及已使用资源情况等信息。
在一些实施例中,在目标设备集群运行期间,每一电子设备周期性地向第三电子设备发送本机的设备资源情况,以使第三设备可以及时获得各电子设备中的可用资源情况。
在一些实施例中,第三电子设备为目标设备集群中各电子设备的设备资源使用量设置对应的资源阈值,当第三电子设备基于各电子设备的设备资源情况,确定特定电子设备的资源使用量超过对应的资源阈值时,第三电子设备在确定第二电子设备时将该电子设备排除在外。
这样,第三电子设备在资源使用量不超过其对应的资源阈值的电子设备中,确定至少一个第二电子设备。
在一些实施例中,第三电子设备还基于实现目标处理任务的最高处理效率的目的,从目标设备集群中确定至少一第二电子设备。这样,第三设备基于目标设备集群中各电子设备的计算能力,从各电子设备中确定处理目标处理任务效率最高的电子设备组合,以作为至少一第二电子设备。
步骤S1033,如果所述任务处理请求中未携带目标标识信息,基于所述任务处理请求和所述目标设备集群中的各电子设备的设备资源情况确定能够处理所述任务处理请求的至少一第二电子设备。
这里,任务处理请求中未携带目标标识信息的情况下,第三电子设备不再判断目标设备集群中各电子设备的标识信息是否与目标标识信息相同,而是基于任务处理请求和各电子设备的设备资源情况确定至少一第二电子设备。
同样地,第三电子设备可以基于各电子设备的资源使用量是否超过阈值以及各电子设备的计算能力,来确定至少一第二电子设备。具体可参见对步骤S1032的说明,此处不再赘述。
在一些实施例中,所述通过所述目标通信连接将所述目标处理任务的第一部分任务发送给第二电子设备,以使得所述第二电子设备处理所述第一部分任务(即,上述步骤S102),可以实现为以下步骤S1021至步骤S1022中的至少之一:
步骤S1021,在所述第二电子设备唯一的情况下,将所述第一部分任务直接发送给该唯一的第二电子设备,以使得该唯一的第二电子设备和所述第一电子设备并行或串行处理所述目标处理任务。
这里,在第三电子设备为第一电子设备分配唯一一个第二电子设备的情况下,第一电子设备直接将第一部分任务发送给该一个第二电子设备。
在一些实施例中,第一电子设备基于本机的硬件配置和计算资源情况,从目标处理任务中确定由本机处理的第二部分任务,并将目标处理任务中除第二部分任务之外的部分确定为第一部分任务。
在一些实施例中,可以由第一电子设备与第二电子设备对目标处理任务进行并行处理;第二电子设备完成第一部分任务的处理之后,将第一部分任务的处理结果返回至第一电子设备;由第一电子设备对第二部分任务的处理结果和第一部分任务的处理结果进行合并处理。
在一些实施例中,可以由第一电子设备与第二电子设备对目标处理任务进行串行处理,即,先由第一电子设备或第二电子设备处理其对应的部分任务,然后将处理结果发送给另一电子设备,以使另一电子设备利用该处理结果执行其对应的部分任务。在此,对第一电子设备和第二电子设备进行串行处理时的执行顺序不做限定。
在一些实施例中,第一部分任务包括多个子任务,第二部分任务包括多个子任务,因此,利用第一电子设备和第二电子设备对第一部分任务和第二部分任务进行处理时,可以对其中的部分子任务由第一电子设备和第二电子设备串行处理,部分子任务由第一电子设备和第二电子设备进行并行处理。具体的处理顺序,可以基于多个子任务的逻辑关系进行确定,在此不做限定。
步骤S1022,在所述第二电子设备不唯一的情况下,基于各第二电子设备的设备资源情况将所述第一部分任务的各个子任务发送给对应的第二电子设备,以使得不唯一的第二电子设备和所述第一电子设备并行或串行处理对应的处理任务。
这里,在第三电子设备为第一电子设备分配的第二电子设备不唯一的情况下,基于各第二电子设备的设备资源情况,将第一部分任务拆分为多个子任务分别发送给对应的第二电子设备。
在一些实施例中,第三电子设备将多个第二电子设备的信息发送给第一电子设备时,同时将每一第二电子设备的硬件配置和可用资源情况发送给第一电子设备;第一电子设备基于每一第二电子设备的硬件配置和可用资源情况,将第二部分任务拆分为多个子任务,并将多个子任务分配给对应的第二电子设备进行处理。
在一些实施例中,第三电子设备基于第一电子设备发送的任务处理请求中的目标处理任务所需的计算量,为第一电子设备确定多个第二电子设备,同时基于第一电子设备、每一第二电子设备的硬件配置和可用资源情况,将目标处理任务拆分为第二部分任务和第一部分任务,并将第一部分任务拆分为与每一第二电子设备对应的多个子任务;之后,第三电子设备将多个第二电子设备的信息、对目标处理任务的拆分信息以及第一部分任务的多个子任务与各第二电子设备的对应情况,发送给第一电子设备,以使第一电子设备基于第三电子设备的控制对目标处理任务进行拆分和分发。
在一些实施例中,所述多个第二电子设备和所述第一电子设备并行或串行处理对应的处理任务的方式可以参考上文关于步骤S1021的说明,此处不再赘述。
在一些实施例中,本申请提供的任务处理方法还包括以下步骤S104和/或步骤S105:
步骤S104,对所述第二电子设备反馈的对所述第一部分任务的处理结果和自身对所述第二部分任务的处理结果进行整合处理后反馈至所述目标应用。
这里,至少一第二电子设备完成第一部分任务的处理后,将第一部分任务的处理结果返回至第一电子设备。
第一电子设备基于第一部分和第二部分任务的逻辑关系,对本地处理的第二部分任务的处理结果和从至少一个第二电子设备接收的第一部分任务的处理结果进行整合,得到目标处理任务的处理结果,并将该目标处理任务的处理结果反馈至目标应用。
步骤S105,通过第三电子设备将任务完成通知发送给所述第二电子设备,以断开与所述第二电子设备之间的所述目标通信连接。
这里,在第一电子设备收到至少一第二电子设备反馈的第一部分任务的处理结果之后,第一电子设备将任务完成通知发送至第三电子设备。进而,由第三电子设备将任务完成通知发送至各第二电子设备,以断开第一电子设备与各第二电子设备之间的目标通信连接。
在一些实施例中,本申请提供的任务处理方法中通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备(即,上述步骤S102)之前,还包括以下步骤S106:
步骤S106:拦截所述目标应用通过第一图形库接口对第一电子设备的图形处理器的调用请求,并基于所述第一电子设备的设备资源情况将所述目标处理任务分为第一部分任务和第二部分任务。
这里,图形库接口(Graphics Application Programming Interface,图形库API)是预先生成的用于调用电子设备硬件资源(即,图像处理器资源或GPU资源)的接口文件,其通常以函数的形式存在供用户调用。在一些实施例中,图像库接口包括CUDA、DirectX(Direct EXtension X,DX)、开放图形库(Open Graphics Library,OpenGL)、开放运算语言库(Open Computing Language,OpenCL)等等。
上述实施例中,通过拦截目标应用通过第一图形接口对本地GPU资源的调用请求,获取目标处理任务并计算目标处理任务所需的计算量信息。
在一些实施例中,可以利用Hook机制,对应用程序通过第一图形接口调用本地GPU资源的事件进行Hook,一旦发生该事件,即将该事件通知用于执行本申请的任务处理方法的程序,以抓取该调用请求。例如,第一电子设备采用Hook机制对目标应用调用CUDA的API进行拦截。
这里,利用Hook机制进行拦截的流程如下:
首先,分析目标函数。在实施Hook拦截之前,详细分析目标图形库中的目标函数(包括各种进程参数、函数,以及驱动层函数)的工作原理和使用场景,确定目标数据的输入、输出、调用顺序和依赖关系,以确保Hook操作不会破坏原有逻辑;
其次,执行代码注入。这里,分析目标函数后,将Hook处理函数注入到目标进程(例如,WDDM的图形渲染程序);
再次,函数拦截。Hook处理函数需要拦截目标进程中的特定函数调用,修改目标函数的入口点,使其指向Hook处理函数。在WDDM渲染驱动程序中,这些函数是与图形渲染、窗口管理等相关的函数;
复次,处理与转发。当目标函数被调用时,控制权会转移到Hook处理函数。Hook处理函数可以对拦截到的函数调用执行自定义操作,例如修改参数、记录日志或执行其他操作。然后,Hook处理函数会调用原始目标函数,并将结果返回给调用者;
最后,恢复原状。Hook处理函数需要在完成拦截操作后恢复目标函数的原始入口点,以避免影响目标进程的正常运行。
另外,针对Hook机制执行以下调优事项:
首先,关于错误处理和资源管理。在Hook处理函数中,正确处理可能出现的错误,并确保资源(如内存、文件句柄等)得到妥善管理。避免内存泄漏、句柄泄漏等问题,以降低引发崩溃的风险。
其次,适度同步和线程安全。如果Hook操作涉及多线程,需要确保Hook处理函数是线程安全的。在必要时使用同步机制(如互斥锁、信号量等),但要避免过度同步,以免导致性能下降或死锁。
再次,关于测试和验证。在实施Hook操作之前,充分测试Hook处理函数在各种场景下的行为。验证Hook操作不会导致目标程序和系统崩溃,确保其兼容性和稳定性。
最后,关于监控和调试。在实施Hook操作之后,持续监控其运行情况。记录关键事件和性能指标,以便在发生问题时进行调试和优化。
在一些实施例中,第一电子设备通过图像处理器监视程序实时监控本地GPU资源使用情况。
这样,第一电子设备可以基于本地GPU资源使用情况与目标处理任务所需的计算量,判断本地可用GPU资源无法满足目标处理任务所需的计算量,进而对目标应用对第一图形库的调用请求(即,目标处理任务)进行拆分,得到第一部分任务和第二部分任务,其中,第二部分任务是利用第一电子设备的本地GPU资源进行处理的。
在一些实施例中,上述步骤S106中的拦截所述目标应用通过第一图形库接口对第一电子设备的图形处理器的调用请求,可以通过以下步骤S1061实现:
步骤S1061,拦截所述目标应用在第一图形库接口之后通过图形驱动程序模型的用户模式向其内核模式发送的调用请求。
这里,图形驱动程序模型是一种用来控制图形硬件的软件,可以运行在用户模式和内核模式。
用户模式主要负责处理图形库接口调用,将这些调用请求转换为用于控制GPU驱动程序的GPU命令;内核模式主要负责与操作系统内核交互,管理GPU资源和调度GPU任务。
目标应用在第一图形库接口之后通过图形驱动程序模块的用户模式向内核模式发送的调用请求,是指目标应用在用户模式下调用第一图形库接口之后,第一图形库接口基于目标应用的调用请求向内核模式发送的针对GPU硬件驱动的调用请求。
在一些实施例中,可以利用Hook机制对该调用请求进行拦截。
之后,第一电子设备将拦截的针对GPU硬件驱动的调用请求作为目标处理任务,并基于本地的硬件配置和资源使用情况,将该调用请求拆分为第一部分调用请求(对应于第一部分任务)和第二部分调用请求(对应于第二部分任务)。
对应地,上述通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备(即,上述步骤S102)可以实现为以下步骤S1023:
步骤S1023,将所述第一部分任务通过编码处理后发送给所述第二电子设备,将所述第二部分任务传递给所述第一电子设备的图形处理器驱动层进行后续处理。
这里,对第一部分任务进行编译处理后,通过目标通信连接发送给至少一第二电子设备,以利用各第二电子设备上的计算资源对第一部分任务进行处理。
同时,利用原始GPU硬件资源调用链,将第二部分任务传递给第一电子设备本地GPU驱动层,以利用本地GPU硬件资源进行处理。
如图6所示,在图像驱动模型为微软图形驱动模型(Windows Display DriverModel,WDDM)的场景中,利用上述实施例提供的任务处理方法进行目标任务处理的流程如下:
任务机600中,上层应用610向Direct3D 620发出接口调用请求;
这里,在Direct3D 620图形库与内核模式之间增加中间层,用于拦截调用请求数据640,并将调用请求数据640拆分为第一调用请求数据641(对应于第二部分任务)和第二调用请求数据642(对应于第一部分任务);
将第一调用请求数据传641传递至本地的DirectX图像内核660,并进一步通过本地显示驱动670、利用本地GPU资源进行任务处理;
将第二调用请求数据642发送给编解码适配器680进行编码;
编解码适配器680编码后,通过通信接口将编码后的第二调用请求数据642发送至协作机6100端的编解码适配器690;
利用编解码适配器690解码后,将解码后的第二调用请求数据642发送至协作机6100的本地GPU 6110进行任务处理,以得到第二调用请求数据642的处理结果;
协作机6100将第二调用请求数据642的处理结果发送至编解码适配器690进行编码,并将编码后的第二调用请求数据的处理结果发送至任务机端的编解码适配器680进行解码,得到第二处理结果数据652;
从本地的显示驱动670获取第一调用请求数据641对应的第一处理结果数据651;
将第一处理结果数据651与第二处理结果数据652进行合并,得到处理结果数据650;
将处理结果数据650通过Direct3D 620返回至上层应用610。
在一些实施例中,本申请提供的任务处理方法中通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备(即,上述步骤S102)之前,还包括以下步骤S107:
步骤S107,通过第二图形库接口拦截所述目标应用对第一图形库接口的调用请求,并基于所述第一电子设备的设备资源情况和所述目标设备集群中其他电子设备的设备资源情况将所述调用请求拆分成第一调用请求和至少一第二调用请求,以将所述第一调用请求发送给所述第一图形库接口、将所述至少一第二调用请求发送给确定的至少一第二电子设备的第三图形库接口。
这里,第二图形库接口是与第一图形库接口相同的、可以被目标应用调用的图形库接口。
在一些实施例中,可以利用第三方服务提供的图形库接口头文件声明,自定义第二图形库接口。
这里,当目标应用调用第一图形库接口时,利用第二图形库接口对目标应用的调用请求进行拦截,相当于目标应用先调用了第二图形库接口。
这样,对第二图形库接口拦截的目标应用的调用请求进行分析,以确定目标应用的目标处理任务所需的计算量,进而基于第一电子设备的硬件配置和资源使用情况,确定第一电子设备的设备资源不满足目标处理任务的算力需求。之后,第一电子设备基于本地设备资源情况和目标设备集群中其他电子设备的设备资源情况(即,硬件配置和可用资源情况)将目标应用的调用请求(即,目标处理任务)拆分成第一调用请求(即,第二部分任务)和至少一第二调用请求(即,第一部分任务),并将每一第二调用请求发送给对应的第二电子设备的第三图像库接口。
这里,第二电子设备的第三图形库接口可以是与第一图形库接口相似的图形库接口,以便第三图形库接口可以正确处理第二调用请求。
在一些实施例中,第一电子设备和各第二电子设备内均设置有硬件资源监控应用。硬件资源监控应用用于监控对应的电子设备中的硬件资源使用情况。
在一些实施例中,第一电子设备可以周期性第从各第二电子设备接收对应的硬件资源使用信息,以基于各第二电子设备对应的硬件资源使用信息,确定为各第二电子设备分配的第二调用请求。
在一些实施例中,第一电子设备和各第二电子设备将分别将各自对应的硬件资源使用信息周期性地发送至目标设备集群中的主控设备,以使主控设备基于各电子设备对应的硬件资源使用信息确定为各电子设备分配的调用请求。
下面结合图7,对上述任务处理方案的一个应用实施例进行详细说明。
如图7所示,首先,任务机710中的上层应用711触发目标处理任务,向OpenCL拦截库712发出调用请求。
这里,OpenCL拦截库712是利用第三方服务提供的OpenCL API头文件声明,自定义API接口逻辑形成的图形库。使用时,将OpenCL拦截库712接入服务发现子系统,以替换操作系统中的OpenCL原始库714,并支持第三方应用程序对OpenCL拦截库712的调用。这里,在操作系统中,将OpenCL原始库714文件重命名为OpenCL_raw.dll。因此,这里上层应用711调用OpenCL原始库714时,上层应用711的调用请求被OpenCL拦截库712拦截。
然后,OpenCL拦截库712将拦截的调用请求发送至OpenCL执行代理713,由OpenCL指定代理713基于任务机710的设备资源情况和目标设备集群中其他电子设备的设备资源情况,对拦截的调用请求进行拆分,即,拆分为第一调用请求和至少一第二调用请求。
之后,OpenCL执行代理713将第一调用请求发送至任务机的OpenCL原始库714,以通过OpenCL原始库714向本地GPU驱动发送GPU指令,以利用本地计算资源对第一调用请求进行处理,得到第一调用请求的处理结果;
同时,OpenCL执行代理713将第二调用请求发送至对应的协作机720的OpenCL执行代理721;
协作机720的OpenCL执行代理721将第二调用请求发送至本地的OpenCL原始库722,以通过OpenCL原始库722向本地GPU驱动发送GPU指令,利用本地计算资源对第二调用请求进行处理,得到第二调用请求的处理结果;
协作机720的,OpenCL执行代理721将第二调用请求的处理结果返回至任务机710的OpenCL执行代理713,同时任务机710的OpenCL执行代理713从本地OpenCL原始库714获得第一调用请求的处理结果,并将第一调用请求的处理结果和至少一第二调用请求的处理结果进行合并、返回至上层应用711。
在一些实施例中,本申请提供的任务处理方法中通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备(即,上述步骤S102)之前,还包括以下步骤S108:
步骤S108,通过第二图形库接口拦截所述目标应用对第一图形库接口的调用请求,并基于所述目标设备集群的设备资源情况将所述调用请求拆分成至少一第二调用请求,以将所述至少一第二调用请求发送给确定的至少一第二电子设备的第三图形库接口。
这里,关于第一图形库接口、第二图形库接口和第三图形库接口的说明,可以参见上文步骤S107中对第一图形库接口、第二图形库接口和第三图形库接口的说明,此处不再赘述。
在本实施例中,第一电子设备拦截目标应用的调用请求后,仅基于目标设备集群中的设备资源情况将调用请求拆分为至少一第二调用请求(对应于第一部分任务),并将各第二调用请求分别发送给对应的第二电子设备的第三图形库接口,即,第一电子设备仅作为任务机发出任务,而不执行任务处理。
在一实施例中,第一电子设备拦截目标应用的调用请求后,将调用请求及所需的计算量发送个目标设备集群中的主控设备;主控设备基于目标设备集群中各电子设备的设备资源情况,从目标设备集群中确定至少一第二电子设备;基于各第二电子设备的设备资源情况,将从第一电子设备接收的调用请求拆分为至少一第二调用请求;之后,将每一第二调用请求发送至对应的第二电子设备。
下面结合8,对利用本申请提供的任务处理方法进行目标任务处理的一个实施例进行详细说明,其中,任务机为第一电子设备,协作机为第二电子设备。如图8所示,该实施例可以通过以下步骤S801至步骤S807实现:
步骤S801,拦截上层应用调用CUDA的API的调用请求;之后,执行步骤S802;
步骤S802,基于调用CUDA的API的调用请求确定目标处理任务,并将目标处理任务拆分为第一部分任务和第二部分任务;之后,执行步骤S803和步骤S804;
步骤S803,将第一部分任务通过网络传输至协作机,以由协作机处理第一部分任务,得到第一部分任务的处理结果;之后,执行步骤S805;
步骤S804,将第二部分任务传递至本机GPU驱动层,以利用本机GPU资源进行处理,得到第二部分任务的处理结果;执行,执行步骤S806;
步骤S805,从协作机接收第一部分任务的处理结果;之后,执行步骤S806;
步骤S806,将第一部分任务的处理结果与第二部分任务的处理结果进行合并,得到目标处理任务的处理结果;之后,执行步骤S807;
步骤S807,将目标处理任务的处理结果返回至上层应用。
下面结合图9,对上述实施例对应的时序关系图进行说明。在图9所示的时序关系图中,任务机为第一电子设备,协作机为第二电子设备,上层应用为运行在任务机上的应用程序,任务机GPU为任务机的本地GPU资源,任务机程序为任务机上用于执行本申请提供的任务处理方法的应用程序,协作机程序为协作机上运行的用于执行本申请提供的任务处理方法的应用程序,协作机GPU为协作机的本地GPU资源。
如图9所示,上层应用910向CUDA发出接口调用请求;
任务机程序920拦截上层应用910的CUDA接口调用请求,并将该调用请求拆分为第一调用请求和第二调用请求;
任务机程序920将第一调用请求发送给任务机GPU 930,以利用任务机的本地GPU资源进行处理;
任务机程序920将第一调用请求发送给协作机程序940;
协作机程序940将第二调用请求发送给协作机GPU 950,以利用协作机GPU进行任务处理;
协作机GPU 950将针对第二调用请求的处理结果返回至协作机程序940;
协作机程序940将针对第一调用请求的处理结果返回至任务机程序920;
任务机GPU 930将针对第一调用请求的处理结果返回至任务机程序920;
任务机程序920将针对第一调用请求的处理结果与针对第一调用请求的处理结果进行合并处理,并将合并处理的结果返回至上层应用910。
下面,结合图10对用于实现本申请提供的任务处理方法的任务处理系统进行详细说明。
如图10所示,任务机1001中的算力执行代理模块1007接入服务发现应用1011后,可以拦截上层应用1006的调用请求,结合算力调度器应用1013,根据算力资源中心应用1012中存储的任务机1001的设备资源情况和至少一个协作机1017的设备资源情况,确定将该调用请求拆分为第一调用请求和第二调用请求,其中,第一调用请求用于发送给OpenCL原始库1002,第二调用请求通过通信接口1015发送到协作机1017;
OpenCL原始库1002用于接收算力执行代理模块1007发送的第一调用请求,并利用第一GPU设备1003、第二GPU设备1004和第三GPU设备1004的GPU资源对第一调用请求进行处理,得到第一调用请求的处理结果。
第一GPU监视应用1008、第二GPU监视应用1009和第三GPU监视应用1010,分别用于监视第一GPU设备1003、第二GPU设备1004和第三GPU设备1004的算力资源情况,并周期性地将第一GPU设备1003、第二GPU设备1004和第三GPU设备1004的算力资源情况发送至算力资源中心应用1012。
算力资源中心应用1012用于监视第一GPU设备1003、第二GPU设备1004和第三GPU设备1004的算力资源情况,并在算力调度器应用1013请求获取算力资源情况时,将算力资源情况发送至算力调度器应用1013。
服务发现应用1011用于管理接入的服务,当存在上层应用请求服务时,能够快速地建立上层应用于相关服务的连接。
本地文本日志应用1014能够快速接入服务发现应用1011,实现文本日志数据记录和存储。本地文本日志应用1014还可以实现超期日志的自动覆盖。
协作机1017可以通过网络1016和通信接口1024从任务机1001接收对应的第二调用请求。
协作机1017中的算力执行代理模块1020从通信接口1024接收第二调用请求,并进一步调用协作机1017中的OpenCL原始库1025。
协作机1017中的OpenCL原始库1025可以调用协作机1017中与任务机1001相同的GPU资源,例如,第四GPU设备1018或第五GPU设备1019,以对第二调用请求进行处理,得到第二调用请求的处理结果。
协作机1017中的第四GPU监视应用1021用于监视第四GPU设备1018和第五GPU设备1019的算力资源情况。
协作机1017中的本地文本日志应用1023能够快速接入服务发现应用1022,实现文本日志数据记录的存储。本地文本日志应用1023还可以实现超期日志的自动覆盖。
上述任务处理方法的任务处理系统可以用于实现上述方法实施例描述的方法,对于本申请任务处理系统实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
下面,参照图11,对基于上述任务处理方法及系统的软件架构进行详细说明。
如图11所示,在该软件架构的应用服务1100包括,包括客户端应用1101和服务端应用1102。
这里,客户端应用1101用于装载在客户机上,其可以获取服务端算力资源情况、本地算力资源情况、调度本地算力资源请求、向服务端发送算力协作请求一级从服务端接收回传数据,等等。客户端应用1101可以快速接入服务发现应用1104,在客户端建立和维护与服务端的TCP会话连接,以及转发算力资源调度请求、应答结果和服务端算力资源占用率监视结果等数据。
服务端应用1102用于端在在服务机上,其可以订阅本地算力资源情况、协助客户端执行任务并返回执行结果给客户端,等等。服务端应用1102,可以快速接入服务发现应用1104,管理连接到服务端的所有客户端TCP会话,以及转发算力资源调度请求、应答结果和云端算力资源占用率监视结果等数据。
在服务发现模块1103中,包括服务发现应用1104。当客户端或服务端的各项服务接入服务发现应用1104后,即可被上层应用发现。
这里,服务发现应用1104可以快速转发各模块间消息通信数据,并在服务发现应用的生命周期内持久化管理各在线模块的标识和注册时间戳,支持在线模块的查询等。
算力调度模块1105包括算力资源中心应用1106、算力调度器应用1107、算力执行代理模块1108。
算力资源中心应用1106用于从算力监视模块1109订阅本地和服务端设备的算力资源情况,并将不同时间戳的原数据进行同步、封装并发布到客户端应用。
算力调度器应用1107用于创建快速数据转发、消费、发布和订阅模型,使不同应用按照其业务功能需求灵活构建模型,满足应用间快速的数据交互以及数据传输的负载均衡;算力调度器应用1107可以基于本地算力资源情况和服务端算力资源情况对上层应用的调用请求进行拆分。
算力执行代理模块1108,能够快速接入服务发现应用1104,以在服务发现应用1104运行期间接收上层应用的算力资源调用请求,按照本地计算资源优先于服务端计算资源及各类GPU设备的使用优先级进行资源调度,并应答调度结果。
算力监视模块1109,包括第一GPU监视应用1110、第二GPU监视应用1111和第三GPU监视应用1112。
这里,算力监视模块1109,可以快速接入服务发现应用1104,在服务发现应用1104运行期间自动检测当前物理/虚拟计算机上所有GPU设备的算力资源情况和显存占用率,并对算力资源情况和占用率数据进行封装和发布。
第一GPU监视应用1110、第二GPU监视应用1111和第三GPU监视应用1112,分别用于监视对应的GPU设备的算力资源情况,并周期性地将GPU设备的算力资源情况发送至算力资源中心应用1106。
工具模块1113,包括数据分发模块1114、文本日志记录模块1115、数据发布模块1116、TCP异步IO客户端模块1117、数据订阅模块1118和TCP异步IO服务器模块1119,分别用于执行的数据分发、文本日志记录、数据发布及订阅等功能。
其中,TCP异步IO客户端模块1117和TCP异步IO服务器模块1119,用于创建异步IO通信的监听器、连接器、发送器、接收器和TCP会话模型,使不同应用按照其业务功能需求灵活构建模型,满足应用程序间快速的数据交互。
在数据层,数据处理模块1120包括数据组包/拆包模块1121、非结构化数据封装模块1122、非结构化数据解析模块1123、结构化数据转换模块1124。
数据存储模块1125包括本地文本日志应用1126。
在操作系统层,操作系统(OS)接口1127包括第一图形库接口1128、第二图形库接口1129、第三图形库接口1130、第四图形库接口1131。
在设备层,包括物理GPU1132和虚拟GPU1133。
基于前述的实施例,本申请实施例提供一种任务处理装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(Central ProcessingUnit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(Digital SignalProcessor,DSP)或现场可编程门阵列(Field Programmable Gate Array,FPGA)等。
图12为本申请实施例提供的一种任务处理装置的组成结构示意图,如图12所示,任务处理装置1200包括:通信建立模块1210和数据发送模块1220,其中:
通信建立模块1210,用于响应于目标设备集群中的第一电子设备获得目标应用触发的目标处理任务,建立与从所述目标设备集群中确定的至少一第二电子设备之间的目标通信连接;
数据发送模块1220,用于通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备,以使得所述第二电子设备处理所述第一部分任务;
其中,所述第一部分任务是所述目标处理任务中除所述第一电子设备处理的第二部分任务之外的剩余任务,所述目标设备集群是由多个电子设备组成的资源集群。
在一些实施例中,数据发送模块1220,还用于:
向第三电子设备发送任务处理请求,以通过所述第三电子设备确定能够处理所述任务处理请求的至少一第二电子设备;
其中,所述第三电子设备是从目标设备集群中确定的设备。
在一些实施例中,数据发送模块1220,还用于执行以下至少之一:
如果所述任务处理请求中携带有目标标识信息、且所述目标标识信息与所述目标设备集群中的至少一电子设备的标识信息相匹配,将与所述目标标识信息匹配的电子设备确定为所述第二电子设备;
如果所述任务处理请求中携带有目标标识信息、但所述目标标识信息无法在所述目标设备集群中匹配到,基于所述任务处理请求和所述目标设备集群中的各电子设备的设备资源情况确定能够处理所述任务处理请求的至少一第二电子设备;
如果所述任务处理请求中未携带目标标识信息,基于所述任务处理请求和所述目标设备集群中的各电子设备的设备资源情况确定能够处理所述任务处理请求的至少一第二电子设备。
在一些实施例中,数据发送模块1220,还用于执行以下至少之一:
在所述至少一个第二电子设备包括一个第二电子设备的情况下,将所述第一部分任务直接发送给所述一个第二电子设备,以使得所述一个第二电子设备和所述第一电子设备并行或串行处理所述目标处理任务;
在所述至少一个第二电子设备包括多个第二电子设备的情况下,基于各第二电子设备的设备资源情况将所述第一部分任务的各个子任务发送给对应的第二电子设备,以使得所述多个第二电子设备和所述第一电子设备并行或串行处理对应的处理任务。
在一些实施例中,所述任务处理装置1200还包括:
反馈模块1230,用于对所述第二电子设备反馈的对所述第一部分任务的处理结果和自身对所述第二部分任务的处理结果进行整合处理后反馈至所述目标应用;且/或,
所述通信建立模块1210,还用于通过第三电子设备将任务完成通知发送给所述第二电子设备,以断开与所述第二电子设备之间的所述目标通信连接。
在一些实施例中,所述任务处理装置1200还包括:
拦截模块1240,用于拦截所述目标应用通过第一图形库接口对第一电子设备的图形处理器的调用请求,并基于所述第一电子设备的设备资源情况将所述目标处理任务分为第一部分任务和第二部分任务。
在一些实施例中,所述拦截模块1240,还用于:
拦截所述目标应用在第一图形库接口之后通过图形驱动程序模型的用户模式向其内核模式发送的调用请求;
对应地,所述数据发送模块1220,用于将所述第一部分任务通过编码处理后发送给所述第二电子设备,将所述第二部分任务传递给所述第一电子设备的图形处理器驱动层进行后续处理。
在一些实施例中,所述拦截模块1240,还用于:
通过第二图形库接口拦截所述目标应用对第一图形库接口的调用请求,并基于所述第一电子设备的设备资源情况和所述目标设备集群中其他电子设备的设备资源情况将所述调用请求拆分成第一调用请求和至少一第二调用请求,以将所述第一调用请求发送给所述第一图形库接口、将所述至少一第二调用请求发送给确定的至少一第二电子设备的第三图形库接口。
在一些实施例中,所述拦截模块1240,还用于:
通过第二图形库接口拦截所述目标应用对第一图形库接口的调用请求,并基于所述目标设备集群的设备资源情况将所述调用请求拆分成至少一第二调用请求,以将所述至少一第二调用请求发送给确定的至少一第二电子设备的第三图形库接口。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的任务处理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
本申请实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,图13为本申请实施例中计算机设备的一种硬件实体示意图,如图13所示,该计算机设备1300的硬件实体包括:处理器1301、通信接口1302和存储器1303,其中:
处理器1301通常控制计算机设备1300的总体操作。
通信接口1302可以使计算机设备通过网络与其他终端或服务器通信。
存储器1303配置为存储由处理器1301可执行的指令和应用,还可以缓存待处理器1301以及计算机设备1300中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。处理器1301、通信接口1302和存储器1303之间可以通过总线1304进行数据传输。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种任务处理方法,包括:
响应于目标设备集群中的第一电子设备获得目标应用触发的目标处理任务,建立与从所述目标设备集群中确定的至少一第二电子设备之间的目标通信连接;
通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备,以使得所述第二电子设备处理所述第一部分任务;
其中,所述第一部分任务是所述目标处理任务中除所述第一电子设备处理的第二部分任务之外的剩余任务,所述目标设备集群是由多个电子设备组成的资源集群。
2.根据权利要求1所述的方法,还包括:
向第三电子设备发送任务处理请求,以通过所述第三电子设备确定能够处理所述任务处理请求的至少一第二电子设备;
其中,所述第三电子设备是从目标设备集群中确定的设备。
3.根据权利要求2所述的方法,其中,通过所述第三电子设备确定能够处理所述任务处理请求的至少一第二电子设备,包括以下至少之一:
如果所述任务处理请求中携带有目标标识信息、且所述目标标识信息与所述目标设备集群中的至少一电子设备的标识信息相匹配,将与所述目标标识信息匹配的设备确定为所述第二电子设备;
如果所述任务处理请求中携带有目标标识信息、但所述目标标识信息无法在所述目标设备集群中匹配到,基于所述任务处理请求和所述目标设备集群中的各电子设备的设备资源情况确定能够处理所述任务处理请求的至少一第二电子设备;
如果所述任务处理请求中未携带目标标识信息,基于所述任务处理请求和所述目标设备集群中的各电子设备的设备资源情况确定能够处理所述任务处理请求的至少一第二电子设备。
4.根据权利要求1所述的方法,所述通过所述目标通信连接将所述目标处理任务的第一部分任务发送给第二电子设备,以使得所述第二电子设备处理所述第一部分任务,包括以下至少之一:
在所述第二电子设备唯一的情况下,将所述第一部分任务直接发送给该唯一的第二电子设备,以使得该唯一的第二电子设备和所述第一电子设备并行或串行处理所述目标处理任务;
在所述第二电子设备不唯一的情况下,基于各第二电子设备的设备资源情况将所述第一部分任务的各个子任务发送给对应的第二电子设备,以使得不唯一的第二电子设备和所述第一电子设备并行或串行处理对应的处理任务。
5.根据权利要求1所述的方法,还包括:
对所述第二电子设备反馈的对所述第一部分任务的处理结果和自身对所述第二部分任务的处理结果进行整合处理后反馈至所述目标应用;且/或,
通过第三电子设备将任务完成通知发送给所述第二电子设备,以断开与所述第二电子设备之间的所述目标通信连接。
6.根据权利要求1所述的方法,还包括:
拦截所述目标应用通过第一图形库接口对第一电子设备的图形处理器的调用请求,并基于所述第一电子设备的设备资源情况将所述目标处理任务分为第一部分任务和第二部分任务。
7.根据权利要求6所述的方法,其中,拦截所述目标应用通过目标图形库接口对第一电子设备的图形处理器的调用请求,包括:
拦截所述目标应用在第一图形库接口之后通过图形驱动程序模型的用户模式向其内核模式发送的调用请求;
对应地,通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备,包括:
将所述第一部分任务通过编码处理后发送给所述第二电子设备,将所述第二部分任务传递给所述第一电子设备的图形处理器驱动层进行后续处理。
8.根据权利要求1所述的方法,还包括:
通过第二图形库接口拦截所述目标应用对第一图形库接口的调用请求,并基于所述第一电子设备的设备资源情况和所述目标设备集群中其他电子设备的设备资源情况将所述调用请求拆分成第一调用请求和至少一第二调用请求,以将所述第一调用请求发送给所述第一图形库接口、将所述至少一第二调用请求发送给确定的至少一第二电子设备的第三图形库接口。
9.根据权利要求1所述的方法,还包括:
通过第二图形库接口拦截所述目标应用对第一图形库接口的调用请求,并基于所述目标设备集群的设备资源情况将所述调用请求拆分成至少一第二调用请求,以将所述至少一第二调用请求发送给确定的至少一第二电子设备的第三图形库接口。
10.一种任务处理装置,包括:
通信建立模块,用于响应于目标设备集群中的第一电子设备获得目标应用触发的目标处理任务,建立与从所述目标设备集群中确定的至少一第二电子设备之间的目标通信连接;
数据发送模块,用于通过所述目标通信连接将所述目标处理任务的第一部分任务发送给所述第二电子设备,以使得所述第二电子设备处理所述第一部分任务;
其中,所述第一部分任务是所述目标处理任务中除所述第一电子设备处理的第二部分任务之外的剩余任务,所述目标设备集群是由多个电子设备组成的资源集群。
CN202311869502.3A 2023-12-29 2023-12-29 任务处理方法及装置 Pending CN117827454A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311869502.3A CN117827454A (zh) 2023-12-29 2023-12-29 任务处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311869502.3A CN117827454A (zh) 2023-12-29 2023-12-29 任务处理方法及装置

Publications (1)

Publication Number Publication Date
CN117827454A true CN117827454A (zh) 2024-04-05

Family

ID=90509455

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311869502.3A Pending CN117827454A (zh) 2023-12-29 2023-12-29 任务处理方法及装置

Country Status (1)

Country Link
CN (1) CN117827454A (zh)

Similar Documents

Publication Publication Date Title
CN109327509B (zh) 一种主/从架构的低耦合的分布式流式计算系统
US6074427A (en) Apparatus and method for simulating multiple nodes on a single machine
US9558441B2 (en) Legacy application migration to real time, parallel performance cloud
CN112035238B (zh) 任务调度处理方法、装置、集群系统及可读存储介质
CN107479990A (zh) 一种分布式软件服务系统
CN109117252B (zh) 基于容器的任务处理的方法、系统及容器集群管理系统
CN103365713A (zh) 一种资源的调度和管理方法及装置
US11656902B2 (en) Distributed container image construction scheduling system and method
CN114610404B (zh) 基于应用框架的组件调用方法、装置和计算机设备
CN113703997A (zh) 集成多种消息代理的双向异步通信中间件系统及实现方法
CN111200606A (zh) 深度学习模型任务处理方法、系统、服务器及存储介质
US20200310828A1 (en) Method, function manager and arrangement for handling function calls
CN103324479A (zh) 松散环境下分布式大数据计算的中间件体系框架
CN114546648A (zh) 任务处理方法及任务处理平台
CN108829516B (zh) 一种图形处理器资源虚拟化调度方法
Pham et al. Multi-level just-enough elasticity for MQTT brokers of Internet of Things applications
CN116578404B (zh) 线程管理方法、装置、存储介质及电子设备
US20100122261A1 (en) Application level placement scheduler in a multiprocessor computing environment
CN112380030A (zh) 主任务处理方法、装置、服务器和存储介质
CN111274018A (zh) 一种基于dl框架下的分布式训练方法
CN115114022B (zh) 对gpu资源进行使用的方法、系统、设备及介质
CN117827454A (zh) 任务处理方法及装置
CN115731093A (zh) 加速设备的调度方法、装置、电子设备和存储介质
CN116501482A (zh) 云计算管理系统、装置、可读存储介质及计算设备
CN113472638A (zh) 边缘网关控制方法及系统、装置、电子设备、存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination