一种单系统同时支持多GPU工作的方法及系统
文献发布时间:2023-06-19 13:45:04
技术领域
本发明涉及图形学及并行计算技术领域,特别是涉及车载芯片上的单系统同时支持多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工作的方法的步骤。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种单系统同时支持多GPU工作的方法及系统
- 一种支持多GPU的Ringbuffer实现系统及方法