CN117455750B - 显存管理方法、装置、系统、介质及设备 - Google Patents

显存管理方法、装置、系统、介质及设备 Download PDF

Info

Publication number
CN117455750B
CN117455750B CN202311800340.8A CN202311800340A CN117455750B CN 117455750 B CN117455750 B CN 117455750B CN 202311800340 A CN202311800340 A CN 202311800340A CN 117455750 B CN117455750 B CN 117455750B
Authority
CN
China
Prior art keywords
video memory
space
target video
memory space
pool
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
CN202311800340.8A
Other languages
English (en)
Other versions
CN117455750A (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.)
Xi'an Xintong Semiconductor Technology Co ltd
Original Assignee
Xi'an Xintong Semiconductor Technology Co 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 Xi'an Xintong Semiconductor Technology Co ltd filed Critical Xi'an Xintong Semiconductor Technology Co ltd
Priority to CN202311800340.8A priority Critical patent/CN117455750B/zh
Publication of CN117455750A publication Critical patent/CN117455750A/zh
Application granted granted Critical
Publication of CN117455750B publication Critical patent/CN117455750B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本公开涉及计算机领域,涉及一种显存管理方法、装置、系统、介质及设备,该方法包括:响应于上层应用申请显存空间的请求,确定上层应用对所申请显存空间的操作权限;根据操作权限,确定用于创建所申请显存空间的目标显存池,并指示显卡在目标显存池创建目标显存空间;其中,目标显存池为可见显存池或者不可见显存池;在操作权限非不可读写权限、且目标显存池为不可见显存池的情况下,在主存中创建对应目标显存空间的中转存储空间,中转存储空间用于通过直接内存访问DMA中转上层应用对目标显存空间的操作数据;返回目标显存空间的句柄给上层应用。由此在访问显存空间受限时,使得所有显存空间可以得到利用,提高了显存空间利用率。

Description

显存管理方法、装置、系统、介质及设备
技术领域
本公开涉及计算机技术领域,具体地,涉及一种显存管理方法、装置、系统、介质及设备。
背景技术
随着信息技术的不断发展,AI(Artificial Intelligence,人工智能)深度学习技术的出现,使计算机的使用更加智能化。在设备中使用AI深度学习技术可以使数据处理更加智能化。进一步地,为了提高深度学习的速度,在深度学习领域中往往还采用GPU(Graphics Processing Unit,图形处理器)对深度学习进行加速。为了满足深度学习加速需求,GPU所部署的独立显卡往往设计有相对较大的显存空间。
由于技术规范或者硬件设计等相关原因,在一些CPU(Central Processing Unit,中央处理器)平台上,BIOS(Basic Input Output System,基本输入输出系统)给PCI(Peripheral Component Interconnect,外设组件互联标准)BAR(Base AddressRegister,基址寄存器)配置的可分配空间受到限制,这使得显卡这样的PCI设备能够被访问的显存空间受限。在这种场景下CPU在访问显存的时候只能在有限的空间内进行操作,而无法访问全部显存,从而导致不能将全部显存空间有效利用,造成空间浪费。
发明内容
本公开的目的是提供一种显存管理方法、装置、系统、介质及设备,在访问显存空间受限时,使得所有显存空间可以得到利用,提高了显存空间利用率。
为了实现上述目的,本公开实施例的第一方面提供一种显存管理方法,所述方法包括:
响应于上层应用申请显存空间的请求,确定所述上层应用对所申请显存空间的操作权限;
根据所述操作权限,确定用于创建所述所申请显存空间的目标显存池,并指示显卡在所述目标显存池创建目标显存空间,其中,所述目标显存池为可见显存池或者不可见显存池;
在所述操作权限非不可读写权限、且所述目标显存池为所述不可见显存池的情况下,在主存中创建对应所述目标显存空间的中转存储空间,所述中转存储空间用于通过直接内存访问DMA中转所述上层应用对所述目标显存空间的操作数据;
返回所述目标显存空间的句柄给所述上层应用。
可选地,所述根据所述操作权限,确定用于创建所述所申请显存空间的目标显存池,包括:
当所述操作权限为只读权限或者读写权限时,在所述所申请显存空间小于所述可见显存池的空闲空间的情况下,确定用于创建所述所申请显存空间的目标显存池为所述可见显存池,或者,在所述所申请显存空间大于等于所述可见显存池的空闲空间的情况下,确定用于创建所述所申请显存空间的目标显存池为所述不可见显存池。
可选地,所述根据所述操作权限,确定用于创建所述所申请显存空间的目标显存池,包括:
当所述操作权限为不可读写权限时,确定用于创建所述所申请显存空间的目标显存池为所述不可见显存池。
可选地,所述上层应用对所述所申请显存空间的操作权限包括只读权限、读写权限以及不可读写权限,相应地,所述上层应用对所述目标显存空间的操作包括读取操作以及写入操作;
在所述目标显存池为所述不可见显存池的情况下,所述方法还包括:
响应于所述上层应用对所述目标显存空间的读取操作,通过DMA获取所述目标显存空间中对应的读取数据,将所述读取数据写入所述中转存储空间,并将所述中转存储空间中的读取数据返回给所述上层应用;或者,
响应于所述上层应用将计算数据写入所述目标显存空间的写入操作,将所述计算数据写入中转存储空间,并通过DMA将所述中转存储空间中的计算数据搬运到所述目标显存空间。
可选地,在所述目标显存池为所述可见显存池的情况下,所述方法还包括:
响应于所述上层应用对所述目标显存空间的读取操作,将所述目标显存空间中对应的读取数据返回给所述上层应用;或者,
响应于所述上层应用将计算数据写入所述目标显存空间的写入操作,将所述计算数据写入所述目标显存空间。
可选地,在返回所述目标显存空间的句柄给所述上层应用之后,所述方法还包括:
接收上层应用发送的所述目标显存空间的句柄,确定所述主存中是否存在对应所述目标显存空间的中转存储空间;
在确定所述主存中存在对应所述目标显存空间的中转存储空间的情况下,将所述中转存储空间映射到主存,得到第一映射地址,或者,在确定所述主存中不存在对应所述目标显存空间的中转存储空间的情况下,将所述目标显存空间映射到主存,得到第二映射地址;
其中,所述第一映射地址用于操作所述中转存储空间,所述第二映射地址用于操作所述目标显存空间。
本公开实施例的第二方面提供一种显存管理装置,所述装置包括:
响应模块,用于响应于上层应用申请显存空间的请求,确定所述上层应用对所申请显存空间的操作权限;
确定模块,用于根据所述操作权限,确定用于创建所述所申请显存空间的目标显存池,并指示显卡在所述目标显存池创建目标显存空间,其中,所述目标显存池为可见显存池或者不可见显存池;
创建模块,用于在所述操作权限非不可读写权限、且所述目标显存池为所述不可见显存池的情况下,在主存中创建对应所述目标显存空间的中转存储空间,所述中转存储空间用于通过直接内存访问DMA中转所述上层应用对所述目标显存空间的操作数据;
返回模块,用于返回所述目标显存空间的句柄给所述上层应用。
本公开实施例的第三方面提供一种显存管理系统,所述系统包括中央处理器CPU和显卡,所述显卡的显存包括可见显存池和不可见显存池,所述可见显存池为基址寄存器BAR映射到所述显存的存储空间,所述不可见显存池为所述显存中除了所述可见显存池以外的存储空间;
所述CPU用于响应于上层应用申请显存空间的请求,确定所述上层应用对所申请显存空间的操作权限,根据所述操作权限确定用于创建所述所申请显存空间的目标显存池,并指示显卡在所述目标显存池创建目标显存空间,以及在所述操作权限非不可读写权限、且所述目标显存池为所述不可见显存池的情况下,在主存中创建对应所述目标显存空间的中转存储空间,所述中转存储空间用于通过直接内存访问DMA中转所述上层应用对所述目标显存空间的操作数据;
所述显卡用于响应所述指示,在所述目标显存池中创建所述目标显存空间;
所述CPU用于返回所述目标显存空间的句柄给所述上层应用。
本公开实施例的第四方面提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面中任一项所提供的显存管理方法的步骤。
本公开实施例的第五方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面中任一项所提供的显存管理方法的步骤。
通过上述技术方案,根据上层应用对所申请显存空间的操作权限,确定在可见显存池或者不可见显存池创建目标显存空间。由于访问不可见显存池受限,因此本公开实施例在上层应用对所申请显存空间的操作权限非不可读写权限、且目标显存池为不可见显存池的情况下,在主存中创建对应目标显存空间的中转存储空间。这样,可以基于直接内存访问DMA技术,通过中转存储空间中转上层应用对目标显存空间的操作数据,从而使得所有显存空间可以得到利用,提高了显存空间利用率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种PCI地址空间示意图。
图2是根据一示例性实施例示出的一种显存管理方法的流程图。
图3是根据另一示例性实施例示出的一种显存管理方法的流程图。
图4是根据一示例性实施例示出的一种显存管理装置的框图。
图5是根据一示例性实施例示出的一种显存管理系统的框图。
图6是根据一示例性实施例示出的一种显存布局的示意图。
图7是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
由于技术规范或者硬件设计等相关原因,CPU在访问显存的时候只能在有限的空间内进行操作,而无法访问全部显存。其中,CPU所能访问的空间是由PCI BAR分配的,参照图1,图1是根据一示例性实施例示出的一种PCI地址空间示意图。
如图1所示,CPU通过PCI总线访问显存空间,由于PCI BAR的位宽限制等,通过BAR映射到显存的存储空间大小受到限制,例如最大只能分配出来512M或者128M空间。这部分分配出来的空间作为可见区域(Visible)显存,并且可以被CPU访问,剩余无法分配的空间作为不可见区域(Invisible)显存,并且不可被CPU访问。
其中,可见区域显存和不可见区域显存通常有供上层应用动态申请的显存池,也即对应可见区域显存的可见显存池和对应不可见区域的不可见显存池。然而,CPU只能访问可见区域显存,而无法访问不可见区域显存,由此无法操作不可见显存池中的数据,从而导致不能将全部显存空间有效利用,造成空间浪费,甚至导致显卡不能正常工作等问题。
有鉴于此,本公开实施例提供一种显存管理方法、装置、系统、介质及设备,忽略BIOS或者CPU平台限制,根据上层应用对所申请显存空间的操作权限,确定在可见显存池或者不可见显存池创建目标显存空间,并通过直接内存访问(DMA,Direct Memory Access)操作不可见显存池的数据,间接使得所有显存空间可以得到利用,提高了显存空间利用率。
参照图2,图2是根据一示例性实施例示出的一种显存管理方法的流程图。如图2所示,该显存管理方法可以应用于计算设备,例如手机、平板、以及电脑等。本公开实施例提供的显存管理方法可以包括以下步骤。
在步骤S201中,响应于上层应用申请显存空间的请求,确定上层应用对所申请显存空间的操作权限。
其中,上层应用可以是具有GPU计算需求的应用程序,上层应用可以通过相关接口发起申请显存空间的请求,并通过所申请显存空间完成相应的计算任务。上层应用申请显存空间的请求可以包括所申请显存空间的大小,该所申请显存空间的大小可以由上层应用根据需求而定,本公开对此不做具体限定。
应说明的是,可以预先和上层应用约定,使得上层应用在申请显存空间时传入对所申请显存空间的操作权限,由此上层应用申请显存空间的请求中还可以包括对所申请显存空间的操作权限。
在步骤S202中,根据操作权限,确定用于创建所申请显存空间的目标显存池,并指示显卡在目标显存池创建目标显存空间,其中,目标显存池为可见显存池或者不可见显存池。
其中,可见显存池可以为BAR映射到显存的存储空间,可以被上层应用访问,不可见显存池可以为显存中除了可见显存池以外的存储空间,该存储空间无法直接被上层应用访问。
应当理解的是,上层应用对所申请显存空间的操作权限可以表明上层应用是否会操作所申请显存空间,根据上层应用对所申请显存空间的操作与否,可以确定在可见显存池或者在不可见显存池创建目标显存空间。
示例地,当操作权限为不可读写权限时,可以确定上层应用不会操作所申请显存空间,由此可以直接在不可见显存池创建目标显存空间,从而有效利用不可见显存池,提高了显存空间利用率。
在步骤S203中,在操作权限非不可读写权限、且目标显存池为不可见显存池的情况下,在主存中创建对应目标显存空间的中转存储空间,中转存储空间用于通过直接内存访问DMA中转上层应用对目标显存空间的操作数据。
其中,主存可以指主存储器(Main memory),主存作为计算机硬件的重要部件,可以用于存放CPU指令和数据,并且由CPU直接随机存取。
不难理解的是,当操作权限非不可读写权限、且目标显存池为不可见显存池的情况下,可以确定上层应用可以操作所申请显存空间。然而,上层应用无法直接访问不可见显存池,对此,本公开实施例在主存中创建对应目标显存空间的中转存储空间。这样,可以基于DMA技术,通过中转存储空间中转上层应用对不可见显存池的操作数据,从而使得所有显存空间可以得到利用,提高了显存空间利用率。
在步骤S204中,返回目标显存空间的句柄给上层应用。
其中,目标显存空间的句柄可以用于唯一标识目标显存空间,从而用于上层应用操作目标显存空间。
由此,当接收到上层应用发送的句柄后,可以确定该句柄标识的目标显存空间,并确定主存中是否存在对应目标显存空间的中转存储空间。
示例地,接收上层应用发送的目标显存空间的句柄,确定主存中是否存在对应目标显存空间的中转存储空间。
在一实施例中,确定主存中存在对应目标显存空间的中转存储空间。在此情况下,将中转存储空间映射到主存,得到第一映射地址,该第一映射地址用于操作中转存储空间。由此,可以基于第一映射地址和中转存储空间通信,从中转存储空间中读取数据或者向中转存储空间写入数据。
在另一实施例中,确定主存中不存在对应目标显存空间的中转存储空间。在此情况下,将目标显存空间映射到主存,得到第二映射地址,该第二映射地址用于操作目标显存空间。由此,可以基于第二映射地址和目标显存空间通信,从目标显存空间中读取数据或者向目标显存空间写入数据。
此外还应说明的是,可以预先配置有默认操作权限,例如默认为非不可读写权限。在此基础上,在上层应用申请显存空间且未传入对所申请显存空间的操作权限时,默认该上层应用对所申请显存空间的操作权限为非不可读写权限,并按照非不可读写权限的处理逻辑,在可见显存池创建相应的目标显存空间,或者,在不可见显存池创建相应的目标显存空间以及在主存中创建中转存储空间。
由此在目标显存池为不可见显存池的情况下,当上层应用对目标显存空间进行操作时,通过中转存储空间中转上层应用对目标显存空间的操作数据。当在预设时长后上层应用仍未对所申请显存空间进行操作或者接收到上层应用指示不对所申请显存空间进行操作的指令时,销毁创建的中间存储空间。
不难理解的是,在对本公开实施例适应性修改后,还可以预先配置默认操作权限为不可读写权限,此处不再赘述。
可选地,上层应用对所申请显存空间的操作权限可以包括只读权限、读写权限、以及不可读写权限。由此,根据不同的操作权限,可以确定不同的用于创建所申请显存空间的目标显存池。
在一实施例中,当操作权限为只读权限或者读写权限时,在所申请显存空间小于可见显存池的空闲空间的情况下,确定用于创建所申请显存空间的目标显存池为可见显存池,或者,在所申请显存空间大于等于可见显存池的空闲空间的情况下,确定用于创建所申请显存空间的目标显存池为不可见显存池。
通过确定所申请显存空间和可见显存池的空闲空间的大小关系,可以在所申请显存空间小于可见显存池的空闲空间的情况下,使用可见显存池创建目标显存空间。以及在所申请显存空间大于等于可见显存池的空闲空间的情况下,使用不可见显存池创建目标显存空间。由此可以有效利用不可见显存池,避免可见显存池的空闲空间不够而无法执行计算任务的情况,提高了显存空间利用率。
在另一实施例中,当操作权限为不可读写权限时,确定用于创建所申请显存空间的目标显存池为不可见显存池。这样,有效利用不可见显存池,提高了显存空间利用率。
在本公开实施例中,相应于上层应用对所申请显存空间的操作权限,上层应用对目标显存空间的操作可以包括读取操作、写入操作、以及不操作。在此基础上,对于在不同的目标显存池中创建的目标显存空间,可以根据上层应用对目标显存空间的操作,确定是否通过中转存池空间中转相应的操作数据。
在一实施例中,目标显存池为不可见显存池。在此基础上,本公开实施例提供的技术方案还可以包括:
响应于上层应用对目标显存空间的读取操作,通过DMA获取目标显存空间中对应的读取数据,将读取数据写入中转存储空间,并将中转存储空间中的读取数据返回给上层应用;或者,
响应于上层应用将计算数据写入目标显存空间的写入操作,将计算数据写入中转存储空间,并通过DMA将中转存储空间中的计算数据搬运到目标显存空间。
这样,基于直接内存访问DMA技术,通过中转存储空间中转上层应用对目标显存空间的操作数据,可以使得所有显存空间可以得到利用,提高了显存空间利用率。
在另一实施例中,目标显存池为可见显存池。在此基础上,本公开实施例提供的技术方案还可以包括:
响应于上层应用对目标显存空间的读取操作,将目标显存空间中对应的读取数据返回给上层应用;或者,
响应于上层应用将计算数据写入目标显存空间的写入操作,将计算数据写入目标显存空间。
可以理解的是,在将上层应用对目标显存空间的操作执行完毕后,可以将对应的操作标记返回给上层应用。例如,在将计算数据写入目标显存空间后,可以标记写操作成功,并将标记返回给上层应用。
之后,上层应用完成对目标显存空间的所有操作后,可以发起对目标显存空间的销毁操作。在此基础上,可以响应于上层应用对目标显存空间的销毁操作,在存在对应目标显存空间的中转存储空间的情况下,销毁中转存储空间并且释放相应的显存空间资源,在不存在对应目标显存空间的中转存储空间的情况下,释放相应的显存空间资源。
参照图3,图3是根据另一示例性实施例示出的一种显存管理方法的流程图。如图3所示,该显存管理方法涉及用户态(UMD,User Mode Driver)和内核态(KMD,Kernel ModeDriver),上层应用可以为用户态的相关应用程序。在此基础上,本公开实施例提供的技术方案可以通过内核态的相关应用程序或者硬件实现,并通过执行内核态代码来实现以下步骤。
步骤S301,响应于上层应用申请显存空间的请求,确定上层应用对所申请显存空间的操作权限。
其中,上层应用申请显存空间的请求可以为图3示例的创建渲染任务的请求。当上层应用作为用户态应用程序下发申请显存空间的请求后,进入内核态。
步骤S3021,确定操作权限是否为读写权限。
应当理解的是,如果上层应用在后续操作中不需要访问所申请显存空间,那么可以直接在不可见显存池中创建目标显存空间。由此,在确定操作权限为不可读写权限时,进入步骤S3022。
如果上层应用对所申请显存空间非不可读写权限,例如需要只读权限或者读写权限,那么判断可视显存池是否有足够的空闲空间,有则在可见显存池创建目标显存空间,否则在不可见显存池中创建目标显存空间,且在主存中创建中转存储空间。由此,在确定操作权限非不可读写权限时,进入步骤S3023。
步骤S3022,在不可见显存池创建目标显存空间。
应说明的是,可以指示显卡在不可见显存池创建目标显存空间。
步骤S3023,确定可见显存池是否有足够的空闲空间。
可以理解的是,在所申请显存空间小于可见显存池的空闲空间的情况下,确定可见显存池有足够的空闲空间。在所申请显存空间大于等于可见显存池的空闲空间的情况下,确定可见显存池没有足够的空闲空间。
由此,在确定可见显存池有足够的空闲空间时,进入步骤S3024。在确定可见显存池没有足够的空间时,进入步骤S303。
步骤S3024,在可见显存池创建目标显存空间。
步骤S303,在不可见显存池创建目标显存空间,并且在主存中创建对应目标显存空间的中转存储空间。
可以理解的是,中转存储空间可以用于通过DMA中转上层应用对目标显存空间的操作数据。
步骤S304,返回目标显存空间的句柄给上层应用。
在此基础上,上层应用可以通过句柄操作目标显存空间。并通过句柄和目标显存空间建立内存映射。
步骤S305,接收上层应用发送的句柄,确定该句柄标识的目标显存空间。
步骤S3051,确定是否存在对应的中转存储空间。
在确定主存中存在对应目标显存空间的中转存储空间时,进入步骤S3052。在确定主存中不存在对应目标显存空间的中转存储空间时,进入步骤S3053。
步骤S3052,将中转存储空间映射到主存,得到第一映射地址。
步骤S3053,将目标显存空间映射到主存,得到第二映射地址。
应当理解的是,第一映射地址用于操作中转存储空间,第二映射地址用于操作目标显存空间。
在得到用于操作存储空间的映射地址后,上层应用可以通过句柄发起将计算数据写入目标显存空间的写入操作,或者发起对目标显存空间的读取操作。
响应于上层应用将计算数据写入目标显存空间的写入操作,进入步骤S306,确定是否有对应句柄所标识目标存储空间的中转存储空间。
在确定有对应句柄所标识目标存储空间的中转存储空间时,进入步骤S3061。在确定没有对应句柄所标识目标存储空间的中转存储空间,进入步骤S3062。
步骤S3061,将计算数据写入中转存储空间,并通过DMA将中转存储空间中的计算数据搬运到目标显存空间。
步骤S3062,将计算数据写入目标显存空间。
由此,在将计算数据写入目标显存空间后,可以标记写操作成功,并将标记返回给上层应用。
响应于上层应用对目标显存空间的读取操作,进入步骤S307,确定是否有对应句柄所标识目标存储空间的中转存储空间。
在确定有对应句柄所标识目标存储空间的中转存储空间时,进入步骤S3071。在确定没有对应句柄所标识目标存储空间的中转存储空间,进入步骤S3072。
步骤S3071,通过DMA获取目标显存空间中对应的读取数据,将读取数据写入中转存储空间,并将中转存储空间中的读取数据返回给上层应用。
步骤S3072,将目标显存空间中对应的读取数据返回给上层应用。
可以理解的是,在上层应用完成对目标显存空间的所有操作后,可以发起对目标显存空间的销毁操作。
响应于上层应用对目标显存空间的销毁操作,进入步骤S308,确定是否有对应句柄所标识目标存储空间的中转存储空间。
在确定有对应句柄所标识目标存储空间的中转存储空间时,进入步骤S3081。在确定没有对应句柄所标识目标存储空间的中转存储空间时,返回资源已释放标记。
步骤S3081,销毁中转存储空间。
之后,返回资源已释放标记。
通过上述技术方案,根据上层应用对所申请显存空间的操作权限,确定在可见显存池或者不可见显存池创建目标显存空间。由于访问不可见显存池受限,因此本公开实施例在上层应用对所申请显存空间的操作权限非不可读写权限、且目标显存池为不可见显存池的情况下,在主存中创建对应目标显存空间的中转存储空间。这样,可以基于直接内存访问DMA技术,通过中转存储空间中转上层应用对目标显存空间的操作数据,从而使得所有显存空间可以得到利用,提高了显存空间利用率。
基于相同的构思,本公开还提供一种显存管理装置。参照图4,图4是根据一示例性实施例示出的一种显存管理装置400的框图。如图4所示,该显存管理装置400可以包括:
响应模块401,用于响应于上层应用申请显存空间的请求,确定上层应用对所申请显存空间的操作权限;
确定模块402,用于根据操作权限,确定用于创建所申请显存空间的目标显存池,并指示显卡在目标显存池创建目标显存空间,其中,目标显存池为可见显存池或者不可见显存池;
创建模块403,用于在操作权限非不可读写权限、且目标显存池为不可见显存池的情况下,在主存中创建对应目标显存空间的中转存储空间,中转存储空间用于通过直接内存访问DMA中转上层应用对目标显存空间的操作数据;
返回模块404,用于返回目标显存空间的句柄给上层应用。
可选地,确定模块402用于:
当操作权限为只读权限或者读写权限时,在所申请显存空间小于可见显存池的空闲空间的情况下,确定用于创建所申请显存空间的目标显存池为可见显存池,或者,在所申请显存空间大于等于可见显存池的空闲空间的情况下,确定用于创建所申请显存空间的目标显存池为不可见显存池。
可选地,确定模块402用于:
当操作权限为不可读写权限时,确定用于创建所申请显存空间的目标显存池为不可见显存池。
可选地,上层应用对所申请显存空间的操作权限包括只读权限、读写权限以及不可读写权限,相应地,上层应用对目标显存空间的操作包括读取操作以及写入操作。
显存管理装置400还可以包括第一执行模块,该第一执行模块用于:
在目标显存池为不可见显存池的情况下,响应于上层应用对目标显存空间的读取操作,通过DMA获取目标显存空间中对应的读取数据,将读取数据写入中转存储空间,并将中转存储空间中的读取数据返回给上层应用;或者,
在目标显存池为不可见显存池的情况下,响应于上层应用将计算数据写入目标显存空间的写入操作,将计算数据写入中转存储空间,并通过DMA将中转存储空间中的计算数据搬运到目标显存空间。
可选地,显存管理装置400还可以包括第二执行模块,该第二执行模块用于:
在目标显存池为不可见显存池的情况下,响应于上层应用对目标显存空间的读取操作,将目标显存空间中对应的读取数据返回给上层应用;或者,
在目标显存池为不可见显存池的情况下,响应于上层应用将计算数据写入目标显存空间的写入操作,将计算数据写入目标显存空间。
可选地,显存管理装置400还可以包括映射模块,该映射模块用于:
在返回目标显存空间的句柄给上层应用之后,接收上层应用发送的目标显存空间的句柄,确定主存中是否存在对应目标显存空间的中转存储空间;
在确定主存中存在对应目标显存空间的中转存储空间的情况下,将中转存储空间映射到主存,得到第一映射地址,或者,在确定主存中不存在对应目标显存空间的中转存储空间的情况下,将目标显存空间映射到主存,得到第二映射地址;
其中,第一映射地址用于操作中转存储空间,第二映射地址用于操作目标显存空间。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
基于相同的构思,本公开还提供一种显存管理系统。参照图5,图5是根据一示例性实施例示出的一种显存管理系统500的框图。如图5所示,该显存管理系统500可以包括中央处理器CPU501和显卡502,显卡502的显存包括可见显存池和不可见显存池,可见显存池为基址寄存器BAR映射到显存的存储空间,不可见显存池为显存中除了可见显存池以外的存储空间。
其中,CPU501用于响应于上层应用申请显存空间的请求,确定上层应用对所申请显存空间的操作权限,根据操作权限确定用于创建所申请显存空间的目标显存池,并指示显卡502在目标显存池创建目标显存空间,以及在操作权限非不可读写权限、且目标显存池为不可见显存池的情况下,在主存中创建对应目标显存空间的中转存储空间,中转存储空间用于通过直接内存访问DMA中转上层应用对目标显存空间的操作数据。
显卡502用于响应CPU指示,在目标显存池中创建目标显存空间。
CPU501用于返回目标显存空间的句柄给上层应用。
图6是根据一示例性实施例示出的一种显存布局的示意图。如图6所示,显存空间可以包括可见显存池和不可见显存池。
其中,可见显存池可以存放GPU使用的页表(PAGE_TABLE)、GPU和CPU通信所使用的DMA页表(DMA_TABLE)、用于显示的帧缓冲数据(Framebuffer)以及空闲可见显存池(FreeVisible VRAM)。不可见显存池可以存放GPU私有数据(GPU Private Data)以及空闲不可见显存池(Free Invisible VRAM)。其中,GPU私有数据例如可以包括GPU产生的渲染中间数据。
关于上述实施例中的系统,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的一种电子设备700的框图。如图7所示,该电子设备700可以包括:处理器701,存储器702。该电子设备700还可以包括多媒体组件703,输入/输出(I/O)接口704,以及通信组件705中的一者或多者。
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的显存管理方法中的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还包括至少一个扬声器,用于输出音频信号。输入/输出接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(NearField Communication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件705可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的显存管理方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的显存管理方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行以完成上述的显存管理方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的显存管理方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

Claims (9)

1.一种显存管理方法,其特征在于,所述方法包括:
响应于上层应用申请显存空间的请求,确定所述上层应用对所申请显存空间的操作权限;其中,所述上层应用对所述所申请显存空间的操作权限包括只读权限、读写权限以及不可读写权限;
根据所述操作权限,确定用于创建所述所申请显存空间的目标显存池,并指示显卡在所述目标显存池创建目标显存空间,其中,所述目标显存池为可见显存池或者不可见显存池;
在所述操作权限非不可读写权限、且所述目标显存池为所述不可见显存池的情况下,在主存中创建对应所述目标显存空间的中转存储空间,所述中转存储空间用于通过直接内存访问DMA中转所述上层应用对所述目标显存空间的操作数据;
返回所述目标显存空间的句柄给所述上层应用;
所述根据所述操作权限,确定用于创建所述所申请显存空间的目标显存池,包括:
当所述操作权限为不可读写权限时,确定用于创建所述所申请显存空间的目标显存池为所述不可见显存池。
2.根据权利要求1所述的方法,其特征在于,所述根据所述操作权限,确定用于创建所述所申请显存空间的目标显存池,包括:
当所述操作权限为只读权限或者读写权限时,在所述所申请显存空间小于所述可见显存池的空闲空间的情况下,确定用于创建所述所申请显存空间的目标显存池为所述可见显存池,或者,在所述所申请显存空间大于等于所述可见显存池的空闲空间的情况下,确定用于创建所述所申请显存空间的目标显存池为所述不可见显存池。
3.根据权利要求1-2中任一项所述的方法,其特征在于,所述上层应用对所述目标显存空间的操作包括读取操作以及写入操作;
在所述目标显存池为所述不可见显存池的情况下,所述方法还包括:
响应于所述上层应用对所述目标显存空间的读取操作,通过DMA获取所述目标显存空间中对应的读取数据,将所述读取数据写入所述中转存储空间,并将所述中转存储空间中的读取数据返回给所述上层应用;或者,
响应于所述上层应用将计算数据写入所述目标显存空间的写入操作,将所述计算数据写入中转存储空间,并通过DMA将所述中转存储空间中的计算数据搬运到所述目标显存空间。
4.根据权利要求1-2中任一项所述的方法,其特征在于,在所述目标显存池为所述可见显存池的情况下,所述方法还包括:
响应于所述上层应用对所述目标显存空间的读取操作,将所述目标显存空间中对应的读取数据返回给所述上层应用;或者,
响应于所述上层应用将计算数据写入所述目标显存空间的写入操作,将所述计算数据写入所述目标显存空间。
5.根据权利要求1-2中任一项所述的方法,其特征在于,在返回所述目标显存空间的句柄给所述上层应用之后,所述方法还包括:
接收上层应用发送的所述目标显存空间的句柄,确定所述主存中是否存在对应所述目标显存空间的中转存储空间;
在确定所述主存中存在对应所述目标显存空间的中转存储空间的情况下,将所述中转存储空间映射到主存,得到第一映射地址,或者,在确定所述主存中不存在对应所述目标显存空间的中转存储空间的情况下,将所述目标显存空间映射到主存,得到第二映射地址;
其中,所述第一映射地址用于操作所述中转存储空间,所述第二映射地址用于操作所述目标显存空间。
6.一种显存管理装置,其特征在于,所述装置包括:
响应模块,用于响应于上层应用申请显存空间的请求,确定所述上层应用对所申请显存空间的操作权限;其中,所述上层应用对所述所申请显存空间的操作权限包括只读权限、读写权限以及不可读写权限;
确定模块,用于根据所述操作权限,确定用于创建所述所申请显存空间的目标显存池,并指示显卡在所述目标显存池创建目标显存空间,其中,所述目标显存池为可见显存池或者不可见显存池;
创建模块,用于在所述操作权限非不可读写权限、且所述目标显存池为所述不可见显存池的情况下,在主存中创建对应所述目标显存空间的中转存储空间,所述中转存储空间用于通过直接内存访问DMA中转所述上层应用对所述目标显存空间的操作数据;
返回模块,用于返回所述目标显存空间的句柄给所述上层应用;
其中,所述确定模块用于:当所述操作权限为不可读写权限时,确定用于创建所述所申请显存空间的目标显存池为所述不可见显存池。
7.一种显存管理系统,其特征在于,包括中央处理器CPU和显卡,所述显卡的显存包括可见显存池和不可见显存池,所述可见显存池为基址寄存器BAR映射到所述显存的存储空间,所述不可见显存池为所述显存中除了所述可见显存池以外的存储空间;
所述CPU用于响应于上层应用申请显存空间的请求,确定所述上层应用对所申请显存空间的操作权限,根据所述操作权限确定用于创建所述所申请显存空间的目标显存池,并指示显卡在所述目标显存池创建目标显存空间,以及在所述操作权限非不可读写权限、且所述目标显存池为所述不可见显存池的情况下,在主存中创建对应所述目标显存空间的中转存储空间,所述中转存储空间用于通过直接内存访问DMA中转所述上层应用对所述目标显存空间的操作数据;其中,所述上层应用对所述所申请显存空间的操作权限包括只读权限、读写权限以及不可读写权限;
所述显卡用于响应所述指示,在所述目标显存池中创建所述目标显存空间;
所述CPU用于返回所述目标显存空间的句柄给所述上层应用;
其中,所述CPU用于:当所述操作权限为不可读写权限时,确定用于创建所述所申请显存空间的目标显存池为所述不可见显存池。
8.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-5中任一项所述方法的步骤。
9.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-5中任一项所述方法的步骤。
CN202311800340.8A 2023-12-26 2023-12-26 显存管理方法、装置、系统、介质及设备 Active CN117455750B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311800340.8A CN117455750B (zh) 2023-12-26 2023-12-26 显存管理方法、装置、系统、介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311800340.8A CN117455750B (zh) 2023-12-26 2023-12-26 显存管理方法、装置、系统、介质及设备

Publications (2)

Publication Number Publication Date
CN117455750A CN117455750A (zh) 2024-01-26
CN117455750B true CN117455750B (zh) 2024-04-02

Family

ID=89593389

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311800340.8A Active CN117455750B (zh) 2023-12-26 2023-12-26 显存管理方法、装置、系统、介质及设备

Country Status (1)

Country Link
CN (1) CN117455750B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109343954A (zh) * 2018-08-31 2019-02-15 联想(北京)有限公司 电子设备工作方法及系统
CN109725856A (zh) * 2018-12-29 2019-05-07 深圳市网心科技有限公司 一种共享节点管理方法、装置、电子设备及存储介质
CN111338988A (zh) * 2020-02-20 2020-06-26 西安芯瞳半导体技术有限公司 内存访问方法、装置、计算机设备和存储介质
CN112465689A (zh) * 2020-10-21 2021-03-09 中国船舶重工集团公司第七0九研究所 基于可见显存交换区的gpu不可见显存管理方法及系统
CN114418828A (zh) * 2021-12-23 2022-04-29 北京百度网讯科技有限公司 显存管理方法、装置、设备、存储介质及程序产品
CN115525417A (zh) * 2021-06-24 2022-12-27 北京图森智途科技有限公司 数据通信方法、通信系统及计算机可读存储介质
CN116089327A (zh) * 2022-12-30 2023-05-09 深圳市安存数据技术有限公司 数据保护方法及相关设备
CN116893899A (zh) * 2023-07-07 2023-10-17 中国电信股份有限公司技术创新中心 资源分配方法、装置、计算机设备和存储介质
CN117194055A (zh) * 2023-11-06 2023-12-08 西安芯云半导体技术有限公司 Gpu显存申请及释放的方法、装置及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8943283B2 (en) * 2012-08-31 2015-01-27 International Business Machines Corporation Converting a first address mapping function for mapping addresses to storage locations to a second address mapping function
US9928064B2 (en) * 2015-11-10 2018-03-27 International Business Machines Corporation Instruction stream modification for memory transaction protection

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109343954A (zh) * 2018-08-31 2019-02-15 联想(北京)有限公司 电子设备工作方法及系统
CN109725856A (zh) * 2018-12-29 2019-05-07 深圳市网心科技有限公司 一种共享节点管理方法、装置、电子设备及存储介质
CN111338988A (zh) * 2020-02-20 2020-06-26 西安芯瞳半导体技术有限公司 内存访问方法、装置、计算机设备和存储介质
CN112465689A (zh) * 2020-10-21 2021-03-09 中国船舶重工集团公司第七0九研究所 基于可见显存交换区的gpu不可见显存管理方法及系统
CN115525417A (zh) * 2021-06-24 2022-12-27 北京图森智途科技有限公司 数据通信方法、通信系统及计算机可读存储介质
CN114418828A (zh) * 2021-12-23 2022-04-29 北京百度网讯科技有限公司 显存管理方法、装置、设备、存储介质及程序产品
CN116089327A (zh) * 2022-12-30 2023-05-09 深圳市安存数据技术有限公司 数据保护方法及相关设备
CN116893899A (zh) * 2023-07-07 2023-10-17 中国电信股份有限公司技术创新中心 资源分配方法、装置、计算机设备和存储介质
CN117194055A (zh) * 2023-11-06 2023-12-08 西安芯云半导体技术有限公司 Gpu显存申请及释放的方法、装置及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Energy-saving techniques for low-power graphics processing unit;Chia-MIng Chang .etal;IEEE;20090417;全文 *
龙芯UNCACHE加速原理及其在系统图形性能优化中的应用;张爽爽 等;高技术通讯;20150430(第04期);全文 *

Also Published As

Publication number Publication date
CN117455750A (zh) 2024-01-26

Similar Documents

Publication Publication Date Title
US11016906B2 (en) GPU virtualisation
US10691417B2 (en) System and method for executing native client code in a storage device
CN103034524B (zh) 半虚拟化的虚拟gpu
EP2202643B1 (en) Methods and apparatus for providing user level DMA and memory access management
EP3968160A1 (en) Inter-process communication method and apparatus, and computer device
EP0306702A2 (en) Virtual input/output commands
US20070239965A1 (en) Inter-partition communication
CN102971706A (zh) 将信息从安全虚拟机重定向到不安全虚拟机
CN105830026A (zh) 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
US20220292628A1 (en) Image processing method and apparatus
WO2023123850A1 (zh) 一种固件可信根的实现方法、装置、设备和可读存储介质
US9699093B2 (en) Migration of virtual machine based on proximity to peripheral device in NUMA environment
CN114691300A (zh) 一种虚拟机实例的热迁移方法
CN113485791B (zh) 配置方法和访问方法、装置、虚拟化系统和存储介质
CN104298519B (zh) 用于配置操作系统的装置及其方法
CN117455750B (zh) 显存管理方法、装置、系统、介质及设备
CN113946854A (zh) 一种文件访问控制方法、装置及计算机可读存储介质
US20230281135A1 (en) Method for configuring address translation relationship, and computer system
US7124226B2 (en) Method or apparatus for establishing a plug and play (PnP) communication channel via an abstraction layer interface
CN112330229A (zh) 资源调度方法、装置、电子设备及计算机可读存储介质
US20220335109A1 (en) On-demand paging support for confidential computing
US8593472B1 (en) System and method for accessing a frame buffer via a storage driver
JP2009258798A (ja) 仮想マシンシステム、ホスト計算機、i/oカード、仮想マシン構築方法およびプログラム
US20160026567A1 (en) Direct memory access method, system and host module for virtual machine
CN117349870B (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
GR01 Patent grant
GR01 Patent grant