CN116974736A - 一种设备虚拟化方法及相关设备 - Google Patents
一种设备虚拟化方法及相关设备 Download PDFInfo
- Publication number
- CN116974736A CN116974736A CN202210454774.6A CN202210454774A CN116974736A CN 116974736 A CN116974736 A CN 116974736A CN 202210454774 A CN202210454774 A CN 202210454774A CN 116974736 A CN116974736 A CN 116974736A
- Authority
- CN
- China
- Prior art keywords
- acceleration
- host
- task
- device side
- memory
- 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
- 238000000034 method Methods 0.000 title claims abstract description 109
- 230000006870 function Effects 0.000 claims abstract description 257
- 230000001133 acceleration Effects 0.000 claims abstract description 249
- 238000004364 calculation method Methods 0.000 claims abstract description 126
- 230000015654 memory Effects 0.000 claims description 167
- 238000013507 mapping Methods 0.000 claims description 26
- 239000011159 matrix material Substances 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 238000007726 management method Methods 0.000 description 77
- 230000006854 communication Effects 0.000 description 40
- 238000004891 communication Methods 0.000 description 37
- 238000012545 processing Methods 0.000 description 24
- 230000004044 response Effects 0.000 description 24
- 230000005540 biological transmission Effects 0.000 description 22
- 230000003863 physical function Effects 0.000 description 20
- 238000005516 engineering process Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 9
- 238000002955 isolation Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000001404 mediated effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013070 change management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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
-
- 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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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]
-
- 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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Abstract
本申请实施例公开了一种设备虚拟化方法,该方法应用于加速计算***,加速计算***包括主机端以及与主机端连接的设备端,该方法可以由设备端执行,也可以由设备端的部件(例如设备端中的软件配置模块等)执行。方法包括:接收来自主机端的管理命令,管理命令用于配置虚拟化设备端中的物理资源以提供虚拟功能给主机端使用,物理资源用于执行加速计算任务;基于管理命令配置寄存器,寄存器用于虚拟化物理资源。相对于现有技术中各GPU实例的配置固定,本申请实施例中,设备端可以通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。
Description
技术领域
本申请实施例涉及虚拟化技术领域,尤其涉及一种设备虚拟化方法及相关设备。
背景技术
随着近几年来处理器技术和虚拟化技术的高速发展,多样性算力场景下的各种XPU加速器发挥着重要的作用。其中,包括图形处理器(graphics processing unit,GPU)用于图形领域的2D/3D渲染加速,神经网络处理器(network processing unit,NPU)用于人工智能领域的神经网络计算加速,数据处理器(data processing unit,DPU)用于数据中心的大规模数据处理,张量处理器(tensor processing unit,TPU)用于加速神经网络的矩阵运算。XPU加速器在公有云、数据中心场景应用时,加速器给虚拟机或者容器使用时需要通过虚拟化技术实现多租户的隔离,以达到降低大规模部署成本、增强竞争力的目的。
目前,XPU虚拟化技术常用的是基于多实例图形处理器(multi-instancegraphics processing unit,MIG)的虚拟化方案,该方案支持在不增加成本的方式提供最多7倍的GPU实例,每个实例均与各自的显存、缓存和计算核心完全隔离。
然而,上述方案中各GPU实例是硬件资源独立划分开的片段,且配置固定,无法灵活应用至各类场景。
发明内容
本申请实施例提供了一种设备虚拟化方法及相关设备。设备端可以通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。
本申请实施例第一方面提供了一种设备虚拟化方法,该方法应用于加速计算***,加速计算***包括主机端以及与主机端连接的设备端,该方法可以由设备端执行,也可以由设备端的部件(例如设备端中的软件配置模块等)执行。该方法包括:接收来自主机端的管理命令,管理命令用于虚拟化设备端中的物理资源以提供虚拟功能给主机端使用,物理资源用于执行加速计算任务;基于管理命令配置设备端中的寄存器,寄存器用于虚拟化物理资源,例如用于配置与虚拟资源对应的物理资源或者用于配置物理资源与虚拟资源之间的映射关系。可选地,寄存器可以通过软件配置模块进行随意配置。
本申请实施例中,在加速计算场景下,设备端可以通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。相对于现有技术中各GPU实例由于硬件原因导致的配置固定,寄存器可以灵活虚拟化物理资源,例如灵活配置物理资源与虚拟资源之间映射关系或者灵活配置虚拟功能。
可选地,在第一方面的一种可能的实现方式中,上述步骤还包括:设备端通过虚拟功能的队列与主机端传输加速计算任务,加速计算任务由设备端中与加速计算任务对应的加速器执行,队列由设备端向主机端虚拟呈现,加速计算任务存储在设备端的内存中。进一步的,设备端还可以通过队列与主机端传输指示信息,指示信息用于指示设备端是否完成加速计算任务,指示信息也存储在设备端的内存中。
该种可能的实现方式中,数据面的传输不需要经过设备端中的处理器参与,且队列在设备端的内存中,可以映射给虚拟功能使用,设备端可以直接访问队列中的加速计算任务,不需要设备端发起直接存储访问(direct memory access,DMA)操作来获取加速计算任务。即不需要DMA队列,数据面的传输使用纯硬件(例如:硬件调度装置与加速器,硬件调度装置用于调度队列,加速器用于响应硬件调度装置的调度执行相应加速计算任务),可以提升设备端处理加速计算任务的效率。
本申请实施例第二方面提供了一种设备虚拟化方法,该方法应用于加速计算***,加速计算***包括主机端以及与主机端连接的设备端,该方法可以由主机端执行,也可以由主机端的部件执行。方法包括:获取管理命令,管理命令用于虚拟化设备端中的物理资源以提供虚拟功能给主机端使用,物理资源用于执行加速计算任务;向设备端发送管理命令,以使得设备端通过管理命令配置寄存器,寄存器用于虚拟化物理资源,例如配置与虚拟资源对应的物理资源或者用于配置物理资源与虚拟资源之间的映射关系。
本申请实施例中,在加速计算***场景下,主机端可以通过向设备端下发管理命令,使得设备端通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。相对于现有技术中各GPU实例由于硬件原因导致的配置固定,寄存器可以灵活虚拟化物理资源,进而灵活配置虚拟功能。
可选地,在第二方面的一种可能的实现方式中,上述步骤还包括:主机端通过虚拟功能的队列与设备端传输加速计算任务,加速计算任务由设备端中与加速计算任务对应的加速器执行,加速计算任务存储在设备端的内存中。进一步的,主机端还可以通过队列与设备端传输指示信息,指示信息用于指示设备端是否完成加速计算任务,指示信息也存储在设备端的内存中。
该种可能的实现方式中,数据面的传输不需要经过设备端中的处理器参与,且队列在设备端的内存中,可以映射给虚拟功能使用,设备端可以直接访问队列中的加速计算任务,不需要设备端发起DMA操作来获取加速计算任务。即不需要DMA队列,数据面的传输使用纯硬件(例如:硬件调度装置与加速器,硬件调度装置用于调度队列,加速器用于响应硬件调度装置的调度执行相应加速计算任务),可以提升设备端处理加速计算任务的效率。
本申请实施例第三方面提供了一种设备虚拟化方法,该方法应用于加速计算***,加速计算***包括主机端以及与主机端连接的设备端,该方法可以由设备端执行,也可以由设备端的部件(例如设备端中的虚拟功能呈现装置、硬件调度器等)执行。方法包括:通过设备端在主机端上呈现的虚拟功能的队列与主机端传输加速计算任务,加速计算任务由设备端中与加速计算任务对应的加速器执行,队列由设备端向主机端虚拟呈现,加速计算任务存储在设备端的内存中。进一步的,设备端还可以通过队列与主机端传输指示信息,指示信息用于指示设备端是否完成加速计算任务,指示信息也存储在设备端的内存中。
本申请实施例中,数据面的传输不需要经过设备端中的处理器参与。即加速计算任务与指示信息存储在设备端的内存中,或者队列在设备端的内存中,可以映射给虚拟功能使用,设备端可以直接访问队列中的加速计算任务,不需要设备端发起直接存储访问(direct memory access,DMA)操作来获取加速计算任务。即不需要DMA队列,数据面的传输使用纯硬件(例如:硬件调度装置与加速器,硬件调度装置用于调度队列,加速器用于响应硬件调度装置的调度执行相应加速计算任务),可以提升设备端处理加速计算任务的效率。
可选地,在第三方面的一种可能的实现方式中,上述步骤还包括:设备端基于队列所属的虚拟功能将加速计算任务下发至加速器,加速器组用于完成加速计算任务,加速器计算加速计算任务中产生的数据存储于设备端的内存中。
该种可能实现的方式中,设备端基于请求队列所属的虚拟功能将加速计算任务下发至与虚拟功能对应的加速器,可以使得不同虚拟功能的请求队列互相隔离,提升安全。
本申请实施例第四方面提供了一种设备虚拟化方法,该方法应用于加速计算***,加速计算***包括主机端以及与主机端连接的设备端,该方法可以由主机端执行,也可以由主机端的部件执行。方法包括:获取加速计算任务;通过设备端在主机端上呈现的虚拟功能的队列与设备端传输加速计算任务,加速计算任务由设备端中与加速计算任务对应的加速器执行,队列由设备端向主机端虚拟呈现,加速计算任务存储在设备端的内存中。进一步的,主机端还可以通过队列与设备端传输指示信息,指示信息用于指示设备端是否完成加速计算任务,指示信息也存储在设备端的内存中。
本申请实施例中,数据面的传输不需要经过设备端中的处理器参与。即队列在设备端的内存中,可以供虚拟功能使用,设备端可以直接访问队列中的加速计算任务,不需要设备端发起DMA操作来获取加速计算任务。即不需要DMA队列,数据面的传输使用纯硬件(例如:硬件调度装置与加速器,硬件调度装置用于调度队列,加速器用于响应硬件调度装置的调度执行相应加速计算任务),可以提升设备端处理加速计算任务的效率。
本申请实施例第五方面提供了一种设备端,该设备端应用于加速计算***,加速计算***包括主机端以及与主机端连接的设备端,设备端包括:接收单元,用于接收来自主机端的管理命令,管理命令虚拟化设备端中的物理资源以提供虚拟功能给主机端使用,物理资源用于执行加速计算任务;配置单元,用于基于管理命令配置寄存器,寄存器用于虚拟化物理资源。
本申请实施例第六方面提供了一种主机端,该主机端应用于加速计算***,加速计算***包括主机端以及与主机端连接的设备端,主机端包括:获取单元,用于获取管理命令,管理命令用于虚拟化设备端中的物理资源以提供虚拟功能给主机端使用,物理资源用于执行加速计算任务;发送单元,用于向设备端发送管理命令,以使得设备端通过管理命令配置寄存器,寄存器用于虚拟化物理资源。
本申请实施例第七方面提供了一种设备端,该设备端应用于加速计算***,加速计算***包括主机端以及与主机端连接的设备端,设备端包括:传输单元,用于通过设备端在主机端上呈现的虚拟功能的队列与主机端传输加速计算任务,加速计算任务由设备端中与加速计算任务对应的加速器执行,队列由设备端向主机端虚拟呈现,加速计算任务存储在设备端的内存中。
本申请实施例第八方面提供了一种主机端,该主机端应用于加速计算***,加速计算***包括主机端以及与主机端连接的设备端,主机端包括:获取单元,用于获取加速计算任务;传输单元,用于通过设备端在主机端上呈现的虚拟功能的队列与设备端传输加速计算任务,加速计算任务由设备端中与加速计算任务对应的加速器执行,队列由设备端向主机端虚拟呈现,加速计算任务存储在设备端的内存中。
可选地,在第一方面至第八方面中任一种方面的一种可能的实现方式中,上述的队列包括请求队列与响应队列,请求队列为主机端向设备端发送加速计算任务所用的队列,响应队列为设备端向主机端发送指示信息所用的队列,指示信息用于指示设备端是否完成加速计算任务;请求队列用于设备端基于该请求队列所属的虚拟功能将加速计算任务下发至与虚拟功能对应的加速器,加速器用于完成加速计算任务,加速器计算加速计算任务中产生的数据存储于设备端的内存中。
该种可能的实现方式中,一方面,数据面的传输不需要经过设备端中的处理器参与,且队列在设备端的内存中,可以映射给虚拟功能使用,设备端可以直接访问队列中的加速计算任务,不需要设备端发起DMA操作来获取加速计算任务。可以提升设备端处理加速计算任务的效率。另一方面,设备端基于请求队列所属的虚拟功能将加速计算任务下发至与虚拟功能对应的加速器,可以使得不同虚拟功能的请求队列互相隔离,提升安全。
可选地,在第一方面至第八方面中任一种方面的一种可能的实现方式中,上述步骤:设备端与主机端通过设备端在主机端上呈现的物理功能传输管理命令。
该种可能的实现方式中,通过设备端在主机端上呈现的物理功能传输管理命令,由于一般情况下,物理功能供管理员使用,虚拟功能供用户使用。因此,通过物理功能传输管理命令可以使得管理命令的传输更加安全。
可选地,在第一方面至第八方面中任一种方面的一种可能的实现方式中,上述的加速计算任务包括图形加速计算任务、向量运算加速计算任务、矩阵运算加速计算任务、数据拷贝加速计算任务、视频编解码加速计算任务中的至少一项。可以理解的是,设备端包括图像处理器GPU、神经网络处理器NPU、数据处理器DPU、张量处理器TPU、数字信号处理器(digital singnal processor,DSP)、专用集成电路(application srIecificintergrated circuits,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)等中的至少一个。具体的,设备端中的加速器可以是GPU、NPU、DPU、TPU、数字信号处理器(digital singnal processor,DSP)、专用集成电路(application srIecificintergrated circuits,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)等中的至少一个。
该种可能的实现方式中,该方法可以应用在各种异构虚拟化场景,包括GPU虚拟化、NPU虚拟化、TPU虚拟化等。通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。
可选地,在第一方面至第八方面中任一种方面的一种可能的实现方式中,上述寄存器用于配置以下至少一项:虚拟功能的数量;虚拟功能的虚拟内存与设备端中物理内存的映射关系;虚拟功能的队列与设备端中内存地址的映射关系,队列由设备端向主机端虚拟呈现,队列包括请求队列与响应队列,请求队列用于主机端与设备端传输加速计算任务,响应队列用于设备端向主机端发送指示信息,指示信息用于指示设备端是否完成加速计算任务;虚拟功能的加速器组中不同类型加速器的数量;与队列相关的门铃寄存器或中断寄存器,门铃寄存器用于主机端向设备端通知已将加速计算任务放入请求队列,中断寄存器用于设备端向主机端通知已将指示信息放入响应队列。
该种可能的实现方式中,设备端可以通过管理命令与寄存器的方式灵活配置虚拟功能内存资源、异构通信资源以及异构算力资源等中至少一个资源。例如将某几段分散的设备内存映射到某一虚拟功能,也可以灵活定义虚拟功能上的内存大小。相对于现有技术中MIG技术的每个slice都是固定内存大小,该种方式可以实现资源的灵活配置。
可选地,在第一方面至第八方面中任一种方面的一种可能的实现方式中,上述虚拟功能的数量为多个时,不同虚拟功能对应的资源不同。或者虚拟功能的数量为多个时,不同虚拟功能对应的内存、队列的内存、加速器组中的至少一项不同。
该种可能的实现方式中,不同虚拟功能的资源不同,实现不同虚拟功能所用物理资源之间的隔离,提升安全以及资源的灵活配置。
可选地,在第一方面至第八方面中任一种方面的一种可能的实现方式中,上述虚拟功能的呈现方式可以是Mdev(mediated device)、单根虚拟化(single-root input/output virtualization,SR-IOV)或可扩展虚拟化(scalable input/outputvirtualization,SIOV)等,具体此处不做限定。对于Mdev呈现方式来说,虚拟功能可以称为Mdev设备。对于SR-IOV呈现方式来说,虚拟功能可以称为VF设备。对于SIOV呈现方式来说,虚拟功能可以称为SF设备/ADI设备。
该种可能实现的方式中,可以适用于多种虚拟功能的呈现方式,可以根据实际需要设置相应的呈现方式,使得设备端向主机端呈现的虚拟功能可以灵活应用多个场景。
可选地,在第一方面至第八方面中任一种方面的一种可能的实现方式中,上述加速计算***为异构加速计算***,所述加速计算任务为异构加速计算任务。
该种可能实现的方式中,在异构计算的场景下,设备端可以通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。
本申请第九方面提供了一种设备端,包括:处理器,处理器与存储器耦合,存储器用于存储程序或指令,当程序或指令被处理器执行时,使得该设备端实现上述第一方面或第一方面的任意可能的实现方式中的方法。
本申请第十方面提供了一种主机端,包括:处理器,处理器与存储器耦合,存储器用于存储程序或指令,当程序或指令被处理器执行时,使得该主机端实现上述第二方面或第二方面的任意可能的实现方式中的方法。
本申请第十一方面提供了一种设备端,包括:硬件调度装置,硬件调度装置与存储器耦合,存储器用于映射虚拟功能的队列,硬件调度装置用于调度队列,使得该设备端实现上述第三方面或第三方面的任意可能的实现方式中的方法。
本申请第十二方面提供了一种主机端,包括:处理器,处理器与存储器耦合,存储器用于存储程序或指令,当程序或指令被处理器执行时,使得该主机端实现上述第四方面或第四方面的任意可能的实现方式中的方法。
本申请第十三方面提供了一种加速计算***,包括前述第九方面的设备端与第十方面的主机端,或者包括前述第十一方面的设备端与第十二方面的主机端。
本申请第十四方面提供了一种计算机可读介质,其上存储有计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行前述第一方面或第一方面的任意可能的实现方式中的方法,或者使得计算机执行前述第二方面或第二方面的任意可能的实现方式中的方法,或者使得计算机执行前述第三方面或第三方面的任意可能的实现方式中的方法,或者使得计算机执行前述第四方面或第四方面的任意可能的实现方式中的方法。
本申请第十五方面提供了一种计算机程序产品,该计算机程序产品在计算机上执行时,使得计算机执行前述第一方面或第一方面的任意可能的实现方式中的方法,使得计算机执行前述第二方面或第二方面的任意可能的实现方式中的方法,使得计算机执行前述第三方面或第三方面的任意可能的实现方式中的方法,使得计算机执行前述第四方面或第四方面的任意可能的实现方式中的方法。
其中,第五、第九、第十三、第十四、第十五方面或者其中任一种可能实现方式所带来的技术效果可参见第一方面或第一方面不同可能实现方式所带来的技术效果,此处不再赘述。
其中,第六、第十、第十三、第十四、第十五方面或者其中任一种可能实现方式所带来的技术效果可参见第一方面或第一方面不同可能实现方式所带来的技术效果,此处不再赘述。
其中,第七、第十一、第十三、第十四、第十五方面或者其中任一种可能实现方式所带来的技术效果可参见第一方面或第一方面不同可能实现方式所带来的技术效果,此处不再赘述。
其中,第八、第十二、第十三、第十四、第十五方面或者其中任一种可能实现方式所带来的技术效果可参见第一方面或第一方面不同可能实现方式所带来的技术效果,此处不再赘述。
从以上技术方案可以看出,本申请实施例具有以下优点:在加速计算场景下,设备端可以通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。相对于现有技术中各GPU实例由于硬件原因导致的配置固定,寄存器可以灵活配置物理资源与虚拟资源之间映射关系,进而灵活配置虚拟功能。
附图说明
图1为本发明实施例提供的加速计算***架构的结构示意图;
图2为本申请实施例提供的设备虚拟化方法一个流程示意图;
图3为本申请实施例提供的一种配置内存资源的流程示意图;
图4为本申请实施例提供的一种配置队列的流程示意图;
图5为本申请实施例提供的一种配置算力资源的流程示意图;
图6为本申请实施例提供的一种数据面传输的流程示意图;
图7为本申请实施例提供的另一种数据面传输的流程示意图;
图8为本申请实施例提供的设备端的一个结构示意图;
图9为本申请实施例提供的主机端的一个结构示意图;
图10为本申请实施例提供的设备端的另一个结构示意图;
图11为本申请实施例提供的主机端的另一个结构示意图;
图12为本申请实施例提供的设备端的另一个结构示意图;
图13为本申请实施例提供的主机端的另一个结构示意图;
图14为本申请实施例提供的设备端的另一个结构示意图;
图15为本申请实施例提供的主机端的另一个结构示意图。
具体实施方式
本申请实施例提供了一种设备虚拟化方法及相关设备。设备端可以通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。
其中,在本申请的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B。本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
首先,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1、异构计算
异构计算主要是指使用不同类型指令集和体系架构的计算单元组成***的计算方式。或者理解为:由一个或多个通用计算单元加一个或多个专用计算单元构建的***成为异构计算***,由两者协同执行计算称为异构计算。常见的计算单元类别包括中央处理器(central processing unit,CPU)、GPU等协处理器、数字信号处理器(digital singnalprocessor,DSP)、专用集成电路(application srIecific intergrated circuits,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)等。常用的异构计算是指CPU+GPU或者CPU+其它设备(如FPGA等)的协同计算。
异构计算也可以理解为是在异构计算***上进行的并行计算,是一种使计算任务的并行性类型(代码类型)与机器能有效支持的计算类型(即机器能力)最相匹配、最能充分利用各种计算资源的并行和分布计算技术。
2、图形处理器(graphics processing unit,GPU)
显卡的处理器称为GPU,由于GPU具有高并行结构,所以GPU在处理图形数据和复杂算法方面拥有比中央处理器(central processing unit,CPU)更高的效率。
3、虚拟化
虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。
4、虚拟机和容器
虚拟机是共享一个主机的物理资源的操作***。容器是不依赖于操作***,运行应用程序的环境。容器共享主机的内核,不能像虚拟机一样完全隔离。
5、呈现
本申请实施例中,设备端在主机端上呈现的虚拟功能的虚拟资源。示例性的,设备端可以是加速卡(例如PCIE加速卡),主机端为服务器,PCIE可以插拔在服务器上,有些情况下,PCIE网卡可以理解为是服务器的一部分。物理加速卡可以在服务器上显示多个逻辑上的加速卡,服务器可以使用多个逻辑上的加速卡执行物理加速卡的功能。
6、物理功能、虚拟功能、物理资源、虚拟资源
本申请实施例中的虚拟功能是支持虚拟化的设备端所虚拟出的一个实例,它会以一个独立设备的形式呈现出来,可能与其他虚拟功能共享着同一个物理资源。
物理功能是用于管理员配置与虚拟功能的虚拟资源对应的物理资源的功能(例如:设备端进行发现、管理和处理等功能),物理功能拥有完全配置资源,可以用于配置或控制设备端。
物理资源是设备段中的硬件资源,虚拟资源是通过映射到物理资源的方式向用户展示的逻辑资源。
换句话说,在设备端是加速卡的情况下,物理功能与虚拟功能可以理解为是加速卡功能的子集。为了安全考虑,物理功能主要是供管理员使用,虚拟功能主要是供用户使用,且主机端上的虚拟机/容器连接到至少一个虚拟功能以实现设备端的虚拟化。
下面针对于几种常用技术举例说明本申请实施例中所涉及的物理功能与虚拟功能。
例如,对于单根I/O虚拟化(Single-Root I/O Virtualization,SR-IOV)技术来说,该技术引入了两种新的功能类型,即物理功能(Physical Function,PF)模块和虚拟功能(Virtual Function,VF)模块。其中,PF模块拥有SR-IOV的全部PCIe功能,可以进行SR-IOV功能配置和管理,VF模块具有轻量级的PCIe功能,包含数据传输所必要的资源和少量的配置资源。该种示例下,虚拟功能可以称为VF设备。
又例如,对于可扩展虚拟化(scalable input/output virtualization,SIOV)技术来说,该技术主要包括设备层、平台层、软件层。其中,设备层提出了一种可分配设备接口(assignable device interfaces,ADI)的接口概念,有点类似于SR-IOV中的VF。该种示例下,虚拟功能可以称为SF设备/ADI设备。
又例如,对于Mdev(mediated device)技术来说,mdev的虚拟功能是mdev设备,物理功能类比主机端上可管理的物理设备。
7、中断与轮询
处理器与外设进行通信,可以采用中断与轮询的方式。中断是指外设向处理器发起的请求事件。轮询是指处理器定时发出询问,依次询问每一个外设是否需要服务。
8、云计算架构
云计算架构可以用三层SPI(SaaS、PaaS、IaaS)模型进行表述:
软件即服务(Software as a Service,SaaS)层(S层):用户看到的和使用的东西,网页、手机软件(application,APP)、报表等。
平台即服务(Platform as a Service,PaaS)层(P层):可以理解为平台层,通俗意义上的后台。
基础设施即服务(Infrastructrue as a Service,IaaS)层(I层):可以理解为基础设施层,各种网络、服务器或主机、存储设备。
其中,把硬件资源集中起来一个关键性技术突破就是虚拟化技术。虚拟化可以提高资源的有效利用率,使操作更加灵活,同时简化变更管理。单台物理服务器可以有多个虚拟机,同时提供分离和安全防护,每个虚拟机就象在自己的硬件上运行一样。这种把主机集中管理,以市场机制通过虚拟化层对外提供服务,用按使用量收费的盈利模式,形成了云计算的基础层。这就是IaaS,构成了云计算的基础层。
随着近几年来处理器技术和虚拟化技术的高速发展,多样性算力场景下的各种XPU加速器发挥着重要的作用。XPU虚拟化技术常用的是基于多实例图形处理器(multi-instance graphics processing unit,MIG)的虚拟化方案,该方案支持在不增加成本的方式提供最多7倍的GPU实例,每个实例均与各自的显存、缓存和计算核心完全隔离。
然而,上述方案中各GPU实例的配置固定,无法灵活应用至各类场景。
为了解决上述技术问题,本申请实施例提供了一种设备虚拟化方法,在加速计算***中,设备端可以通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。
在描述本申请实施例提供的一种设备虚拟化方法及相关设备之前,先对本申请实施例提供的***架构进行描述。
本申请实施例提供的加速计算***架构如图1所示,该加速计算***架构包括主机端(Host)与设备端(Device),该主机端与设备端可以协同执行异构计算任务。
本申请实施例中,仅以主机端与设备端通过高速串行计算机扩展标准(peripheral component interconnect express,PCIE)进行通信为例进行示例性说明,可以理解的是,主机端与设备端还可以通过英伟达总线(NVIDIA link,NVLink)等方式进行通信,具体此处不做限定。
可选地,以主机端与设备端通过PCIE进行通信为例,异构加速计算***架构中的主机端可以理解为是兼容PCIE的设备(例如服务器等),设备端可以理解为是插在主机端上的加速卡/加速卡所在的设备。这里的加速卡可以包括后续描述的不同类型的加速器。
其中,主机端可以直接、通过容器、虚拟机等方式运行异构应用1与异构应用2。异构应用1使用虚拟功能1与虚拟功能2。异构应用2使用虚拟功能3。其中,每个虚拟功能包括独立的通信资源、内存、算力资源。即虚拟功能1包括通信资源1、内存/算力资源1;虚拟功能2包括通信资源2、内存/算力资源2;虚拟功能3包括通信资源3、内存/算力资源3。且通信资源1、通信资源2、通信资源3不同,内存/算力资源1、内存/算力资源2、内存/算力资源3不同。
另外,主机端上还可以运行管理命令,该管理命令用于配置设备端向主机端呈现的虚拟功能的数量、虚拟功能的资源(例如:通信资源、内存资源、算力资源等),配置通道可以通过设备端向主机端提供的物理功能完成。其中,该物理功能是逻辑概念,是设备端通过PCIE向主机端呈现的一种功能单元。
其中,管理命令可以用于配置相关的寄存器,该寄存器用于虚拟化设备端的物理资源。该种方式,可以实现虚拟功能资源的灵活配置。
设备端包括处理器、虚拟功能呈现装置、硬件调度装置、加速器1、加速器2、加速器3以及设备内存。其中,设备端上的处理器,用于通过加载软件配置模块的代码实现虚拟功能资源的灵活配置。即该软件配置模块为设备端上用于配置虚拟功能资源的功能单元。虚拟功能呈现装置,用于向主机端呈现虚拟功能。对于主机端与设备端通过PCIE进行通信的情况下,该虚拟功能呈现装置可以是定制的PCIE控制器等。硬件调度装置,用于从虚拟功能中的队列中获取加速计算任务,并下发给加速器实现加速计算任务的加速功能。各加速器,用于负责计算任务(例如异构计算任务)的加速。设备内存存储有计算任务执行所需要的数据和结果。
本申请实施例中,虚拟功能的呈现方式可以是Mdev(mediated device)、单根虚拟化(single-root input/output virtualization,SR-IOV)或可扩展虚拟化(scalableinput/output virtualization,SIOV)等,具体此处不做限定。对于Mdev呈现方式来说,虚拟功能可以称为Mdev设备。对于SR-IOV呈现方式来说,虚拟功能可以称为VF设备。对于SIOV呈现方式来说,虚拟功能可以称为SF设备/ADI设备。为了方便描述,本申请实施例仅以虚拟功能的呈现方式是SR-IOV,虚拟功能为VF设备为例进行示例性描述。
本申请实施例中,对于主机端上运行异构应用的数量、一个应用异构使用的虚拟功能数量、设备端中加速器的数量可以比图1所示***架构中的更多或更少,可以根据实际需要设置,具体此处不做限定。
下面结合图1的***架构对本申请提供的技术方案进行具体的介绍。请参阅图2,本申请实施例提供的设备虚拟化方法的一个流程示意图。该设备虚拟化方法可以应用于虚拟化场景,包括XPU虚拟化,具体可以是GPU虚拟化、NPU虚拟化、DPU虚拟化、TPU虚拟化等中的至少一个(或者理解为是设备端包括GPU、NPU、DPU、TPU等中的至少一个),主要用于将一个设备端虚拟化出多个虚拟设备,并支持设备端的算力和内存等资源的灵活切分。该方法可以包括步骤201至步骤207。下面对步骤201至步骤207进行详细说明。
步骤201,主机端获取管理命令。
本申请实施例中主机端获取管理命令的方式有多种方式,可以是通过用户操作的方式,也可以是通过接收其他设备发送管理命令的方式,还可以是从数据库中选取管理命令的方式等,具体此处不做限定。
其中,该管理命令用于虚拟化设备端中的物理资源以提供虚拟功能给主机端使用,或者理解为管理命令用于配置虚拟功能的虚拟资源对应在设备端中的物理资源,虚拟功能由设备端向主机端呈现。该资源用于设备端执行加速计算任务。该资源可以包括虚拟功能的数量、虚拟功能的通信资源(例如队列与设备内存中队列单元的映射关系)、算力资源(例如计算加速计算任务的加速器组)、内存资源(例如虚拟内存与物理内存之间的映射关系)等中的至少一项,具体此处不做限定。可以理解的是,对于GPU来说,上述内存资源也可以称为显存资源(例如虚拟显存与物理显存之间的映射关系)。即,对于GPU来说,可以将内存称为显存。
一般情况下,该管理命令由管理员配置,例如,管理员配置驱动包中的某些参数,使得主机端获取管理命令。
可选地,加速计算***为异构加速计算***,加速计算任务为异构加速计算任务。
步骤202,主机端向设备端发送管理命令。相应的,设备端接收主机端发送的管理命令。
主机端获取管理命令之后,向设备端发送该管理命令,以使得设备端基于管理命令配置寄存器,该寄存器用于虚拟化设备端的物理资源。
可选地,主机端通过设备端在主机端上呈现的物理功能向设备端发送该管理命令,其中,该物理功能可以理解为是用于提供加速功能的逻辑单元。该种方式,通过使用物理功能传输管理命令,由于一般情况下,物理功能供管理员使用,虚拟功能供用户使用。因此,通过物理功能传输管理命令可以使得管理命令的传输更加安全。
可选地,管理命令具体用于配置寄存器,该寄存器用于配置与虚拟功能相关的资源。
步骤203,设备端基于管理命令配置寄存器。
设备端通过物理功能接收主机端发送的管理命令之后,设备端基于管理命令配置设备端中的寄存器,该寄存器用于虚拟化设备端的物理资源,或者理解为用于配置与虚拟功能相关的资源,或者理解为寄存器用于配置与虚拟资源对应的物理资源。例如,寄存器用于配置虚拟功能的虚拟资源与物理资源的映射关系。
可选地,设备端的处理器上运行软件配置模块代码,并根据该管理命令为虚拟功能呈现装置上的虚拟功能配置相关寄存器,该寄存器可以用于配置物理资源与虚拟资源的映射关系。
本申请实施例中,一个寄存器可以对应一个虚拟功能的资源,也可以对应多个虚拟功能的资源,具体此处不做限定。
下面对于与虚拟功能相关的资源的多种情况分别进行描述:
第一种,内存资源。该情况下寄存器为虚拟内存配置寄存器。
可选地,管理命令用于配置多个虚拟功能,以及还用于配置虚拟功能的内存资源(即虚拟功能的虚拟内存与设备端物理内存之间的映射关系),用于加速器执行加速计算任务过程中数据的访存使用。设备端的处理器上运行软件配置模块代码,根据该管理命令配置虚拟功能呈现装置上的虚拟内存配置寄存器。虚拟内存配置寄存器再配置虚拟功能的虚拟内存到设备内存中物理内存的映射。
可选地,以主机端与设备端通过PCIE通信为例,虚拟功能呈现装置可以是设备端的PCIE控制器,虚拟内存配置寄存器可以通过PCIE的地址转换单元(address translationunit,ATU)窗口或新增配置描述虚拟内存到设备内存中物理内存的映射关系。
可以理解的是,为了***安全,不同虚拟功能的内存资源不同,即不同虚拟功能的虚拟内存在设备内存中的物理内存不同。
可选地,虚拟功能呈现装置根据管理命令为虚拟功能呈现内存资源对应的虚拟内存,以主机端与设备端通过PCIE通信以及虚拟功能的呈现方式是SRIOV为例,虚拟功能是PCIE SRIOV的VF设备,虚拟功能呈现装置可以通过PCIE bar ATU窗口将对应的虚拟内存进行呈现。
为了更直观的看出设备端如何基于管理命令配置虚拟功能的内存资源,下面以虚拟功能的数量是3个为例进行示例性描述。
示例性的,如图3所示,设备端通过虚拟内存配置寄存器描述虚拟内存1到设备内存中物理内存1的映射关系、虚拟内存2到设备内存中物理内存2的映射关系、虚拟内存3到设备内存中物理内存3的映射关系。即三段设备内存分别映射给虚拟功能1、虚拟功能2与虚拟功能3,并作为它们各自的内存。进一步的,为了安全隔离,虚拟功能1、虚拟功能2与虚拟功能3在设备内存中的物理内存不重叠。可以理解的是,对于上述虚拟功能、内存以及虚拟内存配置寄存器的数量此处不做限定。
可选地,以主机端与设备端通过PCIE通信为例,主机端可以通过PCIE控制器直接访问设备端的内存。当然,主机端也可以通过地址的方式访问设备端的内存。
该种方式下,可以灵活配置虚拟功能的内存大小,设备端上处理器中的软件配置模块与虚拟内存配置寄存器可以实现灵活的配置方法。例如将某几段分散的设备内存映射到某一虚拟功能,也可以灵活定义虚拟功能上的内存大小。每个虚拟功能的内存互相不影响,相互隔离。相对于现有技术中MIG技术的每个slice都是固定内存大小,不可以灵活配置,该种方式可以灵活的配置内存资源。
第二种,通信资源。该情况下寄存器为虚拟功能的队列配置寄存器。
可选地,管理命令用于配置多个虚拟功能,以及还用于配置虚拟功能的通信资源(也可以理解为是配置虚拟功能的队列在设备内存中对应的队列单元),该通信资源用于配置设备端向主机端呈现的队列。该队列对应的队列单元位于设备端中,例如可以位于设备内存中,也可以是硬件调度装置上的动态随机存取存储器(dynamic random accessmemory,DRAM)等。另外,队列是双向的,包含主机端向设备端发送的请求队列,也包括设备端向主机端发送的响应队列。或者理解为虚拟功能队列中的加速计算任务或指示信息存储在设备端中。
设备端的处理器上运行软件配置模块代码,根据该管理命令,配置硬件调度装置上的队列配置寄存器。队列配置寄存器中可以配置虚拟功能与队列单元的对应关系。
可选地,每个队列单元对应一组最小个数且不可再切分的队列。
可选地,以主机端与设备端通过PCIE通信为例,虚拟功能呈现装置可以是设备端的PCIE控制器,若虚拟功能是PCIE SRIOV的VF设备,虚拟功能呈现装置可以通过PCIE barATU窗口将对应的队列进行呈现。
可以理解的是,为了***安全,不同虚拟功能的队列不同,不同虚拟功能的队列之间相互不影响,相互隔离。
为了更直观的看出设备端如何基于管理命令配置虚拟功能的通信资源,下面以虚拟功能的数量是2个为例进行示例性描述。
示例性的,如图4所示,设备端通过虚拟功能队列配置寄存器描述虚拟功能与队列单元的对应关系。其中,队列单元为6个,分别为队列单元0、队列单元1、队列单元2、队列单元3、队列单元4、队列单元5。可以看出,队列单元0与队列2映射给虚拟功能1;队列单元4与队列单元5映射给虚拟功能2。队列1与队列3可以理解为是空闲队列。进一步的,为了安全隔离,虚拟功能1与虚拟功能2的队列在设备内存中的地址不同。可以理解的是,对于上述虚拟功能、队列以及虚拟功能队列配置寄存器的数量此处不做限定。
该种方式下,可以灵活配置虚拟功能的队列大小,设备端上处理器中的软件配置模块与队列配置寄存器可以实现灵活的配置方法。例如将某几个队列单元映射到某一虚拟功能,也可以灵活定义虚拟功能上的队列大小。每个虚拟功能的队列互相不影响,相互隔离。
第三种,算力资源。该情况下寄存器为硬件资源组配置寄存器。
可选地,管理命令用于配置多个虚拟功能,以及还用于查询所有的算力资源或配置虚拟功能的算力资源,该算力资源包括多种多样的加速器。例如图形加速器、向量运算加速器、矩阵运算加速器等。
设备端的处理器上运行软件配置模块代码,根据该管理命令,配置硬件调度装置上的硬件资源组配置寄存器。硬件资源组配置寄存器再配置虚拟功能的硬件资源组。该硬件资源组是硬件调度装置最小的隔离单元,可以理解的是,为了***安全,硬件资源组配置寄存器可以将分配给不同虚拟功能的加速器添加到不同的硬件资源组完成资源隔离。
为了更直观的看出设备端如何基于管理命令配置虚拟功能的算力资源,下面以虚拟功能的数量是2个为例进行示例性描述。
示例性的,如图5所示,设备端通过硬件资源组配置寄存器配置虚拟功能的硬件资源组。即为虚拟功能1配置了加速器1与加速器2,并将加速器1与加速器2作为虚拟功能1的算力资源调价到硬件资源组1。为虚拟功能2配置了加速器3与加速器4,并将加速器3与加速器4作为虚拟功能2的算力资源调价到硬件资源组2。可以理解的是,上述各加速器为加速器,可以是图形加速器、向量运算加速器、矩阵运算加速器等,对于虚拟功能的数量、硬件资源组配置寄存器的数量、加速器的数量、种类具体此处不做限定。进一步的,为了安全隔离,虚拟功能1与虚拟功能2的硬件资源组中可以没有相同的加速器。或者理解为,一个加速器只归属一个硬件资源组,不同硬件资源组之间不能共用一个加速器。
另外,设备端为虚拟功能配置完算力资源之后,还可以通过管理命令查询虚拟功能对应的算力资源。
该种方式下,可以灵活配置虚拟功能的算力资源,且不同算力资源(例如硬件资源组)之间互不影响。
可以理解的是,上述几种资源只是举例,在实际应用中,还可以根据实际需要配置其他的资源,具体此处不做限定。
步骤204,主机端通过虚拟功能的请求队列向设备端发送加速计算任务。相应的,设备端通过虚拟功能的请求队列接收主机端发送的加速计算任务。本步骤是可选地。
可选地,通过前述步骤201至步骤203设备端配置好与虚拟功能相关的资源之后。由于该资源是用于设备端执行加速计算任务,该加速计算任务用于设备端运行设备端中与加速计算任务对应的加速器。因此,主机端可以通过前述配置好的请求队列向设备端发送加速计算任务。或者理解为,主机端上的异构应用可以通过虚拟功能的请求队列向设备端下发加速计算任务。相应的,设备端通过虚拟功能的请求队列接收主机端发送的加速计算任务。
进一步的,运行在主机端处理器上的异构应用通过异构运行时(例如runtime动态库)将加速计算任务的请求写入虚拟功能的请求队列中,请求队列由设备端向主机端虚拟呈现,且请求队列在设备端的内存中(例如设备内存中或硬件调度装置上的DRAM中)。
本申请实施例中的加速计算任务可以是图形加速计算任务、向量运算加速计算任务、矩阵运算加速计算任务、数据拷贝任务等中的至少一项。
本申请实施例中,在主机端向设备端发送下发加速计算任务之后,可以通过硬件调度装置提供的门铃(doorbell)寄存器触发设备端处理该加速计算任务。设备端也可以通过轮询的方式触发设备端处理该加速计算任务,具体此处不做限定。
步骤205,设备端基于请求队列所属的虚拟功能将加速计算任务下发至相应的加速器组。本步骤是可选地。
可选地,设备端通过虚拟功能的请求队列接收主机端发送的加速计算任务之后,设备端中的硬件调度装置可以基于请求队列所属的虚拟功能将加速计算任务下发至相应的加速器组(即该请求队列所属的虚拟功能对应的加速器组),进而使得加速器组执行该加速计算任务。加速器执行加速计算任务的过程中,访问设备内存中虚拟功能对应的内存并将该加速计算任务所需的数据读入到加速器中进行计算,并将计算过程中产生的数据与计算结果写入到虚拟功能对应的内存中。其中,该加速器组包括至少一种类型(例如:包括图形加速计算、矩阵加速计算、向量加速计算、数据拷贝加速计算等类型)的加速器,硬件调度装置根据加速计算任务的类型将加速计算任务分配到加速器组中与该类型对应的加速器。
进一步的,加速计算任务一般包括加速器上运行的一段代码,该加速计算任务以加速器可以识别的指令集实现。加速器执行完加速计算任务之后,可以通过中断或寄存器等方式通知硬件调度装置是否完成加速计算任务。
示例性的,加速器执行完加速计算任务之后,通知硬件调度装置已完成加速计算任务。
可选地,硬件调度装置可以根据请求队列所属的虚拟功能的算力进行调度,具体可以按照时间片、优先级等方式实现,具体此处不做限定。
可选地,设备端包括图像处理器GPU、神经网络处理器NPU、数据处理器DPU、张量处理器TPU、DSP、ASIC、FPGA等中的至少一个。具体的,设备端中的加速器可以是GPU、NPU、DPU、TPU、DSP、ASIC、FPGA等中的至少一个。
步骤206,设备端通过虚拟功能的响应队列向主机端发送指示信息。相应的,主机端通过虚拟功能的响应队列接收设备端发送的指示信息。本步骤是可选地。
可选地,设备端中的加速器通知硬件调度装置已完成加速计算任务之后,设备端可以通过虚拟功能的响应队列向主机端发送指示信息,相应的,主机端通过虚拟功能的响应队列接收设备端发送的指示信息。该指示信息用于指示设备端中的加速器是否完成加速计算任务。
进一步的,硬件调度装置可以将完成的响应写入队列中的响应队列,并可以通过中断控制器的方式通知主机端是否完成加速计算任务。
示例性的,硬件调度装置通知主机端已完成加速计算任务。
步骤207,主机端从设备端的内存中获取加速器计算加速计算任务中产生的数据。本步骤是可选地。
主机端确定设备端中的加速器完成加速计算任务之后,可以从加速计算任务对应虚拟功能的内存中获取加速器计算加速计算任务中产生的数据。当然也可以从设备端的内存中获取加速器执行加速计算任务的执行结果。
为了更直观的看出数据面的传输,下面以2个异构应用、1个异构应用包括一个虚拟功能、2个硬件资源组,每个硬件资源组包括2个加速器为例进行示例性描述。
示例性的,请参阅图6,主机端上运行异构应用1与异构应用2,异构应用1使用虚拟功能1,异构应用2使用虚拟功能2。虚拟功能1被配置有请求队列1、响应队列1、虚拟内存1以及硬件资源组1,虚拟功能2被配置有请求队列2、响应队列2、虚拟内存2以及硬件资源组2。假设主机端上的异构应用1将加速计算任务写入虚拟功能1的请求队列1,设备端上的硬件调度装置解析请求队列1中的加速计算任务,并根据加速计算任务的类型将加速计算任务下发给加速器1和/或加速器2。加速器1和/或加速器2从设备内存上物理内存1中获取计算加速计算任务所需的数据,并将计算加速计算任务过程中产生的数据与计算结果写入到物理内存1中。加速器计算结束后通知硬件调度装置已完成加速计算任务,硬件调度装置通过响应写入响应队列1,并通知主机端已完成加速计算任务。主机端上的异构应用1通过访问虚拟功能1的虚拟内存1找到物理内存1,从而获取加速计算任务的结果,进而实现加速计算。
可以理解的是,设备端也可以在执行加速计算任务后,将执行加速计算任务中产生的数据拷贝到主机端的内存中,进而主机端也可以从主机端的内存中获取设备端计算加速计算任务中产生的数据。本申请实施例对主机端如何获取加速计算任务中数据的方式不做限定。
在一种可能实现的方式中,本申请实施例提供的设备虚拟化方法包括步骤201至步骤203。该种方式下,步骤201至步骤203可以理解为是管理面的通信过程。在另一种可能实现的方式中,本申请实施例提供的设备虚拟化方法包括步骤201至步骤207。该种方式下,步骤201至步骤203可以理解为是管理面的通信过程。步骤204至步骤207可以理解为是数据面的通信过程。这里对本实施例提供的设备虚拟化方法中数据面的通信过程不做限定,可以采用步骤204至步骤207的方式,也可以采用其他等方式。
本申请实施例中,一方面,通过软硬件结合实现设备端虚拟化方法。另一方面,管理面,通过软件配置寄存器的方式可以灵活配置与虚拟功能相关的资源(例如内存资源、通信资源、算力资源等),或者理解为,通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。另一方面,数据面的传输不需要经过设备端中的处理器参与,且加速计算任务与指示信息存储在设备端的内存中,可以映射给虚拟功能使用,设备端可以直接访问队列中的加速计算任务,不需要设备端发起DMA操作来获取加速计算任务。即不需要DMA队列,数据面的传输使用纯硬件(例如:硬件调度装置与加速器,硬件调度装置用于调度队列,加速器用于响应硬件调度装置的调度执行相应加速计算任务),可以提升设备端处理加速计算任务的效率,并支持资源的灵活配置与隔离。
下面对本申请实施例提供的另一种设备虚拟化方法进行描述,请参阅图7,本申请实施例提供的设备虚拟化方法的另一流程示意图。该设备虚拟化方法可以应用于虚拟化场景,包括GPU虚拟化、NPU虚拟化、DPU虚拟化、TPU虚拟化等中的至少一个(或者理解为是设备端包括GPU、NPU、DPU、TPU等中的至少一个),主要用于将一个设备端虚拟化出多个虚拟设备。该方法可以由设备端与主机端共同执行,也可以由设备端中的硬件调度装置与主机端共同执行。该方法可以包括步骤701至步骤704。下面对步骤701至步骤704进行详细说明。
步骤701,主机端通过虚拟功能的请求队列向设备端发送加速计算任务。相应的,设备端通过虚拟功能的请求队列接收主机端发送的加速计算任务。
步骤702,设备端基于请求队列所属的虚拟功能将加速计算任务下发至相应的加速器组。
步骤703,设备端通过虚拟功能的响应队列向主机端发送指示信息。相应的,主机端通过虚拟功能的响应队列接收设备端发送的指示信息。本步骤是可选地。
步骤704,主机端从设备端的内存中获取加速器计算加速计算任务中产生的数据。
本实施例中的步骤701至步骤704与前述图2所示实施例中的步骤204至步骤207类似,步骤701至步骤704具体可以参考前述图2所示实施例中步骤204至步骤207的描述,此处不再赘述。
本实施例可以理解为是数据面的通信过程,这里对本实施例提供的设备虚拟化方法中管理面的通信过程不做限定。
一种可能实现的方式中,本实施例中的设备虚拟化方法可以包括步骤701、步骤702、步骤704。另一种可能实现的方式中,本实施例中的设备虚拟化方法可以包括步骤701至步骤704。
本申请实施例中,一方面,通过软硬件结合实现设备端虚拟化方法。另一方面,数据面的传输不需要经过设备端中的处理器参与,且加速计算任务与指示信息存储在设备端的内存中,可以映射给虚拟功能使用,设备端可以直接访问队列中的加速计算任务,不需要设备端发起DMA操作来获取加速计算任务。即不需要DMA队列,数据面的传输使用纯硬件(例如:硬件调度装置与加速器,硬件调度装置用于调度队列,加速器用于响应硬件调度装置的调度执行相应加速计算任务),可以提升设备端处理加速计算任务的效率,并支持资源的灵活配置与隔离。
上面对本申请实施例中的设备虚拟化方法进行了描述,下面对本申请实施例中的设备端进行描述,请参阅图8,本申请实施例中设备端的一个实施例包括:
接收单元801,用于接收来自主机端的管理命令,管理命令用于虚拟化设备端中的物理资源以提供虚拟功能给主机端使用,物理资源用于执行加速计算任务;
配置单元802,用于基于管理命令配置设备端中的寄存器,寄存器用于虚拟化物理资源。
可选地,设备端还可以包括:传输单元803,用于通过虚拟功能的队列与主机端传输加速计算任务与指示信息,加速计算任务由设备端中与加速计算任务对应的加速器执行,指示信息用于指示设备端是否完成加速计算任务,队列由设备端向主机端虚拟呈现,加速计算任务与指示信息存储在设备端的内存中。
可选地,设备端还可以包括:下发单元804,用于基于请求队列所属的虚拟功能将加速计算任务下发至与虚拟功能对应的加速器,加速器用于完成加速计算任务,加速器计算加速计算任务中产生的数据存储于设备端的内存中。
本实施例中,设备端中各单元所执行的操作与前述图2至图6所示实施例中描述的类似,此处不再赘述。
本实施例中,在异构计算***中,接收单元801通过接收来自主机端的管理命令,管理命令用于配置与设备端在主机端上呈现的虚拟功能相关的资源,资源用于设备端执行异构计算中的加速计算任务;配置单元802基于管理命令配置寄存器,寄存器用于配置与虚拟资源对应的物理资源。相对于现有技术中各GPU实例的配置固定,本申请实施例中,设备端可以通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。
请参阅图9,本申请实施例中主机端的一个实施例包括:
获取单元901,用于获取管理命令,管理命令用于虚拟化设备端中的物理资源以提供虚拟功能给主机端使用,物理资源用于执行加速计算任务;
发送单元902,用于向设备端发送管理命令,以使得设备端通过管理命令配置寄存器,寄存器用于虚拟化物理资源。
可选地,主机端还可以包括:传输单元903,用于通过虚拟功能的队列与设备端传输加速计算任务和/或指示信息,加速计算任务由设备端中与加速计算任务对应的加速器执行,指示信息用于指示设备端是否完成加速计算任务,队列由设备端向主机端虚拟呈现,加速计算任务与指示信息存储在设备端的内存中。
本实施例中,主机端中各单元所执行的操作与前述图2至图6所示实施例中描述的类似,此处不再赘述。
本实施例中,在异构计算***中,发送单元902向设备端发送管理命令,以使得设备端通过管理命令配置寄存器,寄存器用于配置资源。相对于现有技术中各GPU实例的配置固定,本申请实施例中,发送单元902通过向设备端发送管理命令,以使得设备端可以通过管理命令与寄存器的方式灵活配置虚拟功能实现加速计算任务所需要的资源。
请参阅图10,本申请实施例中设备端的另一个实施例包括:
传输单元1001,用于通过设备端在主机端上呈现的虚拟功能的队列与主机端传输加速计算任务,加速计算任务由设备端中与加速计算任务对应的加速器执行,队列由设备端向主机端虚拟呈现,加速计算任务存储在设备端的内存中。
可选地,设备端还可以包括:下发单元1002,用于基于队列所属的虚拟功能将加速计算任务下发至加速器,加速器组用于完成加速计算任务,加速器计算加速计算任务中产生的数据存储于设备端的内存中。
本实施例中,设备端中各单元所执行的操作与前述图7所示实施例中描述的类似,此处不再赘述。
本实施例中,数据面的传输不需要经过设备端中的处理器参与,且加速计算任务与指示信息存储在设备端的内存中,可以映射给虚拟功能使用,设备端可以直接访问队列中的加速计算任务,不需要设备端发起DMA操作来获取加速计算任务。即不需要DMA队列,数据面的传输使用纯硬件,可以提升设备端处理加速计算任务的效率。
请参阅图11,本申请实施例中主机端的另一个实施例包括:
获取单元1101,用于获取加速计算任务;
传输单元1102,用于通过设备端在主机端上呈现的虚拟功能的队列与设备端传输加速计算任务,加速计算任务由设备端中与加速计算任务对应的加速器执行,队列由设备端向主机端虚拟呈现,加速计算任务存储在设备端的内存中。
本实施例中,主机端中各单元所执行的操作与前述图7所示实施例中描述的类似,此处不再赘述。
本实施例中,数据面的传输不需要经过设备端中的处理器参与,且加速计算任务与指示信息存储在设备端的内存中,可以映射给虚拟功能使用,设备端可以直接访问队列中的加速计算任务,不需要设备端发起DMA操作来获取加速计算任务。即不需要DMA队列,数据面的传输使用纯硬件,可以提升设备端处理加速计算任务的效率。
参阅图12,本申请提供的另一种设备端的结构示意图。该设备端可以包括处理器1201、存储器1202、通信端口1203和寄存器1204。该处理器1201、存储器1202、通信端口1203和寄存器1204通过线路互联。其中,存储器1202中存储有程序指令和数据。
存储器1202中存储了前述图1至图6所示对应的实施方式中,由设备端执行的步骤对应的程序指令以及数据。
处理器1201,用于执行前述图1至图6所示实施例中任一实施例所示的由设备端执行的步骤。其中,处理器1201中包括软件配置模块,用于配置虚拟功能的资源。具体可以参考前述图1至图6所示实施例中软件配置模块的描述,此处不再赘述。
通信端口1203可以用于进行数据的接收和发送,用于执行前述图1至图6所示实施例中任一实施例中与获取、发送、接收相关的步骤。
寄存器1204,用于设备端配置虚拟功能的虚拟资源与物理资源的映射关系。
可选地,寄存器1204可以理解为是与处理器1201、PCIE控制器(若存在的情况)、硬件调度装置(若存在的情况)之间交互的接口。
可选地,设备端还可以包括加速器1205,用于执行前述图1至图6所示实施例中的加速计算任务。
一种实现方式中,设备端可以包括相对于图12更多或更少的部件,例如,图12所示的设备端还可以包括加速器、PCIE控制器、硬件调度装置等中的至少一项,本申请对此仅仅是示例性说明,并不作限定。
参阅图13,本申请提供的另一种主机端的结构示意图。该主机端可以包括处理器1301、存储器1302和通信端口1303。该处理器1301、存储器1302和通信端口1303通过线路互联。其中,存储器1302中存储有程序指令和数据。
存储器1302中存储了前述图1至图6所示对应的实施方式中,由主机端执行的步骤对应的程序指令以及数据。
处理器1301,用于执行前述图1至图6所示实施例中任一实施例所示的由主机端执行的步骤。
通信端口1303可以用于进行数据的接收和发送,用于执行前述图1至图6所示实施例中任一实施例中与获取、发送、接收相关的步骤。
进一步的,该通信端口可以连接如图12所示的设备端,以实现加速计算任务。
一种实现方式中,主机端可以包括相对于图13更多或更少的部件,本申请对此仅仅是示例性说明,并不作限定。
参阅图14,本申请提供的另一种设备端的结构示意图。该设备端可以包括硬件调度装置1401、存储器1402和通信端口1403。该硬件调度装置1401、存储器1402和通信端口1403通过线路互联。其中,存储器1402中存储有程序指令和数据。
存储器1402中存储了前述图7所示对应的实施方式中,由设备端执行的步骤对应的程序指令以及数据。例如,存储器1402用于映射虚拟功能的队列。
硬件调度装置1401,用于执行前述图7所示实施例中任一实施例所示的由设备端执行的步骤。例如,硬件调度装置1401用于调度队列。
通信端口1403可以用于进行数据的接收和发送,用于执行前述图7所示实施例中任一实施例中与获取、发送、接收相关的步骤。
可选地,设备端还可以包括加速器1404,用于执行前述图7所示实施例中的加速计算任务。
一种实现方式中,设备端可以包括相对于图14更多或更少的部件,例如,图14所示的设备端还可以包括加速器,用于响应硬件调度装置1401的调度执行相应加速计算任务。本申请对此仅仅是示例性说明,并不作限定。
参阅图15,本申请提供的另一种主机端的结构示意图。该主机端可以包括处理器1501、存储器1502和通信端口1503。该处理器1501、存储器1502和通信端口1503通过线路互联。其中,存储器1502中存储有程序指令和数据。
存储器1502中存储了前述图7所示对应的实施方式中,由主机端执行的步骤对应的程序指令以及数据。
处理器1501,用于执行前述图7所示实施例中任一实施例所示的由主机端执行的步骤。
通信端口1503可以用于进行数据的接收和发送,用于执行前述图7所示实施例中任一实施例中与获取、发送、接收相关的步骤。
进一步的,该通信端口可以连接如图14所示的设备端,以实现加速计算任务。
一种实现方式中,主机端可以包括相对于图15更多或更少的部件,本申请对此仅仅是示例性说明,并不作限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。
当使用软件实现所述集成的单元时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、***、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
Claims (23)
1.一种设备虚拟化方法,其特征在于,所述方法应用于加速计算***,所述加速计算***包括主机端以及与所述主机端连接的设备端,所述方法包括:
所述设备端接收来自所述主机端的管理命令,所述管理命令用于虚拟化所述设备端中的物理资源以提供虚拟功能给所述主机端使用,所述物理资源用于执行加速计算任务;
所述设备端基于所述管理命令配置所述设备端中的寄存器,所述寄存器用于虚拟化所述物理资源。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述设备端通过队列与所述主机端传输所述加速计算任务,所述队列由所述设备端向所述主机端虚拟呈现,所述加速计算任务存储在所述设备端的内存中。
3.根据权利要求1或2所述的方法,其特征在于,所述加速计算任务包括图形加速计算任务、向量运算加速计算任务、矩阵运算加速计算任务、数据拷贝加速计算任务、视频编解码加速计算任务中的至少一项。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述寄存器用于配置以下至少一项:
所述虚拟功能的数量;
所述虚拟功能的虚拟内存与所述设备端中物理内存的映射关系;
所述虚拟功能的队列与所述设备端中内存地址的映射关系,所述队列由所述设备端向所述主机端虚拟呈现,所述队列用于所述主机端与所述设备端传输所述加速计算任务与指示信息,所述指示信息用于指示所述设备端是否完成所述加速计算任务;
所述虚拟功能的加速器组中不同类型加速器的数量。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述虚拟功能的数量为多个时,不同虚拟功能对应的物理资源不同。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述加速计算***为异构加速计算***,所述加速计算任务为异构加速计算任务。
7.一种设备虚拟化方法,其特征在于,所述方法应用于加速计算***,所述加速计算***包括主机端以及与所述主机端连接的设备端,所述方法包括:
所述主机端获取管理命令,所述管理命令用于虚拟化所述设备端中的物理资源以提供虚拟功能给所述主机端使用,所述物理资源用于执行加速计算任务;
所述主机端向所述设备端发送所述管理命令,以使得所述设备端通过所述管理命令配置寄存器,所述寄存器用于虚拟化所述物理资源。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述主机端通过所述虚拟功能的队列与所述设备端传输所述加速计算任务,所述队列由所述设备端向所述主机端虚拟呈现,所述加速计算任务存储在所述设备端的内存中。
9.根据权利要求7或8所述的方法,其特征在于,所述加速计算任务包括图形加速计算任务、向量运算加速计算任务、矩阵运算加速计算任务、数据拷贝加速计算任务、视频编解码加速计算任务中的至少一项。
10.根据权利要求7至9中任一项所述的方法,其特征在于,所述寄存器用于配置以下至少一项:
所述虚拟功能的数量;
所述虚拟功能的虚拟内存与所述设备端中物理内存的映射关系;
所述虚拟功能的队列与所述设备端中内存地址的映射关系,所述队列由所述设备端向所述主机端虚拟呈现,所述队列用于所述主机端与所述设备端传输所述加速计算任务与指示信息,所述指示信息用于指示所述设备端是否完成所述加速计算任务;
所述虚拟功能的加速器组中不同类型加速器的数量。
11.根据权利要求7至10中任一项所述的方法,其特征在于,所述虚拟功能的数量为多个时,不同虚拟功能对应的物理资源不同。
12.根据权利要求7至11中任一项所述的方法,其特征在于,所述加速计算***为异构加速计算***,所述加速计算任务为异构加速计算任务。
13.一种设备虚拟化方法,其特征在于,所述方法应用于加速计算***,所述加速计算***包括主机端以及与所述主机端连接的设备端,所述方法包括:
所述设备端通过所述设备端在所述主机端上呈现的虚拟功能的队列与所述主机端传输加速计算任务,所述加速计算任务由所述设备端中与所述加速计算任务对应的加速器执行,所述队列由所述设备端向所述主机端虚拟呈现,所述加速计算任务存储在所述设备端的内存中。
14.根据权利要求13所述的方法,其特征在于,所述加速计算***为异构加速计算***,所述加速计算任务为异构加速计算任务。
15.一种设备虚拟化方法,其特征在于,所述方法应用于加速计算***,所述加速计算***包括主机端以及与所述主机端连接的设备端,所述方法包括:
所述主机端获取加速计算任务;
所述主机端通过所述设备端在所述主机端上呈现的虚拟功能的队列与所述设备端传输所述加速计算任务,所述加速计算任务由所述设备端中与所述加速计算任务对应的加速器执行,所述队列由所述设备端向所述主机端虚拟呈现,所述加速计算任务存储在所述设备端的内存中。
16.根据权利要求15所述的方法,其特征在于,所述加速计算***为异构加速计算***,所述加速计算任务为异构加速计算任务。
17.一种设备端,其特征在于,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得所述设备端执行如权利要求1至6中任一项所述的方法。
18.一种主机端,其特征在于,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得所述主机端执行如权利要求7至12中任一项所述的方法。
19.一种设备端,其特征在于,包括:硬件调度装置,所述硬件调度装置与存储器耦合,所述存储器用于映射虚拟功能的队列,所述硬件调度装置用于调度所述队列,使得所述设备端执行如权利要求13或14所述的方法。
20.一种主机端,其特征在于,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得所述主机端执行如权利要求15或16所述的方法。
21.一种加速计算***,其特征在于,包括如权利要求17所示的设备端以及如权利要求18所示的主机端,或者包括如权利要求19所示的设备端以及如权利要求20所示的主机端。
22.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在终端设备上运行时,使得所述终端设备执行如权利要求1至16中任一项所述的方法。
23.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1至16中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210454774.6A CN116974736A (zh) | 2022-04-24 | 2022-04-24 | 一种设备虚拟化方法及相关设备 |
PCT/CN2023/090008 WO2023207829A1 (zh) | 2022-04-24 | 2023-04-23 | 一种设备虚拟化方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210454774.6A CN116974736A (zh) | 2022-04-24 | 2022-04-24 | 一种设备虚拟化方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116974736A true CN116974736A (zh) | 2023-10-31 |
Family
ID=88470034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210454774.6A Pending CN116974736A (zh) | 2022-04-24 | 2022-04-24 | 一种设备虚拟化方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116974736A (zh) |
WO (1) | WO2023207829A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194735B2 (en) * | 2017-09-29 | 2021-12-07 | Intel Corporation | Technologies for flexible virtual function queue assignment |
CN113419845A (zh) * | 2021-02-22 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 计算加速方法和装置、计算***、电子设备及计算机可读存储介质 |
CN113296884B (zh) * | 2021-02-26 | 2022-04-22 | 阿里巴巴集团控股有限公司 | 虚拟化方法、装置、电子设备、介质及资源虚拟化*** |
CN114138405A (zh) * | 2021-10-31 | 2022-03-04 | 郑州云海信息技术有限公司 | 一种虚拟机创建方法、装置及电子设备和存储介质 |
-
2022
- 2022-04-24 CN CN202210454774.6A patent/CN116974736A/zh active Pending
-
2023
- 2023-04-23 WO PCT/CN2023/090008 patent/WO2023207829A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023207829A1 (zh) | 2023-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9798682B2 (en) | Completion notification for a storage device | |
US8082418B2 (en) | Method and apparatus for coherent device initialization and access | |
US11290392B2 (en) | Technologies for pooling accelerator over fabric | |
KR101495862B1 (ko) | 제로 클라이언트를 지원하는 가상화 서버 및 가상 머신 관리 방법 | |
KR101807310B1 (ko) | 호스트 usb 어댑터 가상화 | |
Peng et al. | {MDev-NVMe}: A {NVMe} Storage Virtualization Solution with Mediated {Pass-Through} | |
US20220121607A1 (en) | Io processing method and apparatus | |
US10275558B2 (en) | Technologies for providing FPGA infrastructure-as-a-service computing capabilities | |
CN113867993B (zh) | 虚拟化的rdma方法、***、存储介质及电子设备 | |
CN113312143A (zh) | 云计算***、命令处理方法及虚拟化仿真装置 | |
CN113419845A (zh) | 计算加速方法和装置、计算***、电子设备及计算机可读存储介质 | |
WO2022001808A1 (zh) | 一种***以及中断处理方法 | |
CN114691286A (zh) | 服务器***、虚拟机创建方法及装置 | |
CN109656675B (zh) | 总线设备、计算机设备及实现物理主机云存储的方法 | |
CN116774933A (zh) | 存储设备的虚拟化处理方法、桥接设备、***及介质 | |
CN115421787A (zh) | 指令执行方法、装置、设备、***、程序产品及介质 | |
CN115202827A (zh) | 处理虚拟化中断的方法、中断控制器、电子设备和芯片 | |
US20140237017A1 (en) | Extending distributed computing systems to legacy programs | |
CN114397999A (zh) | 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备 | |
US20230153153A1 (en) | Task processing method and apparatus | |
CN113849277B (zh) | 网卡测试方法、装置、计算机设备及计算机可读存储介质 | |
CN115913953A (zh) | 一种云资源加速方法、装置及其介质 | |
CN116974736A (zh) | 一种设备虚拟化方法及相关设备 | |
CN110383255A (zh) | 管理对物理设备的客户分区访问 | |
CN108415779A (zh) | 用于通过主机结构接口的队列管理的技术 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |