CN110058926B - 用于处理gpu任务的方法、设备和计算机可读介质 - Google Patents

用于处理gpu任务的方法、设备和计算机可读介质 Download PDF

Info

Publication number
CN110058926B
CN110058926B CN201810049611.3A CN201810049611A CN110058926B CN 110058926 B CN110058926 B CN 110058926B CN 201810049611 A CN201810049611 A CN 201810049611A CN 110058926 B CN110058926 B CN 110058926B
Authority
CN
China
Prior art keywords
request
gpu
machine
execution
processing
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.)
Active
Application number
CN201810049611.3A
Other languages
English (en)
Other versions
CN110058926A (zh
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.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
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 EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Priority to CN201810049611.3A priority Critical patent/CN110058926B/zh
Priority to US16/243,526 priority patent/US10942770B2/en
Publication of CN110058926A publication Critical patent/CN110058926A/zh
Application granted granted Critical
Publication of CN110058926B publication Critical patent/CN110058926B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • 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/466Transaction processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开实施例涉及用于处理GPU任务的方法、设备和计算机可读介质。在客户端侧实施的用于处理GPU任务的方法包括:接收来自应用的针对GPU任务的请求;确定请求是否涉及GPU任务的执行状态的查询;以及响应于请求涉及查询,向应用提供针对查询的肯定应答,而不向执行GPU任务的机器转发请求。相应地,在服务器侧实施的应用处理GPU任务的方法包括:接收来自机器的针对GPU任务的请求,该请求与GPU任务的执行状态的查询无关;以及执行请求所涉及的操作,包括:确定请求的处理是否依赖于在先请求的处理;以及响应于请求的处理依赖于在先请求的处理,暂停请求的处理直到在先请求的处理完成为止。由此降低同步时延,并减少不必要的网络传送,从而降低网络负荷。

Description

用于处理GPU任务的方法、设备和计算机可读介质
技术领域
本公开的实施例涉及计算机领域,并且更具体地涉及用于处理图形处理器(GPU)任务的方法、设备和计算机可读介质。
背景技术
GPU由于其高性能而被广泛地使用,并被部署为诸如机器学习和深度学习之类的许多应用的加速器。由于GPU的价格非常高,如果用户只能以孤立的方式使用本地的GPU资源,则GPU的总体利用率将非常低,并且成本也将非常高。在这种情况下,GPU即服务(GPU asa service,简称为GPUaaS)应运而生。GPUaaS是指通过构建客户端-服务器模型,将GPU功能作为一种服务提供,由此改善上述的总体利用率并降低成本。
然而,在GPUaaS架构中GPU执行的功能效率与在具有本地GPU的设备中相比差别很大,因为不同的功能具有不同的行为,而对于某些功能而言在GPUaaS架构中GPU执行的时延可能被增大。因此,期望提供GPUaaS架构中的改进方案来进一步改善其功能效率。
发明内容
根据本公开的示例实施例,提供了GPUaaS架构中用于处理GPU任务的方案。
在本公开的第一方面中,提供了一种用于处理GPU任务的方法。该方法包括:接收来自应用的针对GPU任务的请求;确定所述请求是否涉及所述GPU任务的执行状态的查询;以及响应于所述请求涉及所述查询,向所述应用提供针对所述查询的肯定应答,而不向执行所述GPU任务的机器转发所述请求。
在本公开的第二方面中,提供了一种用于处理GPU任务的方法。该方法包括:接收来自机器的针对GPU任务的请求,所述请求与所述GPU任务的执行状态的查询无关;以及执行所述请求所涉及的操作,包括:确定所述请求的处理是否依赖于在先请求的处理;以及响应于所述请求的处理依赖于所述在先请求的处理,暂停所述请求的处理直到所述在先请求的处理完成为止。
在本公开的第三方面中,提供了一种电子设备。该电子设备包括:处理单元;以及存储器,所述存储器存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:接收来自应用的针对GPU任务的请求;确定所述请求是否涉及所述GPU任务的执行状态的查询;以及响应于所述请求涉及所述查询,向所述应用提供针对所述查询的肯定应答,而不向执行所述GPU任务的机器转发所述请求。
在本公开的第四方面中,提供了一种电子设备。该电子设备包括:处理单元;以及存储器,所述存储器存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:接收来自机器的针对GPU任务的请求,所述请求与所述GPU任务的执行状态的查询无关;以及执行所述请求所涉及的操作,包括:确定所述请求的处理是否依赖于在先请求的处理;以及响应于所述请求的处理依赖于所述在先请求的处理,暂停所述请求的处理直到所述在先请求的处理完成为止。
在本公开的第五方面中,提供了一种计算机可读介质。该计算机可读介质上存储有计算机程序,所述程序被处理器执行时实现根据本公开的第一方面所述的方法。
在本公开的第六方面中,提供了一种计算机可读介质。该计算机可读介质上存储有计算机程序,所述程序被处理器执行时实现根据本公开的第二方面所述的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了本公开实施例可以在其中实施的示例GPUaaS架构的示意图;
图2示出了根据本公开实施例的在客户端侧实施的用于处理GPU任务的方法的流程图;
图3示出了根据本公开另一实施例的在客户端侧实施的用于处理GPU任务的方法的流程图;
图4示出了根据本公开实施例的在服务器侧实施的用于处理GPU任务的方法的流程图;以及
图5示出了可以实施本公开实施例的电子设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
在本公开的实施例的描述中,术语“机器”或“主机”可以理解为具有处理器和存储器的任意电子设备。术语“机器”或“主机”可以指代客户端或终端设备,也可以指代服务器设备。在本文中,为便于描述,“机器”和“主机”可以互换使用。
如前面提及的,GPUaaS通过构建客户端-服务器模型的方式将GPU功能作为一种服务提供。下面结合图1对此进行具体描述。图1示出了本公开实施例可以在其中实施的示例GPUaaS架构100的示意图。如图1所示,架构100包括具有GPU接口的一个或多个第一主机110、网络120和具有GPU的第二主机130。第一主机110不具有GPU而只有可以请求GPU服务的GPU接口,而第二主机130可以提供GPU服务,即,处理GPU任务,例如执行GPU计算。网络120可以是本领域已知或未来开发的任意计算机网络,例如互联网、局域网、城域网、内联网等等。在架构100中,第一主机110可以通过网络120向第二主机130发送处理GPU任务的请求(如图1中的140所示)以及从第二主机130接收GPU任务的处理结果(如图1中的142所示)。
在架构100中,第一主机100可以被视为客户端,第二主机130可以被视为服务器。在本公开的实施例中,该客户端-服务器模型可借助于远程过程调用(RPC)协议或类似协议来执行上述交互过程。在客户端和服务器之间需要建立RPC信道,以用于传送处理GPU任务的请求或GPU任务的处理结果,例如以GPU命令列表的形式。其中每个命令代表相应的GPU功能,例如统一计算设备架构(CUDA)的应用程序编程接口(API)调用,诸如memcpyH2D、runGPUfunction、memcpyD2H等等。
然而,本发明人在针对诸如TensorFlow、Keras和Theano的主流GPU应用/框架的研究中发现,当前这种命令驱动的方式存在如下的问题:与具有本地GPU的设备中相比,在诸如架构100的GPUaaS架构中GPU执行的性能差别很大。本发明人注意到,这是因为不同的GPU应用具有不同的行为,例如同步模式、轮询模式、中断模式等等,而对于某些GPU应用而言在GPUaaS架构中执行的时延会增大,并且在网络条件差的情况下,这种时延将不可承受。
鉴于此,本公开实施例的基本构思就在于,代替上述命令驱动的方式,采用数据驱动的方式来实现GPUaaS架构中对GPU任务的处理。通常,在命令驱动的方案中,来自应用的GPU命令经由RPC信道都被传送到具有GPU功能的机器,并在该机器处得以执行。而在本公开实施例的数据驱动的方案中,跟踪数据(即任务)执行的流水线,并且仅在必要时进行命令和数据执行的同步,由此增加数据路径的重叠并减少总体时延,同时减少不必要的网络传送,降低网络负荷。下面结合图2至图4对此进行更详细说明。
图2示出了根据本公开实施例的在客户端侧实施的用于处理GPU任务的方法200的流程图。方法200可以在作为客户端的需求GPU服务的机器(例如图1的第一主机110)处实施。
如图2所示,在框210,接收来自应用的针对GPU任务的请求。例如,第一主机110处的应用可以借助于GPU而加速。在这种情况下,应用可以向第一主机110发送针对GPU任务的请求,相应地,第一主机110接收来自应用的该请求。根据本公开的实施例,GPU任务可以是命令列表的形式,诸如memcpyH2D、runGPUfunction、memcpyD2H等等。
根据本公开的实施例,该请求可以涉及以下至少一项:同步模式、轮询模式、中断模式。这取决于应用对GPU任务的控制机制。例如在同步模式中,以串行化方式执行GPU任务,其中一个GPU任务在其随后的GPU任务将执行之前完成,即命令和任务执行实现同步。这种模式下的应用的示例是例如Theano应用。例如在轮询模式中,异步地检查GPU任务是否完成,而不断开应用的线程。这种模式下的应用的示例是例如TensorFlow应用。例如,在中断模式中,设置异步的回调程序(callback)或处理程序(handler)来请求通知何时GPU任务完成。这种模式在CUDA大部分应用中被使用。应理解到,该请求可以涉及本领域已知或未来开发的任意其它模式,而不限于上述所列模式。
在框220,确定请求是否涉及GPU任务的执行状态的查询。根据本公开的实施例,取决于应用的控制机制不同,GPU任务可以涉及不同的功能,例如GPU任务的执行、GPU任务的执行状态的查询、GPU任务的执行结果的获取等。例如,第一主机110可以根据请求包括的命令类型,确定在框210接收到的请求是否涉及GPU任务的执行状态的查询。在一个实施例中,例如在轮询模式的TensorFlow应用中,如果请求涉及例如语义“任务A是否完成?”,则可以确定该请求涉及GPU任务的执行状态的查询。在另一实施例中,例如在中断模式的CUDA应用中,如果请求涉及例如语义“在任务A完成时,请回调操作程序1”,则可以确定该请求涉及GPU任务的执行状态的查询。简言之,根据本公开的实施例,只要请求涉及GPU任务的执行状态,而不是涉及GPU任务的数据本身(例如任务执行所需的数据,任务执行后得到的结果数据,等等),则确定该请求涉及GPU任务的执行状态的查询。应理解到,在本公开实施例的上下文描述中,涉及具体语义的请求示例仅是说明性的,本申请并不受限于这些示例,其它语义或其它形式的请求也是可能的。
如果在框220确定请求涉及GPU任务的执行状态的查询,则进入框230。在框230,向应用提供针对查询的肯定应答,而不向执行GPU任务的机器转发该请求。在一个实施例中,例如针对请求涉及例如语义“任务A是否完成?”,则第一主机110可以直接向应用返回语义“已完成”,而不再通过RPC信道向第二主机130转发该请求。在另一个实施例中,例如针对请求涉及例如语义“在任务A完成时,请回调操作程序1”,则第一主机110可以直接向应用返回语义“任务A已完成,请执行操作程序1”,而不再通过RPC信道向第二主机130转发该请求。换言之,根据本公开的实施例,只要请求涉及GPU任务的执行状态,而不是涉及GPU任务的数据本身(例如任务执行所需的数据,任务执行后得到的结果数据,等等),就不向执行GPU任务的机器转发请求,而是直接提供肯定应答。
如果在框220确定请求不涉及GPU任务的执行状态的查询,则进入框240。在框240,向执行GPU任务的机器转发该请求。
根据上面结合图2描述的本公开实施例,通过针对涉及执行状态而不是数据本身的请求,不转发给执行GPU任务的机器,而是直接提供肯定应答,可以减少不必要的网络传送,从而降低网络负荷,同时由于命令与数据执行的异步,因此应用的等待时延减少。
下面结合图3描述根据本公开另一实施例的用于处理GPU任务的过程。图3示出了根据本公开另一实施例的在客户端侧实施的用于处理GPU任务的方法300的流程图。例如方法300也可以在图1的第一主机110处实施。
如图3所示,在框310,接收来自应用的针对GPU任务的请求。该操作类似于前面结合图2的框210所述的操作,因此不再赘述。
在框320,确定请求涉及GPU任务的执行、执行状态的查询还是执行结果的获取。例如,第一主机110可以根据请求包括的命令类型,确定在框310接收到的请求涉及GPU任务的何种操作。在确定请求涉及GPU任务的执行时,例如语义为“请执行任务A”,则进入框330。
在框330,向执行GPU任务的机器转发请求。例如,第一主机110可以通过网络120借助于RPC信道向第二主机130发送该请求,以便第二主机130执行该请求涉及的操作。
在框340,向应用提供针对执行的肯定应答。例如,第一主机110针对涉及语义“请执行任务A”的请求,可以自动提供肯定应答“已执行”。框340的操作可以在框330的操作之前、之后或与之同时进行。
在框320确定请求涉及GPU任务的执行结果的获取时,例如语义为“请返回任务A的结果”,则进入框350。在框350,向执行GPU任务的机器转发请求。该操作类似于框330处的操作,不再赘述。
在框360,从机器接收针对GPU任务的执行结果。例如,第一主机110可以通过网络120借助于RPC信道从第二主机130接收任务A的执行结果。在框370,将执行结果转发给应用,从而应答上述请求。
在框320确定请求涉及GPU任务的执行状态的查询时,则进入框350,向应用提供针对查询的肯定应答,而不向执行GPU任务的机器转发请求。框350的操作类似于前面结合图2的框230所述的操作,这里不再赘述。
根据上面结合图3描述的本公开实施例,与结合图2描述的实施例相比,除了针对涉及状态查询的请求直接提供肯定应答而不转发给执行GPU任务的机器之外,针对涉及GPU任务的执行的请求也直接提供肯定应答但转发给执行GPU任务的机器,并且仅针对涉及GPU任务的执行结果的请求等待机器的同步处理,从而可以进一步减少不必要的网络传送,降低网络负荷和降低时延。
至此结合图2和图3描述了在客户端侧实施的用于处理GPU任务的方法。与之相对应,根据本公开的实施例,还提供在服务器侧实施的用于处理GPU任务的方法。下面结合图4进行详细描述。
图4示出了根据本公开实施例的在服务器侧实施的用于处理GPU任务的方法400的流程图。该方法400可以在作为服务器的用于提供GPU服务的机器(例如图1的第二主机130)处实施。
如图4所示,在框410,接收来自机器的针对GPU任务的请求,该请求与GPU任务的执行状态的查询无关。如前面结合图2的框240所述,在请求不涉及GPU任务的执行状态的查询的情况下,第一主机110需要通过网络120将请求转发给第二主机130。相应地,第二主机130将接收来自第一主机110的该请求。根据本公开的实施例,该请求可以涉及GPU任务的数据本身,例如任务执行所需的数据,任务执行后得到的结果数据,等等。例如,涉及语义“请执行任务A”的命令,语义“请返回任务A的结果”的命令,等等。应理解到,在本公开实施例的上下文描述中,涉及具体语义的请求示例仅是说明性的,本申请并不受限于这些示例,其它语义或其它形式的请求也是可能的。
根据本公开的实施例,该请求可以涉及以下至少一项:同步模式、轮询模式、中断模式。关于这一点的细节可以参见前面结合图2的框210描述的类似部分。
在框420,确定接收到的请求的处理是否依赖于在先请求的处理。在一个实施例中,例如针对在框410接收到语义为“请返回任务A的结果”的请求,第二主机130可以确定该请求的处理依赖于例如语义为“请执行任务A”的在先请求的处理。只有在任务A的执行完成后,才能返回任务A的结果。在另一个实施例中,例如,针对在框410接收到语义为“请执行任务A”的请求,第二主机130可以确定该请求的处理并不依赖于在先请求的处理,而是可以单独被执行。
在框420确定请求的处理依赖于在先请求的处理时,进入框430。在框430,暂停该请求的处理,直到在先请求的处理完成为止。根据本公开的实施例,当在先请求的处理完成时,再执行该请求所涉及的后继操作,如在框440所示。在框420确定请求的处理不依赖于在先请求的处理时,进入框440,直接执行该请求所涉及的后继操作。
根据本公开实施例,执行GPU任务的机器将不会接收到涉及GPU任务的执行状态查询的请求,并且相应地仅接收到涉及GPU任务的数据本身的请求,例如涉及GPU任务执行所需的数据,GPU任务执行的结果数据,等等。由此与传统方案相比,减少了不必要的网络传送,降低了网络负荷。另外,由于在客户端侧对请求(即命令)的拦截处理,命令与服务器侧的数据执行成为异步,因此在服务器侧需要将命令与数据执行进行同步,以便输出所需的数据。
根据结合图2至图4描述的实施例,可以实现数据驱动的GPUaaS架构。通过仅经由网络传送涉及GPU任务的数据本身的请求,而拦截涉及GPU任务的执行状态的查询的请求,可以减少不必要的网络传送,降低网络负荷。此外,由于允许命令与数据执行之间的异步操作,而仅在必要时执行同步操作,从而降低同步时延。
图5示出了可以用来实施本公开实施例的示例性计算设备800的示意性框图。设备500可以用于实现图1的第一主机110和第二主机130。如图所示,设备500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序指令,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元501执行上文所描述的各个方法和处理,例如方法200、300和/或400。例如,在一些实施例中,方法200、300和/或400可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM503并由CPU 501执行时,可以执行上文描述的方法200、300和/或400的一个或多个步骤。备选地,在其他实施例中,CPU 501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法200、300和/或400。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (18)

1.一种用于处理图形处理器(GPU)任务的方法,包括:
在客户端侧处的第一机器上,接收来自在所述第一机器上运行的应用的针对GPU任务的请求,其中所述第一机器包括至少部分地用于请求从服务器侧处的第二机器执行所述GPU任务的GPU接口,并且其中所述第二机器包括GPU;
在所述第一机器上确定来自所述应用的所述请求是否涉及所述GPU任务在所述第二机器上的执行状态的查询;以及
响应于来自所述应用的所述请求涉及所述查询,向所述应用提供针对所述查询的肯定应答,而不向执行所述GPU任务的所述第二机器转发来自所述应用的所述请求,
其中针对所述查询的所述肯定应答指示所述GPU任务的所述执行。
2.根据权利要求1所述的方法,还包括:
响应于来自所述应用的所述请求涉及所述GPU任务的所述执行,
向所述第二机器转发来自所述应用的所述请求;以及
向所述应用提供针对所述执行的肯定应答。
3.根据权利要求1所述的方法,还包括:
响应于来自所述应用的所述请求涉及所述GPU任务的执行结果的获取,
向所述第二机器转发来自所述应用的所述请求;
从所述第二机器接收针对所述GPU任务的执行结果;以及
将所述执行结果转发给所述应用。
4.根据权利要求1所述的方法,其中来自所述应用的所述请求涉及以下至少一项:同步模式、轮询模式、中断模式。
5.一种用于处理图形处理器(GPU)任务的方法,包括:
在服务器侧处的第二机器上接收来自客户端侧处的第一机器的针对GPU任务的请求,所述请求与所述GPU任务的执行状态的查询无关;以及
在所述第二机器上执行所述请求所涉及的操作,包括:
确定所述请求的处理是否依赖于在先请求的处理;以及
响应于所述请求的处理依赖于所述在先请求的处理,暂停所述请求的处理直到所述在先请求的处理完成为止,
其中所述第一机器包括至少部分地用于从所述第二机器请求执行所述GPU任务的GPU接口,并且其中所述第二机器包括GPU;
其中涉及所述GPU任务的所述执行状态的查询的请求由所述第一机器处理以提供针对所述查询的肯定应答,而不由所述第一机器向所述第二机器转发涉及所述查询的所述请求。
6.根据权利要求5所述的方法,其中执行所述操作还包括:
响应于所述请求涉及所述GPU任务的所述执行,执行所述GPU任务,以得到针对所述GPU任务的执行结果。
7.根据权利要求5所述的方法,其中执行所述操作还包括:
响应于所述请求涉及所述GPU任务的执行结果的获取,将所述执行结果发送给所述第一机器。
8.根据权利要求5所述的方法,其中所述请求涉及以下至少一项:同步模式、轮询模式、中断模式。
9.一种电子设备,包括:
处理单元;以及
存储器,所述存储器存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
接收来自在客户端侧处的所述电子设备上运行的应用的针对图形处理器(GPU)任务的请求,其中所述电子设备还包括至少部分地用于请求从来自服务器侧处的机器执行所述GPU任务的GPU接口,并且其中所述机器包括GPU;
确定来自所述应用的所述请求是否涉及所述GPU任务在所述机器上的执行状态的查询;以及
响应于来自所述应用的所述请求涉及所述查询,向所述应用提供针对所述查询的肯定应答,而不向执行来自所述应用的所述GPU任务的所述机器转发所述请求,
其中针对所述查询的所述肯定应答指示所述GPU任务的所述执行。
10.根据权利要求9所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于来自所述应用的所述请求涉及所述GPU任务的所述执行,
向所述机器转发来自所述应用的所述请求;以及
向所述应用提供针对所述执行的肯定应答。
11.根据权利要求9所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于来自所述应用的所述请求涉及所述GPU任务的执行结果的获取,
向所述机器转发来自所述应用的所述请求;
从所述机器接收针对所述GPU任务的执行结果;以及
将所述执行结果转发给所述应用。
12.根据权利要求9所述的设备,其中来自所述应用的所述请求涉及以下至少一项:同步模式、轮询模式、中断模式。
13.一种电子设备,包括:
处理单元;以及
存储器,所述存储器存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
接收来自客户端侧处的机器的针对图形处理器(GPU)任务的请求,所述请求与所述GPU任务的执行状态的查询无关;以及
执行所述请求所涉及的操作,包括:
确定所述请求的处理是否依赖于在先请求的处理;以及
响应于所述请求的处理依赖于所述在先请求的处理,暂停所述请求的处理直到所述在先请求的处理完成为止,
其中所述机器包括至少部分地用于从所述电子设备请求执行所述GPU任务的GPU接口;
其中所述电子设备处于服务器侧并且还包括GPU;并且
其中涉及所述GPU任务的所述执行状态的查询的请求由所述机器处理以提供针对所述查询的肯定应答,而不由所述机器向所述电子设备转发涉及所述查询的所述请求。
14.根据权利要求13所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于所述请求涉及所述GPU任务的所述执行,执行所述GPU任务,以得到针对所述GPU任务的执行结果。
15.根据权利要求13所述的设备,其中所述存储器还存储有指令,所述指令在被所述处理单元执行时使得所述电子设备:
响应于所述请求涉及所述GPU任务的执行结果的获取,将所述执行结果发送给所述机器。
16.根据权利要求13所述的设备,其中所述请求涉及以下至少一项:同步模式、轮询模式、中断模式。
17.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1-4中任一项所述的方法。
18.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求5-8中任一项所述的方法。
CN201810049611.3A 2018-01-18 2018-01-18 用于处理gpu任务的方法、设备和计算机可读介质 Active CN110058926B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810049611.3A CN110058926B (zh) 2018-01-18 2018-01-18 用于处理gpu任务的方法、设备和计算机可读介质
US16/243,526 US10942770B2 (en) 2018-01-18 2019-01-09 Method, device and computer readable medium for analyzing and responding to a request corresponding to a GPU task

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810049611.3A CN110058926B (zh) 2018-01-18 2018-01-18 用于处理gpu任务的方法、设备和计算机可读介质

Publications (2)

Publication Number Publication Date
CN110058926A CN110058926A (zh) 2019-07-26
CN110058926B true CN110058926B (zh) 2023-03-14

Family

ID=67212880

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810049611.3A Active CN110058926B (zh) 2018-01-18 2018-01-18 用于处理gpu任务的方法、设备和计算机可读介质

Country Status (2)

Country Link
US (1) US10942770B2 (zh)
CN (1) CN110058926B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110851285B (zh) * 2020-01-14 2020-04-24 支付宝(杭州)信息技术有限公司 一种基于gpu虚拟化的资源复用方法、装置及设备
CN112181689A (zh) * 2020-09-30 2021-01-05 华东师范大学 一种在云端下进行gpu内核程序高效率调度的运行时系统
CN113126917A (zh) * 2021-04-01 2021-07-16 山东英信计算机技术有限公司 一种分布式存储中请求处理方法、系统、设备以及介质
CN114020476B (zh) * 2021-12-30 2022-06-03 荣耀终端有限公司 一种作业的处理方法、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467289B1 (en) * 2006-10-27 2008-12-16 Nvidia Corporation Indicating acknowledge of stable state of pipeline resource when freeze bit set and context switch inhibited
CN106233326A (zh) * 2014-04-21 2016-12-14 高通股份有限公司 图形处理中基于显现目标的灵活显现
CN106649037A (zh) * 2016-12-08 2017-05-10 武汉斗鱼网络科技有限公司 一种gpu任务完成状态的判断方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8943347B2 (en) * 2009-09-09 2015-01-27 Advanced Micro Devices, Inc. Controlling the power state of an idle processing device
US9330430B2 (en) * 2011-03-21 2016-05-03 Apple Inc. Fast queries in a multithreaded queue of a graphics system
US9519568B2 (en) * 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
US9563253B2 (en) * 2013-03-12 2017-02-07 Intel Corporation Techniques for power saving on graphics-related workloads
US20140281915A1 (en) * 2013-03-12 2014-09-18 Minds and Machines, LLC Method and system for background generation using guides
US9870415B2 (en) * 2013-09-18 2018-01-16 Quintiles Ims Incorporated System and method for fast query response
US9280845B2 (en) * 2013-12-27 2016-03-08 Qualcomm Incorporated Optimized multi-pass rendering on tiled base architectures
DE112014002477T5 (de) * 2014-11-21 2016-09-29 Intel Corporation Vorrichtung und Verfahren für eine effiziente Grafikverarbeitung in einer virtuellen Ausführungsumgebung
US10089264B2 (en) * 2016-05-13 2018-10-02 Intel Corporation Callback interrupt handling for multi-threaded applications in computing environments
US10275851B1 (en) * 2017-04-25 2019-04-30 EMC IP Holding Company LLC Checkpointing for GPU-as-a-service in cloud computing environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467289B1 (en) * 2006-10-27 2008-12-16 Nvidia Corporation Indicating acknowledge of stable state of pipeline resource when freeze bit set and context switch inhibited
CN106233326A (zh) * 2014-04-21 2016-12-14 高通股份有限公司 图形处理中基于显现目标的灵活显现
CN106649037A (zh) * 2016-12-08 2017-05-10 武汉斗鱼网络科技有限公司 一种gpu任务完成状态的判断方法及装置

Also Published As

Publication number Publication date
CN110058926A (zh) 2019-07-26
US20190220308A1 (en) 2019-07-18
US10942770B2 (en) 2021-03-09

Similar Documents

Publication Publication Date Title
CN110058926B (zh) 用于处理gpu任务的方法、设备和计算机可读介质
CN107943577B (zh) 用于调度任务的方法和装置
WO2017041398A1 (zh) 数据传输方法和装置
US10846124B2 (en) Communication method, apparatus and system for virtual machine and host machine
JP2021096857A (ja) データ処理方法、装置、電子機器及び記憶媒体
JP7012689B2 (ja) コマンド実行方法及び装置
KR101426575B1 (ko) 분산형 프로세싱 시스템 및 방법
CN110019496B (zh) 数据读写方法和系统
CN110659142A (zh) 消息队列处理方法及装置、电子设备、存储介质
CN113050940A (zh) 小程序的预览方法、相关装置及计算机程序产品
KR20220151585A (ko) 업무 데이터 처리 방법, 장치, 전자 기기, 저장 매체 및 컴퓨터 프로그램
US20170041402A1 (en) Method for transparently connecting augmented network socket operations
US20230359483A1 (en) Method for applet page rendering, electronic device and storage medium
US11048555B2 (en) Method, apparatus, and computer program product for optimizing execution of commands in a distributed system
CN116243983A (zh) 处理器、集成电路芯片、指令处理方法、电子设备和介质
CN111857546A (zh) 用于处理数据的方法、网络适配器和计算机程序产品
CN113722037B (zh) 一种用户界面的刷新方法、装置、电子设备及存储介质
CN106844025B (zh) 一种异步中断处理方法及中断控制器
US20230093004A1 (en) System and method for asynchronous backend processing of expensive command line interface commands
CN115237574A (zh) 人工智能芯片的调度方法、装置及电子设备
CN111937366A (zh) Web请求处理方法和装置
CN115934632A (zh) 数据处理方法、装置、电子设备及存储介质
CN117675897A (zh) 应用交互方法、装置、设备及存储介质
CN113821248B (zh) 车机端软件的服务方法、车机端软件及其相关设备
EP3872630A2 (en) Request processing method and apparatus, electronic device, and computer storage medium

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
GR01 Patent grant
GR01 Patent grant