CN113808001A - 一种单系统同时支持多gpu工作的方法及系统 - Google Patents
一种单系统同时支持多gpu工作的方法及系统 Download PDFInfo
- Publication number
- CN113808001A CN113808001A CN202111373159.4A CN202111373159A CN113808001A CN 113808001 A CN113808001 A CN 113808001A CN 202111373159 A CN202111373159 A CN 202111373159A CN 113808001 A CN113808001 A CN 113808001A
- Authority
- CN
- China
- Prior art keywords
- gpu
- task
- context
- manager
- idle
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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
- G06F9/5016—Allocation 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 the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
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
一种单系统同时支持多GPU工作的方法,包括以下步骤:GPU管理器接收图形和计算任务,并查找相关上下文;将任务与查找到的所述上下文进行关联,将任务发送到空闲GPU;GPU通过中断通知GPU管理器返回任务结果。本发明的单系统同时支持多GPU工作的方法及系统,能够在单个操作系统里同时使用多块GPU,提高GPU的利用效率,提高系统算力。
Description
技术领域
本发明涉及图形学及并行计算技术领域,特别是涉及车载芯片上的单系统同时支持多GPU工作的方法及系统。
背景技术
随着汽车电子的发展,在多媒体,连接,导航,仪表等需求的推动下,产生了越来越复杂的系统芯片(SOC),系统芯片集成了多个不同的GPU以支持更多的图形和计算需求。但是当前的车载系统中,单个操作系统内通常只能使用一个的GPU,大大降低了系统的算力,怎样同时在一个操作系统里使用多个GPU成为了亟待解决的问题。
在一个操作系统中同时使用芯片上的多个GPU资源,提高系统算力。
近些年来,在车载芯片中集成多个GPU成为了一种趋势,怎样同时使用多个GPU仍在探索。
在车载芯片中,多数采用硬隔离的方式,芯片中的GPU被分配到不同的操作系统使用。在只运行一个操作系统的时候,只有一个GPU在使用中,其他GPU不能得到充分的利用。在电脑领域,系统中也可以集成多块GPU,但是需要在使用时,指定一块GPU,不能同时使用。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种单系统同时支持多GPU工作的方法及系统,在单个操作系统里同时使用多块GPU,提高GPU的利用效率,提高系统算力。
为实现上述目的,本发明提供的一种单系统同时支持多GPU工作的方法,包括以下步骤:
GPU管理器接收图形和计算任务,并查找相关上下文;
将任务与查找到的所述上下文进行关联,将任务发送到空闲GPU;
GPU通过中断通知GPU管理器返回任务结果。
进一步地,所述上下文,包括,存储系统为任务分配的内存、GPU的状态设置。
进一步地,所述GPU管理器接收图形和计算任务,并查找相关上下文的步骤,还包括,
GPU管理器根据接收的任务信息查找是否存在相关上下文;
若不存在,为所述任务创建上下文,并分配相关资源;
若存在,则使用已有的上下文。
进一步地,所述将任务与查找到的所述上下文进行关联,将任务发送到空闲GPU的步骤,包括,
将任务与所述上下文关联;
查找是否存在空闲的GPU,若不存在将任务放入等待队列,等待GPU空闲;
若存在空闲的GPU,则根据上下文设置GPU的运行环境,并发送任务到GPU。
进一步地,还包括,
GPU管理器处理新的任务或进入空闲状态。
更进一步地,所述GPU通过中断通知GPU管理器返回任务结果的步骤,还包括,
GPU管理器为所述任务查找上下文信息,找到相应的应用程序并返回任务结果;
GPU管理器检查等待队列中是否存在等待任务;
若存在,则根据等待任务的上下文信息设置GPU状态,并将所述任务发送到GPU执行;
若不存在,则GPU空闲,GPU管理器恢复到处理下一个任务的状态。
为实现上述目的,本发明还提供一种车载芯片,包括如上文所述的单系统同时支持多GPU工作的系统。
为实现上述目的,本发明还提供一种电子设备,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行如上文所述的单系统同时支持多GPU工作的方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时执行如上文所述的单系统同时支持多GPU工作的方法的步骤。
本发明的单系统同时支持多GPU工作的方法及系统,具有以下有益效果:
在单个操作系统里同时使用多块GPU,提高GPU的利用效率,提高系统算力。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据本发明的单系统同时支持多GPU工作的方法流程图;
图2为根据本发明的单系统同时支持多GPU工作的系统结构框图;
图3为根据本发明的实施例一任务处理流程示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1
图1为根据本发明的单系统同时支持多GPU工作的方法流程图,下面将参考图1,对本发明的单系统同时支持多GPU工作的方法进行详细描述。
首先,在步骤101,GPU Manager接收新的图形和计算任务,并查找相关上下文。
本发明实施例中,上下文中存储有,系统为该任务分配的内存等资源、GPU的状态设置等;GPU Manager中需要维护APP进程与上下文之间的关系列表,以及GPU状态列表。
优选地,接收新任务,GPU Manager根据APP进程等信息在上述上下文之间的关系列表中查找是否已经存在相关上下文。如果没有,就为该任务创建上下文,分配内存等相关资源,并将上下文与APP进程的对应关系加入上述上下文关系列表;如果存在则使用已有的上下文。
在步骤102,将任务与所述上下文关联,然后在GPU状态列表中查找是否存在空闲的GPU,如果没有就把任务放入等待队列,等待GPU空闲。如果存在空闲的GPU则根据上下文设置GPU的运行环境,发送任务到GPU,并更新GPU状态列表,记录该GPU正在执行任务的上下文。此后,GPU Manager可以继续处理新的任务,或者进入空闲状态。
在步骤103,GPU任务完成后通过中断通知GPU Manager。
优选地,步骤103中GPU任务完成后通过中断通知GPU Manager 的步骤,可具体执行为:GPU Manager在GPU状态列表中找到所执行任务上下文,更新任务上下文中的GPU状态信息。然后在上述上下文与APP进程关系表中找到相应的APP并返回任务结果。最后,GPUManager检查等待队列中是否存在等待任务。如果存在,则根据等待任务的上下文信息,为GPU设置状态,将该任务发送到GPU执行,并更新GPU状态列表。如果没有则GPU空闲,GPUManager恢复到可以处理下一个任务的状态。
实施例2
图2为根据本发明的单系统同时支持多GPU工作的系统结构框图,如图2所示,本发明的单系统同时支持多GPU工作的系统,包括,GPU管理器,多个GPU和共享内存,其中,
所述GPU管理器接收来自外部应用程序的图形和计算任务,并查找相关上下文将任务发送到空闲GPU。
所述GPU完成任务后通过中断通知GPU管理器返回任务结果。
所述共享内存用于存储多个GPU的数据。
图3为根据本发明的实施例一任务处理流程示意图,如图3所示,当有新的图形和计算任务到达GPU Manager时,GPU Manager根据APP进程等信息查找是否已经存在相关上下文。如果没有,就为该任务创建上下文,并分配相关资源;如果存在则使用已有的上下文。将任务与上述上下文关联。然后查找是否存在空闲的GPU,如果没有就把任务放入等待队列,等待GPU空闲。如果存在空闲的GPU则根据上下文设置GPU的运行环境,并发送任务到GPU。此后,GPU Manager可以继续处理新的任务,或者进入空闲状态。GPU任务完成后通过中断通知GPU Manager GPU Manager为该任务查找上下文信息,找到相应的APP并返回任务结果。而后,GPU Manager检查等待队列中是否存在等待任务。如果存在,则根据等待任务的上下文信息,为GPU设置状态,并将该任务发送到GPU执行。如果没有则GPU空闲,GPU Manager恢复到可以处理下一个任务的状态。
本申请针对将来越来越多的车载多GPU芯片,提供一种可以充分利用多GPU资源,提高系统算力的方案,在系统中实现软件模块GPU Manager统一管理系统中的多个GPU。对于上层APP而言,物理GPU是透明的,APP只和系统中唯一的GPU Manager交互。APP把图形和计算需求都发送给GPU Manager,再由GPU Manager分配给各个GPU,GPU完成工作后通过中断通知GPU Manager,再由GPU Manager转发给相应的APP。GPU之间通过共享内存传递数据,减少多GPU共同完成任务时的数据拷贝。
本发明的一个实施例中,还提供一种电子设备,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行如上文所述的单系统同时支持多GPU工作的方法的步骤。
本发明的一个实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时执行如上文所述的单系统同时支持多GPU工作的方法的步骤。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种单系统同时支持多GPU工作的方法,其特征在于,包括以下步骤:
GPU管理器接收图形和计算任务,并查找相关上下文;
将任务与查找到的所述上下文进行关联,将任务发送到空闲GPU;
GPU通过中断通知GPU管理器返回任务结果。
2.根据权利要求1所述的单系统同时支持多GPU工作的方法,其特征在于,所述上下文,包括,存储系统为任务分配的内存、GPU的状态设置。
3.根据权利要求1所述的单系统同时支持多GPU工作的方法,其特征在于,所述GPU管理器接收图形和计算任务,并查找相关上下文的步骤,还包括,
GPU管理器根据接收的任务信息查找是否存在相关上下文;
若不存在,为所述任务创建上下文,并分配相关资源;
若存在,则使用已有的上下文。
4.根据权利要求1所述的单系统同时支持多GPU工作的方法,其特征在于,所述将任务与查找到的所述上下文进行关联,将任务发送到空闲GPU的步骤,包括,
将任务与所述上下文关联;
查找是否存在空闲的GPU,若不存在将任务放入等待队列,等待GPU空闲;
若存在空闲的GPU,则根据上下文设置GPU的运行环境,并发送任务到GPU。
5.根据权利要求3所述的单系统同时支持多GPU工作的方法,其特征在于,还包括,
GPU管理器处理新的任务或进入空闲状态。
6.根据权利要求1所述的单系统同时支持多GPU工作的方法,其特征在于,所述GPU通过中断通知GPU管理器返回任务结果的步骤,还包括,
GPU管理器为所述任务查找上下文信息,找到相应的应用程序并返回任务结果;
GPU管理器检查等待队列中是否存在等待任务;
若存在,则根据等待任务的上下文信息设置GPU状态,并将所述任务发送到GPU执行;
若不存在,则GPU空闲,GPU管理器恢复到处理下一个任务的状态。
7.一种单系统同时支持多GPU工作的系统,其特征在于,包括GPU管理器,多个GPU和共享内存,其中,
所述GPU管理器接收图形和计算任务并查找相关上下文将任务发送到空闲GPU;
所述GPU完成任务后通过中断通知GPU管理器返回任务结果;
所述共享内存用于存储多个GPU的数据。
8.一种车载芯片,其特征在于,包括如权利要求7所述的单系统同时支持多GPU工作的系统。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行权利要求1至6任一项所述的单系统同时支持多GPU工作的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序运行时执行权利要求1至6任一项所述的单系统同时支持多GPU工作的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111373159.4A CN113808001A (zh) | 2021-11-19 | 2021-11-19 | 一种单系统同时支持多gpu工作的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111373159.4A CN113808001A (zh) | 2021-11-19 | 2021-11-19 | 一种单系统同时支持多gpu工作的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113808001A true CN113808001A (zh) | 2021-12-17 |
Family
ID=78938431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111373159.4A Pending CN113808001A (zh) | 2021-11-19 | 2021-11-19 | 一种单系统同时支持多gpu工作的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113808001A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170180272A1 (en) * | 2012-10-03 | 2017-06-22 | Tracey Bernath | System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing |
CN107168782A (zh) * | 2017-04-24 | 2017-09-15 | 复旦大学 | 一种基于Spark与GPU的并行计算系统 |
CN110888737A (zh) * | 2019-11-18 | 2020-03-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持多GPU的Ringbuffer实现系统及方法 |
CN111737019A (zh) * | 2020-08-31 | 2020-10-02 | 西安芯瞳半导体技术有限公司 | 一种显存资源的调度方法、装置及计算机存储介质 |
-
2021
- 2021-11-19 CN CN202111373159.4A patent/CN113808001A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170180272A1 (en) * | 2012-10-03 | 2017-06-22 | Tracey Bernath | System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing |
CN107168782A (zh) * | 2017-04-24 | 2017-09-15 | 复旦大学 | 一种基于Spark与GPU的并行计算系统 |
CN110888737A (zh) * | 2019-11-18 | 2020-03-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持多GPU的Ringbuffer实现系统及方法 |
CN111737019A (zh) * | 2020-08-31 | 2020-10-02 | 西安芯瞳半导体技术有限公司 | 一种显存资源的调度方法、装置及计算机存储介质 |
Non-Patent Citations (1)
Title |
---|
黄坤: "基于GPU并行计算的石油数据管理系统研究", 《电子技术与软件工程》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3514689B1 (en) | Memory management method and apparatus | |
US10877766B2 (en) | Embedded scheduling of hardware resources for hardware acceleration | |
US8190864B1 (en) | APIC implementation for a highly-threaded x86 processor | |
US6006247A (en) | Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system | |
JP4612710B2 (ja) | トランザクション並行制御方法、データベース管理システム、およびプログラム | |
US20060206894A1 (en) | Method of scheduling jobs using database management system for real-time processing | |
US20130262776A1 (en) | Managing Coherent Memory Between an Accelerated Processing Device and a Central Processing Unit | |
EP2284703B1 (en) | Scheduling of tasks in a parallel computer system according to defined policies | |
US20040215860A1 (en) | Virtualization of a global interrupt queue | |
US8051422B2 (en) | Resource assignment method for query partioning based on processing cost of each partition | |
US20110219373A1 (en) | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform | |
US20070038818A1 (en) | Routing interrupts in a multi-node system | |
CN1530842A (zh) | 用于多处理器系统中的片上数据传输的方法和系统 | |
CN104239134A (zh) | 一种众核系统的任务管理方法和装置 | |
CN112256414A (zh) | 一种连接多种计算存储引擎的方法及系统 | |
CN116136783A (zh) | 多加速器框架中的高效加速器卸载 | |
CN112114983B (zh) | 一种基于共享内存的通信方法、装置和设备 | |
US20150186189A1 (en) | Managing array computations during programmatic run-time in a distributed computing environment | |
CN113051279A (zh) | 数据消息的存储方法、存储装置、电子设备及存储介质 | |
CN1851652A (zh) | 嵌入式sram操作系统进程优先级轮转调度的实现方法 | |
CN113808001A (zh) | 一种单系统同时支持多gpu工作的方法及系统 | |
CN1851651A (zh) | 嵌入式sram操作系统进程优先权调度的实现方法 | |
EP4318211A1 (en) | Method for inspecting code under weak memory order architecture, and corresponding device | |
CN113268356B (zh) | 基于LINUX系统的多GPU板卡bounding的系统、方法及介质 | |
US9329893B2 (en) | Method for resuming an APD wavefront in which a subset of elements have faulted |
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 |