一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种GPGPU资源分配方法、装置、设备及存储介质与流程

2023-01-15 06:31:11 来源:中国专利 TAG:

一种gpgpu资源分配方法、装置、设备及存储介质
技术领域
1.本发明涉及计算机技术领域,特别是涉及一种gpgpu资源分配方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.单任务性能和计算吞吐率是处理器性能的两个基本衡量标准。传统的通用微处理器,例如intel处理器,采用乱序执行、前瞻以及复杂的cache(缓存) 存储层次等来优化单任务中的指令。
3.级吞吐率,加速单任务的执行速度。而面向计算吞吐率的处理器设计则以牺牲单任务性能为代价,采用并行计算模式,提高整个应用的计算吞吐率。由于天生的并行计算架构,gpgpu(general purpose graphics processing unit,通用图形处理器)在数据处理速度要求高、吞吐量大的应用场景比cpu(central processing unit / processor,中央处理器)更具有优势,成为了高性能计算、大数据领域的重要加速单元。
[0004] 随着芯片制造工艺提升,单颗gpgpu芯片算力增大,单用户不能最大化gpgpu的使用率,造成算力浪费,因此需要采用虚拟化技术实现多用户并行使用。当前的方案是根据计算资源和内存资源平均分配为若干计算模块(例如nvidia的a100 gpu),虽然该方式一定程度上解决了gpgpu使用率问题,但该方式不能很好的支持不同类型的任务,存在有些任务的计算资源不充分,有些任务资源过剩。
[0005]
鉴于此,如何实现对gpgpu资源的动态分配成为本领域技术人员需要解决的问题。


技术实现要素:

[0006]
本发明实施例的目的是提供一种gpgpu资源分配方法、装置、电子设备及计算机可读存储介质,在使用过程中对资源核的分配情况进行动态调节,更好的满足用户需求,提升资源利用率。
[0007]
为解决上述技术问题,本发明实施例提供了一种gpgpu资源分配方法,包括:对已分配有资源核的用户进行状态检测;在所述用户为空闲用户的情况下,基于预设规则对所述用户的资源核进行回收;在所述用户为忙碌用户的情况下,基于所述用户的忙碌情况从未分配的各资源核中为所述用户增补预设数量的资源核。
[0008]
可选的,所述基于预设规则对所述用户的资源核进行回收,包括:获取所述用户的资源利用率;基于所述用户的当前资源核的数量及所述资源利用率,确定出回收数量;从所述用户的当前资源核中回收所述回收数量的资源核。
[0009]
可选的,所述获取所述用户的资源利用率,包括:获取所述用户的空闲时长和总时长;基于第一计算关系式及所述空闲时长和所述总时长,计算出资源利用率;所述第
一计算关系式为:u=1-t/t,其中:所述u表示资源利用率,所述t表示空闲时长,所述t表示从首次为所述用户分配资源核起至当前时刻的总时长。
[0010]
可选的,所述基于所述用户的当前资源核的数量及所述资源利用率,确定出回收数量,包括:基于第二计算关系式、所述用户的当前资源核的数量及所述资源利用率,计算出回收数量;所述第二计算关系式为:n=n*(1-u),其中,n表示回收数量,n表示当前资源核的数量。
[0011]
可选的,所述基于所述用户的忙碌情况从未分配的各资源核中为所述用户增补预设数量的资源核,包括:获取所述用户的资源利用率;基于所述资源利用率的大小判断是否为所述用户增补资源核;在确定为所述用户增补资源核的情况下,基于预设数量从所述未分配的各资源核中为所述用户分配相应的资源核。
[0012]
可选的,所述基于所述资源利用率的大小判断是否为所述用户增补资源核,包括:判断所述资源利用率是否达到预设百分比,若是,则确定为所述用户增补资源核,若否,则确定不为所述用户增补资源核。
[0013]
可选的,所述基于预设数量从所述未分配的各资源核中为所述用户分配相应的资源核,包括:判断所述未分配的资源核总量是否达到预设数量,若达到,则从所述未分配的各资源核中为所述用户分配所述预设数量的资源核;若未达到,则将所述未分配的各资源核全部分配给所述用户。
[0014]
可选的,还包括:接收到用户发送的资源申请请求;基于所述资源申请请求从未分配的各资源核中为所述用户分配资源核;将为所述用户分配的资源核的核标识添加至对应的用户配置列表中。
[0015]
可选的,还包括:通过状态寄存器对每个所述资源核的分配状态信息进行记录。
[0016]
可选的,已分配的资源核的状态寄存器记录的分配状态信息包括已分配、所分配用户的用户标识以及资源核的忙碌状态;未分配的资源核的状态寄存器记录的分配状态信息包括未分配。
[0017]
可选的,所述对已分配有资源核的用户进行状态检测,包括:对所述用户配置列表中的各个资源核的状态进行检测;在各所述资源核的状态均为空闲的情况,确定出所述用户为空闲用户;在各所述资源核中至少存在一个资源核的状态为忙碌的情况下,确定出所述用户为忙碌用户。
[0018]
可选的,所述基于所述资源申请请求从未分配的各资源核中为所述用户分配资源核,包括:基于所述资源申请请求,从未分配的各资源核中确定出初始数量个资源核分配给
所述用户;所述初始数量n0=n0/r个,所述n0为gpgpu的总资源核数,所述r为所支持的最大用户数量。
[0019]
可选的,在所述基于所述资源申请请求从未分配的各资源核中为所述用户分配资源核之后,还包括:对所述用户开始计时。
[0020]
本发明实施例还提供了一种gpgpu资源分配装置,包括:检测模块,用于对已分配有资源核的用户进行状态检测;回收模块,用于在所述用户为空闲用户的情况下,基于预设规则对所述用户的资源核进行回收;分配模块,用于在所述用户为忙碌用户的情况下,基于所述用户的忙碌情况从未分配的各资源核中为所述用户增补预设数量的资源核。
[0021]
可选的,所述回收模块,包括:第一获取单元,用于获取所述用户的资源利用率;第一确定单元,用于基于所述用户的当前资源核的数量及所述资源利用率,确定出回收数量;回收单元,用于从所述用户的当前资源核中回收所述回收数量的资源核。
[0022]
可选的,所述第一获取单元,包括:获取子单元,用于获取所述用户的空闲时长和总时长;计算子单元,用于基于第一计算关系式及所述空闲时长和所述总时长,计算出资源利用率;所述第一计算关系式为:u=1-t/t,其中:所述u表示资源利用率,所述t表示空闲时长,所述t表示从首次为所述用户分配资源核起至当前时刻的总时长。
[0023]
可选的,所述确定单元,用于:基于第二计算关系式、所述用户的当前资源核的数量及所述资源利用率,计算出回收数量;所述第二计算关系式为:n=n*(1-u),其中,n表示回收数量,n表示当前资源核的数量。
[0024]
可选的,所述分配模块,包括:第二获取单元,用于获取所述用户的资源利用率;判断单元,用于基于所述资源利用率的大小判断是否为所述用户增补资源核;分配单元,用于在确定为所述用户增补资源核的情况下,基于预设数量从所述未分配的各资源核中为所述用户分配相应的资源核。
[0025]
可选的,所述判断单元用于:判断所述资源利用率是否达到预设百分比,若是,则确定为所述用户增补资源核,若否,则确定不为所述用户增补资源核。
[0026]
可选的,所述分配单元用于:判断所述未分配的资源核总量是否达到预设数量,若达到,则从所述未分配的各资源核中为所述用户分配所述预设数量的资源核;若未达到,则将所述未分配的各资源核全部分配给所述用户。
[0027]
可选的,还包括:
接收模块,用于接收到用户发送的资源申请请求;所述分配模块,还用于基于所述资源申请请求从未分配的各资源核中为所述用户分配资源核;添加模块,用于将为所述用户分配的资源核的核标识添加至对应的用户配置列表中。
[0028]
可选的,还包括:记录模块,用于通过状态寄存器对每个所述资源核的分配状态进行记录。
[0029]
可选的,所述检测模块,包括:检测单元,用于对所述用户配置列表中的各个资源核的状态进行检测;第二确定单元,用于在各所述资源核的状态均为空闲的情况,确定出所述用户为空闲用户;在各所述资源核中至少存在一个资源核的状态为忙碌的情况下,确定出所述用户为忙碌用户。
[0030]
可选的,所述分配模块,还用于:基于所述资源申请请求,从未分配的各资源核中确定出初始数量个资源核分配给所述用户;所述初始数量n0=n0/r个,所述n0为gpgpu的总资源核数,所述r为所支持的最大用户数量。
[0031]
可选的,还包括:计时模块,用于在所述基于所述资源申请请求从未分配的各资源核中为所述用户分配资源核之后,对所述用户开始计时。
[0032]
本发明实施例还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上述所述gpgpu资源分配方法的步骤。
[0033]
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述gpgpu资源分配方法的步骤。
[0034]
本发明实施例提供了一种gpgpu资源分配方法、装置、电子设备及计算机可读存储介质,该方法包括:对已分配有资源核的用户进行状态检测;在用户为空闲用户的情况下,基于预设规则对用户的资源核进行回收;在用户为忙碌用户的情况下,基于用户的忙碌情况从未分配的各资源核中为用户增补预设数量的资源核。
[0035]
可见,本发明实施例中通过对已分配有资源核的用户的状态进行检测,在该用户为空闲用户的情况下,说明用户处理任务时资源核的数量过剩,此时可以根据预设规则对用户的资源核进行收回,在该用户为忙碌用户的情况下,说明用户处理任务时资源核可能会存在不足,此时可以根据用户的忙碌情况从未分配的各资源核中为该用户增补预设数量的资源核;也即,本发明基于用户状态对资源核的分配情况进行动态调节,更好的满足用户需求,提升资源利用率。
附图说明
[0036]
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施
例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]
图1为本发明实施例提供的一种gpgpu资源分配方法的流程示意图;图2为本发明实施例提供的另一种gpgpu资源分配方法的流程示意图;图3为本发明实施例提供的一种gpgpu资源分配架构设计示意图;图4为本发明实施例提供的一种gpgpu资源分配装置的结构示意图;图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
[0038]
本发明实施例提供了一种gpgpu资源分配方法、装置、电子设备及计算机可读存储介质,在使用过程中对资源核的分配情况进行动态调节,更好的满足用户需求,提升资源利用率。
[0039]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040]
需要说明的是,gpgpu(general purpose graphics processing unit,通用图形处理器)在数据处理速度要求高、吞吐量大的应用场景比cpu更具有优势,成为了高性能计算、大数据领域的重要加速单元。随着单颗gpgpu芯片算力增大,单个用户难以实现gpgpu的使用率最大化,导致算力浪费,因此有必要实现多用户并行使用。目前,通常是计算资源和内存资源平均分配为若干计算模块(例如nvidia的a100 gpu),并且分配完成后不再进行调整,这种分配方式会导致有些任务的计算资源不充分,有些任务资源过剩。基于此,本发明实施例针对这一问题,提出了一种gpgpu资源分配方法、装置、电子设备及计算机可读存储介质,通过对已分配有资源核的用户进行状态检测,在用户为空闲用户的情况下,基于预设规则对用户的资源核进行回收,在用户为忙碌用户的情况下,基于用户的忙碌情况从未分配的各资源核中为用户增补预设数量的资源核,从而实现对用户的资源核进行动态调节,更好地满足用户需求,提高资源利用率。
[0041]
请参照图1,图1为本发明实施例提供的一种gpgpu资源分配方法的流程示意图。该方法包括:s110:对已分配有资源核的用户进行状态检测;需要说明的是,gpgpu以单个核作为最小的切分单位,每个核对应t个物理线程,使用simt(单指令多线程)方式并行执行任务,本发明实例中将该核称为资源核,例如用户分配的资源核数量为c,则该用户的最大并行度为c*t。
[0042]
在实际应用中在为用户分配资源核后,可以对已分配有资源核的用户进行状态检测,具体可以定时对每个用户进行轮询检测用户的状态,确定用户是否忙碌。
[0043]
s120:在用户为空闲用户的情况下,基于预设规则对用户的资源核进行回收;具体的,在检测到用户处于空闲状态,则该用户为空闲用户,说明已分配给用户的资源核存在过剩的情况,为了避免资源浪费,可以对该用户当前的资源核进行一定的回收,被回收的资源核就成为未分配的资源核,以便其他用户的资源核不足时,从未分配的资源
核中为其他用户进行资源核的补充。
[0044]
s130:在用户为忙碌用户的情况下,基于用户的忙碌情况从未分配的各资源核中为用户增补预设数量的资源核。
[0045]
具体的,在检测到用户处于忙碌状态下,则该用户为忙碌用户,说明已分配给用户的资源核可能存在不足的情况,因此可以基于用户的忙碌情况从未分配的各资源核中选择一定的资源核对该用户进行资源核的增补,以更好的满足用户的使用需求。
[0046]
可见,本发明实施例中通过对已分配有资源核的用户的状态进行检测,在该用户为空闲用户的情况下,说明用户处理任务时资源核的数量过剩,此时可以根据预设规则对用户的资源核进行收回,在该用户为忙碌用户的情况下,说明用户处理任务时资源核可能会存在不足,此时可以根据用户的忙碌情况从未分配的各资源核中为该用户增补预设数量的资源核;也即,本发明基于用户状态对资源核的分配情况进行动态调节,更好的满足用户需求,提升资源利用率。
[0047]
在上述实施例的基础上,本发明实施例对技术方案做了进一步的优化,请参照图2,具体如下:s210:对已分配有资源核的用户进行状态检测;在实际应用中在为用户分配资源核后,可以对已分配有资源核的用户进行状态检测,具体可以定时对每个用户进行轮询检测用户的状态,确定用户是否忙碌。
[0048]
进一步的,上述s120中基于预设规则对用户的资源核进行回收的过程,具体可以包括:s220:在用户为空闲用户的情况下,获取用户的资源利用率;具体的,在检测到用户处于空闲状态,则该用户为空闲用户,说明已分配给用户的资源核存在过剩的情况,为了避免资源浪费,可以对该用户当前的资源核进行一定的回收,在对用户当前的资源核进行回收时,可以先获取用户的资源利用率。s230:基于用户的当前资源核的数量及资源利用率,确定出回收数量;具体的,在获取到用户的资源利用率后,可以进一步根据用户的资源利用率及用户的当前资源核的数量,来确定出要回收的资源核的数量。
[0049]
s240:从用户的当前资源核中回收该回收数量的资源核。
[0050]
需要说明的是,本发明实施例中在需要对用户当前的资源核进行回收,且确定出回收数量后,可以从用户的当前资源核中相应的数量的资源核进行回收。
[0051]
更进一步的,上述s210中获取用户的资源利用率的过程,具体可以包括:获取用户的空闲时长和总时长;基于第一计算关系式及空闲时长和总时长,计算出资源利用率;第一计算关系式为:u=1-t/t,其中:u表示资源利用率,t表示空闲时长,t表示从首次为用户分配资源核起至当前时刻的总时长。
[0052]
可以理解的是,总时长可以从为用户初次分配资源核算起,也即在初次为用户分配资源核后开始计时,从而得到总时长,空闲时长为用户的资源核在最后一次忙碌后到当前时间的时长,从而可以根据用户的资源核空闲时长和总时长及第一计算关系式,计算出该用户的资源核的资源利用率,然后在基于该资源利用率及用户的当前资源核的数量确定出回收数量,并基于该回收数量进行资源核的回收。
[0053]
更进一步的,上述s220中基于用户的当前资源核的数量及资源利用率,确定出回收数量的过程,具体可以包括:基于第二计算关系式、用户的当前资源核的数量及资源利用率,计算出回收数量;第二计算关系式为:n=n*(1-u),其中,n表示回收数量,n表示当前资源核的数量。
[0054]
需要说明的是,本发明实施例中在检测到用户处于空闲状态下,可以获取用户的资源利用率,基于用户的当前资源核的数量及资源利用率,确定出回收数量,然后从用户的当前资源核中回收该回收数量的资源核。其中,具体可以基于第二计算关系式n=n*(1-u)、用户的当前资源核的数量以及用户的资源利用率,计算出回收数量,然后在基于该回收数量对用户的当前资源核进行一定数量的资源核回收,u表示资源利用率,可以基于上述第一计算关系式u=1-t/t计算得到。
[0055]
s250:在用户为忙碌用户的情况下,获取用户的资源利用率;可以理解的是,在检测到用户处于忙碌状态下,则该用户为忙碌用户,说明已分配给用户的资源核可能存在不足的情况,因此可以基于用户的忙碌情况从未分配的各资源核中选择一定的资源核对该用户进行资源核的增补,此时可以获取用户的资源利用率。
[0056]
s260:基于资源利用率的大小判断是否为用户增补资源核;具体的,在获取到用户的资源利用率后,可以基于该资源利用率的大小判断是否需要为该用户增补资源核。
[0057]
s270:在确定为用户增补资源核的情况下,基于预设数量从未分配的各资源核中为用户分配相应的资源核。
[0058]
需要说明的是,在基于资源利用率的大小确定出需要为用户增补资源核的情况下,可以基于预设数量从未分配的各资源核中选择一定量的资源核分配给该用户。
[0059]
具体的,本发明实施例中的该资源利用率可以基于第一计算关系式及用户的空闲时长和总时长计算得到,第一计算关系式为u=1-t/t,u表示资源利用率,t表示空闲时长,t表示从首次为用户分配资源核起至当前时刻的总时长。在计算出用户的资源利用率后,再基于资源利用率的大小进一步确定是否需要为用户增补资源核,也即进一步确定用户的当前资源核是否能够满足用户需求,在确定出需要为用户增补资源核的情况下,再根据预设数量从未分配的所有资源核中确定出一定量的资源核分配该用户,从而实现对用户的资源核进行增补,以更好的满足用户的使用需求。
[0060]
更进一步的,上述s260中基于资源利用率的大小判断是否为用户增补资源核的过程,具体可以包括:判断资源利用率是否达到预设百分比,若是,则确定为用户增补资源核,若否,则确定不为用户增补资源核。
[0061]
可以理解的是,在实际应用中可以预先设置一个百分比,在用户的资源利用率达到该预设百分比的情况下,说明用户的当前资源核已不能够满足用户的使用需求,需要为该用户增补资源核;在用户的资源利用率小于该预设百分比的情况下,说明该用户的当前资源核还能够满足用户的需求,还不需要为该用户增补资源核。
[0062]
例如,预设百分比可以为100%,在用户的资源利用率达到100%时,说明需要为该用户增补资源核,在用户的资源利用率低于100%时,说明不需要为该用户增补资源核。当然在实际应用中该预设百分比也可以为其他数值,例如90%或95%等,具体数值可以根据实际需
要进行确定,本发明实施例对此不做特殊限定,能够实现本发明的目的即可。
[0063]
更进一步的,上述s270中基于预设数量从未分配的各资源核中为用户分配相应的资源核的过程,具体可以包括:判断未分配的资源核总量是否达到预设数量,若达到,则从未分配的各资源核中为用户分配预设数量的资源核;若未达到,则将未分配的各资源核全部分配给用户。
[0064]
需要说明的是,本发明实施例中可以根据未分配的资源核总量来进一步确定该未分配的资源核总量是否达到预设数量,若该未分配的资源核总量达到了预设数量,则可以直接从未分配的资源核中确定出预设数量的资源核分配给该用户,若该未分配的资源核总量未达到该预设数量,则可以直接将所有未分配的资源核全部分配给该用户,以更好的满足用户需求。其中,预设数量的具体数值可以根据实际需要进行确定,本发明实施例对此不做特殊限定。
[0065]
进一步的,该方法还可以包括:接收到用户发送的资源申请请求;基于资源申请请求从未分配的各资源核中为用户分配资源核;将为用户分配的资源核的核标识添加至对应的用户配置列表中。
[0066]
需要说明的是,在实际应用中用户在需要资源时,可以发送资源申请请求,系统在接收到用户发送的资源申请请求后,其中,资源申请请求可以包括用户id信息等,可以为该用户进行首次资源核的分配,具体可以根据该资源申请请求从未分配的各资源核中为该用户分配一定量的资源核,然后将所分配的各个资源核的核标识添加至对应的用户配置列表中。另外,还可以对用户开始计时,以便后续确定从首次为用户分配资源核起至当前时刻的总时长。
[0067]
进一步的,上述基于资源申请请求从未分配的各资源核中为用户分配资源核的过程,具体可以包括:基于资源申请请求,从未分配的各资源核中确定出初始数量个资源核分配给用户;初始数量n0=n0/r个,n0为gpgpu的总资源核数,r为所支持的最大用户数量。
[0068]
需要说明的是,本发明实施例中可以预先针对gpgpu设置其所支持的最大用户数量,然后在初次为用户分配资源核时,可以预先将gpgpu的所有资源核均分为r份,也即每份的数量可以为n0=n0/r个,在接收到用户的资源申请请求时,可以从未分配的资源核中分配n0个资源核给该用户,并对所分配的各个资源核各自的状态寄存器的分配信息进行修改,将所分配的各资源核的核标识添加至用户的用户配置列表中。进一步的,该方法还可以包括:通过状态寄存器对每个资源核的分配状态进行记录。
[0069]
需要说明的是,本发明实施例中可以针对每个资源核配置一个状态寄存器,通过状态寄存器记录对应的资源核的分配状态信息,以便对资源核的状态进行监控。
[0070]
更进一步的,已分配的资源核的状态寄存器记录的分配状态信息包括已分配、所分配用户的用户标识以及资源核的忙碌状态;未分配的资源核的状态寄存器记录的分配状态信息包括未分配。
[0071]
具体的,本发明实施例中在资源核已经分配给某个用户后,该资源核的状态寄存器所记录的分配状态信息可以包括分配状态为已分配,所分配用户的用户标识(例如用户
id)以及该资源核的忙碌状态(空闲或忙碌)。在资源核未分配的情况下,该资源核的状态寄存器记录的分配状态信息包括分配状态为未分配。当然,在未分配的资源核分配给某个用户后,与该资源核的状态寄存器的分配状态信息也随之更新,同样在从某个用户的资源核中回收的资源核的状态寄存器的分配状态信息也随之更新为未分配。
[0072]
进一步的,上述对已分配有资源核的用户进行状态检测的过程,具体可以包括:对用户配置列表中的各个资源核的状态进行检测;在各资源核的状态均为空闲的情况,确定出用户为空闲用户;在各资源核中至少存在一个资源核的状态为忙碌的情况下,确定出用户为忙碌用户。
[0073]
需要说明的是,本发明实施例中可以为每个用户分配一个用户配置列表,并且在为用户分配了资源核后,将所分配的各资源核的核标识添加至对应的用户配置列表中,在后续对用户进行状态检测时,可以通过对用户配置列表中的各个核标识对应的资源核的状态进行检测,若检测出一个或多个资源核为忙碌的状态,则说明该用户为忙碌用户,若检测出所有的资源核的状态均为空闲状态,则说明该用户为空闲用户。
[0074]
另外,在实际应用中还可以为每个用户配置对应的用户状态寄存器,通过用户状态寄存器来标识用户的状态,例如在系统确定出用户为忙碌状态时,将用户状态寄存器值改为0,在确定出用户为空闲状态时,将用户状态寄存器值改为1。
[0075]
还需要说明的是,如图3所示,gpgpu中的处理器模块中包括多个核,如图3中的核1、核2、核3等,针对每个核的详细介绍请参照图3中的处理器核心部分的介绍,每个核有独立的指令和数据cache,每个核有多个线程,且每个线程有独立的寄存器组,使得核中的每个线程可以并行工作。与多周期cpu的分段方式相同,把指令细分为5段,分别为取指、译码、执行、访存存储器、写回。具体的,取指阶段:从ddr或指令cache取指并更新pc,译码阶段:解析指令,执行阶段:alu(arithmetic and logic unit,中央处理器执行单元)计算和比较器运行访存阶段:根据指令从ddr/数据cache指定位置读取数据,写回阶段(wb):将结果从存储器写回通用寄存器。其中,

表示线程和指令信息,

表示线程和解码指令信息,

表示线程和数据信息,

表示线程和结果信息。
[0076]
具体的,gpgpu的dma(direct memory access,直接存储器访问)引擎使用fifo(firstin first out,先进先出)储存描述符列表条目,每个描述符都有一个从描述符id,描述符id可以从 0到127。每个描述符包含source address(源地址)、destination address(目的地址)、要移动的数据大小、源地址指定要被dma移出数据的位置、目的地址指定要被dma移入的数据的位置等信息。当gpgpu分成多个计算单元时,每个计算单元可以包括多个资源核,一个计算单元可以分配给一个用户,当然计算单元中资源核的数量可以动态调整。通过写描述符来进行dma操作。首先,待搬运内存的计算单元dma将描述符写入描述符表,该描述符表为先进先出的fifo结构,若当前有在执行的dma操作,则等待;在当前没有正在执行的dma时,dma描述符fifo出列,触发对应计算单元的中断操作,计算单元根据之前写入的描述符,写dma描述符控制器中的寄存器来启动dma,从而完成内存搬运工作。
[0077]
在上述实施例的基础上,本发明实施例还提供了一种gpgpu资源分配装置,请参照图4。该装置包括:检测模块11,用于对已分配有资源核的用户进行状态检测;
需要说明的是,gpgpu以单个核作为最小的切分单位,每个核对应t个物理线程,使用simt(单指令多线程)方式并行执行任务,本发明实例中将该核称为资源核,例如用户分配的资源核数量为c,则该用户的最大并行度为c*t。在实际应用中在为用户分配资源核后,可以通过检测模块11对已分配有资源核的用户进行状态检测,具体可以定时对每个用户进行轮询检测用户的状态,确定用户是否忙碌。
[0078]
回收模块12,用于在用户为空闲用户的情况下,基于预设规则对用户的资源核进行回收;具体的,在检测到用户处于空闲状态,则该用户为空闲用户,说明已分配给用户的资源核存在过剩的情况,为了避免资源浪费,可以通过回收模块12对该用户当前的资源核进行一定的回收,被回收的资源核就成为未分配的资源核,以便其他用户的资源核不足时,从未分配的资源核中为其他用户进行资源核的补充。
[0079]
分配模块13,用于在用户为忙碌用户的情况下,基于用户的忙碌情况从未分配的各资源核中为用户增补预设数量的资源核。
[0080]
具体的,本发明实施例中的在检测到用户处于忙碌状态下,则该用户为忙碌用户,说明已分配给用户的资源核可能存在不足的情况,因此可以通过分配模块13基于用户的忙碌情况从未分配的各资源核中选择一定的资源核对该用户进行资源核的增补,以更好的满足用户的使用需求。
[0081]
进一步的,上述回收模块12,包括:第一获取单元,用于获取用户的资源利用率;第一确定单元,用于基于用户的当前资源核的数量及资源利用率,确定出回收数量;回收单元,用于从用户的当前资源核中回收该回收数量的资源核。
[0082]
可以理解的是,本发明实施例中具体可以通过第一获取单元获取用户的资源利用率,进一步通过第一确定单元根据用户的资源利用率及用户的当前资源核的数量,来确定出要回收的资源核的数量,然后再通过回收单元从用户的当前资源核中相应的数量的资源核进行回收。
[0083]
进一步的,上述第一获取单元,包括:获取子单元,用于获取用户的空闲时长和总时长;计算子单元,用于基于第一计算关系式及空闲时长和总时长,计算出资源利用率;第一计算关系式为:u=1-t/t,其中:u表示资源利用率,t表示空闲时长,t表示从首次为用户分配资源核起至当前时刻的总时长。
[0084]
更进一步的,上述确定单元,具体可以用于:基于第二计算关系式、用户的当前资源核的数量及资源利用率,计算出回收数量;第二计算关系式为:n=n*(1-u),其中,n表示回收数量,n表示当前资源核的数量。
[0085]
进一步的,上述分配模块13,可以包括:第二获取单元,用于获取用户的资源利用率;判断单元,用于基于资源利用率的大小判断是否为用户增补资源核;分配单元,用于在确定为用户增补资源核的情况下,基于预设数量从未分配的各资源核中为用户分配相应的资源核。
[0086]
需要说明的是,在检测到用户处于忙碌状态下,可以基于用户的忙碌情况从未分配的各资源核中选择一定的资源核对该用户进行资源核的增补,以更好的满足用户的使用需求。具体的,可以通过第二获取单元获取用户的资源利用率,该资源利用率可以基于第一计算关系式及用户的空闲时长和总时长计算得到,第一计算关系式为u=1-t/t,u表示资源利用率,t表示空闲时长,t表示从首次为用户分配资源核起至当前时刻的总时长。在计算出用户的资源利用率后,再通过判断单元基于资源利用率的大小进一步确定是否需要为用户增补资源核,也即进一步确定用户的当前资源核是否能够满足用户需求,在确定出需要为用户增补资源核的情况下,再通过分配单元根据预设数量从未分配的所有资源核中确定出一定量的资源核分配该用户,从而实现对用户的资源核进行增补,以更好的满足用户的使用需求。
[0087]
进一步的,上述判断单元具体可以用于:判断资源利用率是否达到预设百分比,若是,则确定为用户增补资源核,若否,则确定不为用户增补资源核。
[0088]
在实际应用中可以预先设置一个百分比,在用户的资源利用率达到该预设百分比的情况下,说明用户的当前资源核已不能够满足用户的使用需求,需要为该用户增补资源核;在用户的资源利用率小于该预设百分比的情况下,说明该用户的当前资源核还能够满足用户的需求,还不需要为该用户增补资源核。
[0089]
进一步的,上述分配单元具体可以用于:判断未分配的资源核总量是否达到预设数量,若达到,则从未分配的各资源核中为用户分配预设数量的资源核;若未达到,则将未分配的各资源核全部分配给用户。
[0090]
本发明实施例中可以根据未分配的资源核总量来进一步确定该未分配的资源核总量是否达到预设数量,若该未分配的资源核总量达到了预设数量,则可以直接从未分配的资源核中确定出预设数量的资源核分配给该用户,若该未分配的资源核总量未达到该预设数量,则可以直接将所有未分配的资源核全部分配给该用户,以更好的满足用户需求。其中,预设数量的具体数值可以根据实际需要进行确定,本发明实施例对此不做特殊限定。
[0091]
进一步的,该装置还可以包括:接收模块,用于接收到用户发送的资源申请请求;分配模块,还用于基于资源申请请求从未分配的各资源核中为用户分配资源核;添加模块,用于将为用户分配的资源核的核标识添加至对应的用户配置列表中。
[0092]
可以理解的是,在实际应用中用户在需要资源时,可以发送资源申请请求,通过接收模块接收到用户发送的资源申请请求后,其中,资源申请请求可以包括用户id信息等,可以为该用户进行首次资源核的分配,具体可以通过分配模块根据该资源申请请求从未分配的各资源核中为该用户分配一定量的资源核,然后再通过添加模块将所分配的各个资源核的核标识添加至对应的用户配置列表中。同时,还可以通过计时模块对用户开始计时进一步的,该装置还可以包括:记录模块,用于通过状态寄存器对每个资源核的分配状态进行记录。
[0093]
本发明实施例中可以针对每个资源核配置一个状态寄存器,通过状态寄存器记录对应的资源核的分配状态,以便对资源核的状态进行监控。
[0094]
具体的,本发明实施例中在资源核已经分配给某个用户后,该资源核的状态寄存
器所记录的分配状态信息可以包括分配状态为已分配,所分配用户的用户标识(例如用户id)以及该资源核的忙碌状态(空闲或忙碌)。在资源核未分配的情况下,该资源核的状态寄存器记录的分配状态信息包括分配状态为未分配。当然,在未分配的资源核分配给某个用户后,与该资源核的状态寄存器的分配状态信息也随之更新,同样在从某个用户的资源核中回收的资源核的状态寄存器的分配状态信息也随之更新为未分配。
[0095]
进一步的,上述检测模块11,可以包括:检测单元,用于对用户配置列表中的各个资源核的状态进行检测;第二确定单元,用于在各资源核的状态均为空闲的情况,确定出用户为空闲用户;在各资源核中至少存在一个资源核的状态为忙碌的情况下,确定出用户为忙碌用户。
[0096]
本发明实施例中可以为每个用户分配一个用户配置列表,并且在为用户分配了资源核后,将所分配的各资源核的核标识添加至对应的用户配置列表中,在后续对用户进行状态检测时,可以通过对用户配置列表中的各个核标识对应的资源核的状态进行检测,若检测出一个或多个资源核为忙碌的状态,则说明该用户为忙碌用户,若检测出所有的资源核的状态均为空闲状态,则说明该用户为空闲用户。
[0097]
进一步的,上述分配模块,还可以用于:基于资源申请请求,从未分配的各资源核中确定出初始数量个资源核分配给用户;初始数量n0=n0/r个,n0为gpgpu的总资源核数,r为所支持的最大用户数量。
[0098]
进一步的,该装置还可以包括:计时模块,用于在基于资源申请请求从未分配的各资源核中为用户分配资源核之后,对用户开始计时。
[0099]
需要说明的是,本发明实施例中提供的gpgpu资源分配装置具有与上述实施例中所涉及到的gpgpu资源分配方法相同的有益效果,并且对于本发明实施例中所涉及到的gpgpu资源分配方法的具体介绍请参照上述实施例,本发明在此不再赘述。
[0100]
在上述实施例的基础上,请参照图5,本发明实施例还提供了一种电子设备,包括:存储器20,用于存储计算机程序;处理器21,用于执行计算机程序时实现如上述gpgpu资源分配方法的步骤。
[0101]
需要说明的是,本发明实施例中的处理器21具体可以用于实现对已分配有资源核的用户进行状态检测;在用户为空闲用户的情况下,基于预设规则对用户的资源核进行回收;在用户为忙碌用户的情况下,基于用户的忙碌情况从未分配的各资源核中为用户增补预设数量的资源核。
[0102]
另外,本发明实施例中提供的电子设备具有与上述实施例中所涉及到的gpgpu资源分配方法相同的有益效果,并且对于本发明实施例中所涉及到的gpgpu资源分配方法的具体介绍请参照上述实施例,本发明在此不再赘述。
[0103]
具体的,在实际应用中,本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
[0104]
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处
理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
[0105]
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的gpgpu资源分配方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于设定的偏移量等。
[0106]
在一些实施例中,电子设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
[0107]
本领域技术人员可以理解,图5中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
[0108]
可以理解的是,如果上述实施例中的gpgpu资源分配方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、磁碟或者光盘等各种可以存储程序代码的介质。
[0109]
基于此,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述gpgpu资源分配方法的步骤。
[0110]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0111]
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0112]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0113]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其他形式的存储介质中。
[0114]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献