CN109634720B - 一种多虚拟机共享fpga板卡的方法、***及装置 - Google Patents
一种多虚拟机共享fpga板卡的方法、***及装置 Download PDFInfo
- Publication number
- CN109634720B CN109634720B CN201811527156.XA CN201811527156A CN109634720B CN 109634720 B CN109634720 B CN 109634720B CN 201811527156 A CN201811527156 A CN 201811527156A CN 109634720 B CN109634720 B CN 109634720B
- Authority
- CN
- China
- Prior art keywords
- virtual
- pcie
- fpga board
- virtual machines
- layer
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- 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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- 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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Computer Security & Cryptography (AREA)
Abstract
本发明公开了一种多虚拟机共享FPGA板卡的方法、***及装置。具体地,本申请创建PCIE虚拟层(包括若干个PCIE子虚拟层)和虚拟PCIE设备,且一个虚拟机对应一个虚拟PCIE设备,多个虚拟PCIE设备对应一个PCIE子虚拟层,一个PCIE子虚拟层对应一个FPGA板卡,从而实现多个虚拟机通过一个PCIE子虚拟层共享使用FPGA板卡(即多个虚拟机共享一个PCIE总线,均通过该PCIE总线访问FPGA板卡),从而解决了部分虚拟机无法同时启动的问题,提高了用户的体验效果。
Description
技术领域
本发明涉及云服务器领域,特别是涉及一种多虚拟机共享FPGA板卡的方法、***及装置。
背景技术
云服务器是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。用户无需购买硬件,只需要在云服务器上申请服务器资源即可实现任意的服务器的部署。目前,云服务器上通常会配置多个虚拟机,以便多用户可同时进行操作且互不影响。而对于一些人工智能、深度学习等计算能力要求较高的应用场景,云服务器需要通过PCIE(peripheralcomponent interconnect express,外设部件高速互连)接口扩展FPGA(Field-ProgrammableGateArray,现场可编程门阵列)板卡,以扩展云服务器的逻辑计算能力,支持这些应用场景。
现有技术中,一个FPGA板卡只能供一个虚拟机使用。但是,云服务器的PCIE接口的个数有限,导致能够扩展的FPGA板卡的个数有限。当在云服务器上启动虚拟机的个数大于FPGA板卡扩展的个数时,会导致部分虚拟机没有对应的FPGA板卡使用。若要使每个虚拟机都能使用FPGA板卡,一般采用分时使用的方式实现,但此方式会导致分时使用的虚拟机无法同时启动,从而降低了用户的体验效果。
因此,如何提供一种解决上述技术问题的方案是本领域的技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种多虚拟机共享FPGA板卡的方法、***及装置,实现了多个虚拟机共享使用FPGA板卡,从而解决了部分虚拟机无法同时启动的问题,提高了用户的体验效果。
为解决上述技术问题,本发明提供了一种多虚拟机共享FPGA板卡的方法,包括:
预先在云服务器的主机***中创建PCIE虚拟层;其中,所述PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;所述FPGA板卡为供配置于所述云服务器的虚拟机共享使用的加速卡;
预先从所述虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个所述PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备;
当所述虚拟机中的第一虚拟机启动后,使所述第一虚拟机加载对应的第一PCIE子虚拟层的第一虚拟PCIE设备;
利用所述第一虚拟PCIE设备接收所述第一虚拟机的待处理数据,并利用所述第一PCIE子虚拟层将所述待处理数据发送至对应的第一FPGA板卡,以使所述第一FPGA板卡在多虚拟机同时发送待处理数据时按照预设共享处理模式进行数据处理,并将处理后的数据返回至对应虚拟机。
优选地,预先在云服务器的主机***中创建PCIE虚拟层;其中,所述PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;所述FPGA板卡为供配置于所述云服务器的虚拟机共享使用的加速卡;预先从所述虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个所述PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备的过程,包括:
预先获取供配置于云服务器的虚拟机使用的FPGA板卡的个数和所述虚拟机的个数;
当FPGA板卡的个数小于所述虚拟机的个数时,从所述FPGA板卡中确定供多个虚拟机共享使用的FPGA板卡,且从所述虚拟机中确定共享使用同一FPGA板卡的虚拟机,以为所有虚拟机分配好FPGA板卡;
在所述云服务器的主机***中创建PCIE虚拟层;其中,所述PCIE虚拟层包括与供多个虚拟机共享使用的FPGA板卡一一对应的PCIE子虚拟层;
根据所有虚拟机的分配结果,确定每个所述PCIE子虚拟层所交互的虚拟机,并在每个所述PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备。
优选地,所述利用所述第一虚拟PCIE设备接收所述第一虚拟机的待处理数据,并利用所述第一PCIE子虚拟层将所述待处理数据发送至对应的第一FPGA板卡的过程,包括:
利用所述第一虚拟PCIE设备接收所述第一虚拟机的待处理数据,并将所述待处理数据写入至所述第一PCIE子虚拟层中预先为所述第一虚拟PCIE设备配置的共享内存,以利用所述第一PCIE子虚拟层将所述待处理数据发送至对应的第一FPGA板卡。
优选地,所述预设共享处理模式的设置过程包括:
预先设置共享使用同一FPGA板卡的多个虚拟机的优先级;
当共享使用同一FPGA板卡的多个虚拟机同时发送待处理数据时,使该FPGA板卡按照所述优先级进行数据处理;其中,优先级较高的虚拟机的数据处理顺序在优先级较低的虚拟机的数据处理顺序之前。
优选地,所述预设共享处理模式的设置过程包括:
当共享使用同一FPGA板卡的多个虚拟机同时发送待处理数据时,使该FPGA板卡按照先进先出的规则进行数据处理。
优选地,该方法还包括:
当所述虚拟机的共享关系发生变化时,按照所述虚拟机的当前共享关系重新创建所述PCIE虚拟层和所述虚拟PCIE设备。
为解决上述技术问题,本发明还提供了一种多虚拟机共享FPGA板卡的***,包括:
创建模块,用于预先在云服务器的主机***中创建PCIE虚拟层;其中,所述PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;所述FPGA板卡为供配置于所述云服务器的虚拟机共享使用的加速卡;预先从所述虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个所述PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备;
虚拟设备加载模块,用于当所述虚拟机中的第一虚拟机启动后,使所述第一虚拟机加载对应的第一PCIE子虚拟层的第一虚拟PCIE设备;
数据处理模块,用于利用所述第一虚拟PCIE设备接收所述第一虚拟机的待处理数据,并利用所述第一PCIE子虚拟层将所述待处理数据发送至对应的第一FPGA板卡,以使所述第一FPGA板卡在多虚拟机同时发送待处理数据时按照预设共享处理模式进行数据处理,并将处理后的数据返回至对应虚拟机。
优选地,所述创建模块包括:
个数获取单元,用于预先获取供配置于云服务器的虚拟机使用的FPGA板卡的个数和所述虚拟机的个数;
虚拟机分配单元,用于当FPGA板卡的个数小于所述虚拟机的个数时,从所述FPGA板卡中确定供多个虚拟机共享使用的FPGA板卡,且从所述虚拟机中确定共享使用同一FPGA板卡的虚拟机,以为所有虚拟机分配好FPGA板卡;
虚拟层创建单元,用于在所述云服务器的主机***中创建PCIE虚拟层;其中,所述PCIE虚拟层包括与供多个虚拟机共享使用的FPGA板卡一一对应的PCIE子虚拟层;
虚拟设备创建单元,用于根据所有虚拟机的分配结果,确定每个所述PCIE子虚拟层所交互的虚拟机,并在每个所述PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备。
优选地,该***还包括:
重新创建模块,用于当所述虚拟机的共享关系发生变化时,按照所述虚拟机的当前共享关系重新创建所述PCIE虚拟层和所述虚拟PCIE设备。
为解决上述技术问题,本发明还提供了一种多虚拟机共享FPGA板卡的装置,包括:
存储器,用于存储计算机程序;
处理器,用于在执行所述计算机程序时实现上述任一种多虚拟机共享FPGA板卡的方法。
本发明提供了一种多虚拟机共享FPGA板卡的方法,包括:预先在云服务器的主机***中创建PCIE虚拟层;其中,PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;FPGA板卡为供配置于云服务器的虚拟机共享使用的加速卡;预先从虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备;当虚拟机中的第一虚拟机启动后,使第一虚拟机加载对应的第一PCIE子虚拟层的第一虚拟PCIE设备;利用第一虚拟PCIE设备接收第一虚拟机的待处理数据,并利用第一PCIE子虚拟层将待处理数据发送至对应的第一FPGA板卡,以使第一FPGA板卡在多虚拟机同时发送待处理数据时按照预设共享处理模式进行数据处理,并将处理后的数据返回至对应虚拟机。
可见,本申请创建PCIE虚拟层(包括若干个PCIE子虚拟层)和虚拟PCIE设备,且一个虚拟机对应一个虚拟PCIE设备,多个虚拟PCIE设备对应一个PCIE子虚拟层,一个PCIE子虚拟层对应一个FPGA板卡,从而实现多个虚拟机通过一个PCIE子虚拟层共享使用FPGA板卡(即多个虚拟机共享一个PCIE总线,均通过该PCIE总线访问FPGA板卡),进而解决了部分虚拟机无法同时启动的问题,提高了用户的体验效果。
本发明还提供了一种多虚拟机共享FPGA板卡的***及装置,与上述共享方法具有相同的有益效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种多虚拟机共享FPGA板卡的方法的实施例;
图2为本发明实施例提供的一种多虚拟机共享FPGA板卡的原理图;
图3为本发明实施例提供的一种多虚拟机共享FPGA板卡的***的结构示意图。
具体实施方式
本发明的核心是提供一种多虚拟机共享FPGA板卡的方法、***及装置,实现了多个虚拟机共享使用FPGA板卡,从而解决了部分虚拟机无法同时启动的问题,提高了用户的体验效果。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,图1为本发明实施例提供的一种多虚拟机共享FPGA板卡的方法的实施例。
该多虚拟机共享FPGA板卡的方法包括:
步骤S1:预先在云服务器的主机***中创建PCIE虚拟层;其中,PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;FPGA板卡为供配置于云服务器的虚拟机共享使用的加速卡。
具体地,云服务器中配置多个虚拟机,且通过PCIE接口扩展多个FPGA板卡。当FPGA板卡的个数不够虚拟机使用时,本申请考虑多个虚拟机共享使用同一FPGA板卡,从而避免部分虚拟机无法同时启动的情况出现。
本申请提前根据虚拟机的个数和FPGA板卡的个数确定需要共享使用的FPGA板卡的个数,目的是保证所有虚拟机均能够有对应的FPGA板卡来加速数据处理。比如,虚拟机的个数为4个,FPGA板卡的个数为3个,此时多余出来的1个虚拟机需要与其它3个虚拟机中任一虚拟机共享使用同一FPGA板卡,即此情况下需要共享使用的FPGA板卡的个数为1。又比如,虚拟机的个数为4个,FPGA板卡的个数为2个,此时4个虚拟机应配成2对,2对虚拟机一一共享使用2个FPGA板卡(比如,3个虚拟机组成其中一对虚拟机,剩余1个虚拟机单独组成另一对虚拟机,即此情况下需要共享使用的FPGA板卡的个数为1;又比如,2个虚拟机组成其中一对虚拟机,剩余2个虚拟机组成另一对虚拟机,即此情况下需要共享使用的FPGA板卡的个数为2)。
在确定需要共享使用的FPGA板卡的个数后,本申请按照确定的个数从所有FPGA板卡选择出共享使用的FPGA板卡。基于此,本申请在云服务器的主机***中创建PCIE虚拟层,PCIE虚拟层包括与选择出的FPGA板卡一一对应的PCIE子虚拟层。
步骤S2:预先从虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备。
具体地,本申请提前从所有虚拟机中,为选择出的共享使用的FPGA板卡分配多个虚拟机,目的是实现所有虚拟机均有对应的FPGA板卡来加速数据处理。已知1个PCIE子虚拟层对应1个共享使用的FPGA板卡,1个共享使用的FPGA板卡对应为此FPGA板卡所分配的多个虚拟机(即1个PCIE子虚拟层对应这里的多个虚拟机)。本申请的最终目的是每个PCIE子虚拟层与自身对应的多个虚拟机进行数据交互,并利用PCIE驱动与自身对应的FPGA板卡进行数据交互(即间接实现多个虚拟机与同一FPGA板卡进行数据交互),相当于多个虚拟机共享同一PCIE总线,并通过此PCIE总线访问同一FPGA板卡,从而实现多个虚拟机共享使用同一FPGA板卡。
更具体地,本申请在每个PCIE子虚拟层中创建与自身所交互的虚拟机一一对应的虚拟PCIE设备。对于虚拟机来说,虚拟机认为与自身对应的虚拟PCIE设备是FPGA板卡,所以虚拟机此时认为自己在独享FPGA板卡的计算资源。
比如,请参照图2,图2为本发明实施例提供的一种多虚拟机共享FPGA板卡的原理图。虚拟机中的虚拟机1和虚拟机2共享使用FPGA板卡1,虚拟机3和虚拟机4共享使用FPGA板卡2。在云服务器的主机***中创建PCIE虚拟层时,为FPGA板卡1创建PCIE子虚拟层1,为FPGA板卡2创建PCIE子虚拟层2;且在PCIE子虚拟层1中为虚拟机1创建虚拟PCIE设备1、为虚拟机2创建虚拟PCIE设备2,在PCIE子虚拟层2中为虚拟机3创建虚拟PCIE设备3、为虚拟机4创建虚拟PCIE设备4,从而实现虚拟PCIE设备与虚拟机一一进行数据交互,并由PCIE子虚拟层统一管理数据收发。
步骤S3:当虚拟机中的第一虚拟机启动后,使第一虚拟机加载对应的第一PCIE子虚拟层的第一虚拟PCIE设备。
具体地,在共享使用同一FPGA板卡的虚拟机中,任一虚拟机(称为第一虚拟机)启动后,本申请会使第一虚拟机加载对应的第一PCIE子虚拟层的第一虚拟PCIE设备,从而建立起第一虚拟机与第一虚拟PCIE设备之间的数据通信。
步骤S4:利用第一虚拟PCIE设备接收第一虚拟机的待处理数据,并利用第一PCIE子虚拟层将待处理数据发送至对应的第一FPGA板卡,以使第一FPGA板卡在多虚拟机同时发送待处理数据时按照预设共享处理模式进行数据处理,并将处理后的数据返回至对应虚拟机。
需要说明的是,本申请的预设是提前设置好的,只需要设置一次,除非根据实际情况需要修改,否则不需要重新设置。
具体地,在第一虚拟机与第一虚拟PCIE设备之间的数据通信建立后,第一虚拟机便可在有数据需要处理时,将待处理数据发送至第一虚拟PCIE设备。第一虚拟PCIE设备在接收到待处理数据后,将待处理数据交由第一PCIE子虚拟层管理(需要说明的是,第一PCIE子虚拟层知道待处理数据是由第一虚拟机发出的)。
第一PCIE子虚拟层会将待处理数据发送至对应的第一FPGA板卡,供第一FPGA板卡处理。而此时若第一FPGA板卡只接收到第一虚拟机的待处理数据,则第一FPGA板卡会直接处理第一虚拟机的待处理数据,并将处理后的数据返回至第一PCIE子虚拟层,而后经由第一虚拟PCIE设备返回至第一虚拟机;若第一FPGA板卡在接收到第一虚拟机的待处理数据的同时还接收到其它虚拟机的待处理数据,则第一FPGA板卡会按照预设共享处理模式(表示多个虚拟机的待处理数据的处理规则,即决定数据处理的先后顺序)进行数据处理,并将处理后的数据返回至第一PCIE子虚拟层统一管理,而后第一PCIE子虚拟层将处理后的数据对应经虚拟PCIE设备返回至虚拟机。
比如,图2中,若虚拟机1和虚拟机2同时发送待处理数据,则FPGA板卡1会接收到二者的待处理数据,并按照预设共享处理模式进行数据处理。然后,将虚拟机1对应的数据处理结果返回至PCIE子虚拟层1,而后经由虚拟PCIE设备1返回至虚拟机1;同理将虚拟机2对应的数据处理结果返回至PCIE子虚拟层1,而后经由虚拟PCIE设备2返回至虚拟机2。
本发明提供了一种多虚拟机共享FPGA板卡的方法,包括:预先在云服务器的主机***中创建PCIE虚拟层;其中,PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;FPGA板卡为供配置于云服务器的虚拟机共享使用的加速卡;预先从虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备;当虚拟机中的第一虚拟机启动后,使第一虚拟机加载对应的第一PCIE子虚拟层的第一虚拟PCIE设备;利用第一虚拟PCIE设备接收第一虚拟机的待处理数据,并利用第一PCIE子虚拟层将待处理数据发送至对应的第一FPGA板卡,以使第一FPGA板卡在多虚拟机同时发送待处理数据时按照预设共享处理模式进行数据处理,并将处理后的数据返回至对应虚拟机。
可见,本申请创建PCIE虚拟层(包括若干个PCIE子虚拟层)和虚拟PCIE设备,且一个虚拟机对应一个虚拟PCIE设备,多个虚拟PCIE设备对应一个PCIE子虚拟层,一个PCIE子虚拟层对应一个FPGA板卡,从而实现多个虚拟机通过一个PCIE子虚拟层共享使用FPGA板卡(即多个虚拟机共享一个PCIE总线,均通过该PCIE总线访问FPGA板卡),进而解决了部分虚拟机无法同时启动的问题,提高了用户的体验效果。
在上述实施例的基础上:
作为一种可选地实施例,预先在云服务器的主机***中创建PCIE虚拟层;其中,PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;FPGA板卡为供配置于云服务器的虚拟机共享使用的加速卡;预先从虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备的过程,包括:
预先获取供配置于云服务器的虚拟机使用的FPGA板卡的个数和虚拟机的个数;
当FPGA板卡的个数小于虚拟机的个数时,从FPGA板卡中确定供多个虚拟机共享使用的FPGA板卡,且从虚拟机中确定共享使用同一FPGA板卡的虚拟机,以为所有虚拟机分配好FPGA板卡;
在云服务器的主机***中创建PCIE虚拟层;其中,PCIE虚拟层包括与供多个虚拟机共享使用的FPGA板卡一一对应的PCIE子虚拟层;
根据所有虚拟机的分配结果,确定每个PCIE子虚拟层所交互的虚拟机,并在每个PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备。
具体地,本申请创建PCIE虚拟层和虚拟PCIE设备的过程包括:本申请提前获取云服务器中配置的虚拟机的个数和云服务器扩展的FPGA板卡的个数,并将虚拟机的个数与FPGA板卡的个数进行大小比较,当FPGA板卡的个数小于虚拟机的个数时,说明FPGA板卡的个数不够虚拟机使用,则考虑多个虚拟机共享使用同一FPGA板卡。至于如何通过创建PCIE虚拟层和虚拟PCIE设备实现多个虚拟机共享使用同一FPGA板卡,上述实施例已作详细介绍,本申请在此不再赘述。
作为一种可选地实施例,利用第一虚拟PCIE设备接收第一虚拟机的待处理数据,并利用第一PCIE子虚拟层将待处理数据发送至对应的第一FPGA板卡的过程,包括:
利用第一虚拟PCIE设备接收第一虚拟机的待处理数据,并将待处理数据写入至第一PCIE子虚拟层中预先为第一虚拟PCIE设备配置的共享内存,以利用第一PCIE子虚拟层将待处理数据发送至对应的第一FPGA板卡。
具体地,本申请提前在每个PCIE子虚拟层中分别为所创建的每个虚拟PCIE设备配置共享内存,使虚拟PCIE设备通过共享内存的方式与对应的虚拟机进行数据的交互,并由PCIE子虚拟层统一管理数据的收发。比如,在第一虚拟机与第一虚拟PCIE设备之间的数据通信建立后,第一虚拟机便可在有数据需要处理时,将待处理数据发送至第一虚拟PCIE设备,第一虚拟PCIE设备会将待处理数据写入至第一PCIE子虚拟层中提前为第一虚拟PCIE设备配置的共享内存,从而利用第一PCIE子虚拟层将待处理数据发送至对应的第一FPGA板卡。
作为一种可选地实施例,预设共享处理模式的设置过程包括:
预先设置共享使用同一FPGA板卡的多个虚拟机的优先级;
当共享使用同一FPGA板卡的多个虚拟机同时发送待处理数据时,使该FPGA板卡按照优先级进行数据处理;其中,优先级较高的虚拟机的数据处理顺序在优先级较低的虚拟机的数据处理顺序之前。
具体地,本申请的共享处理模式可以按照优先级原理设置。即本申请提前设置共享使用同一FPGA板卡的多个虚拟机的优先级,这里的虚拟机的优先级代表FPGA板卡对虚拟机的待处理数据的处理顺序(优先级较高的虚拟机的待处理数据优先处理)。所以当共享使用同一FPGA板卡的多个虚拟机同时发送待处理数据时,可使该FPGA板卡按照所设优先级进行数据处理。
比如,图2中,若设置虚拟机1的优先级高于虚拟机2的优先级,则虚拟机1的数据处理顺序在虚拟机2的数据处理顺序之前。当虚拟机1和虚拟机2同时发送待处理数据时,FPGA板卡1会优先处理虚拟机1的待处理数据,待虚拟机1的待处理数据处理完成后,再处理虚拟机2的待处理数据。
作为一种可选地实施例,预设共享处理模式的设置过程包括:
当共享使用同一FPGA板卡的多个虚拟机同时发送待处理数据时,使该FPGA板卡按照先进先出的规则进行数据处理。
具体地,本申请的共享处理模式可以按照先进先出原理设置。即FPGA板卡接收数据的顺序为FPGA板卡处理数据的顺序(先接收的数据先处理)。所以当共享使用同一FPGA板卡的多个虚拟机同时发送待处理数据时,可使该FPGA板卡按照先进先出的规则进行数据处理。
比如,图2中,当虚拟机1和虚拟机2同时发送待处理数据时,若FPGA板卡1先接收到虚拟机1的待处理数据、后接收到虚拟机2的待处理数据,则FPGA板卡1会先处理虚拟机1的待处理数据、后处理到虚拟机2的待处理数据。
作为一种可选地实施例,该方法还包括:
当虚拟机的共享关系发生变化时,按照虚拟机的当前共享关系重新创建PCIE虚拟层和虚拟PCIE设备。
进一步地,如果用户想要改变云服务器中虚拟机的共享关系,在确实改变后的虚拟机的共享关系(称为当前共享关系)之后,按照虚拟机的当前共享关系重新创建PCIE虚拟层和虚拟PCIE设备即可(与上述实施例所提及的创建PCIE虚拟层和虚拟PCIE设备的步骤相同,本申请在此不再赘述)。
请参照图3,图3为本发明实施例提供的一种多虚拟机共享FPGA板卡的***的结构示意图。
该多虚拟机共享FPGA板卡的***包括:
创建模块1,用于预先在云服务器的主机***中创建PCIE虚拟层;其中,PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;FPGA板卡为供配置于云服务器的虚拟机共享使用的加速卡;预先从虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备;
虚拟设备加载模块2,用于当虚拟机中的第一虚拟机启动后,使第一虚拟机加载对应的第一PCIE子虚拟层的第一虚拟PCIE设备;
数据处理模块3,用于利用第一虚拟PCIE设备接收第一虚拟机的待处理数据,并利用第一PCIE子虚拟层将待处理数据发送至对应的第一FPGA板卡,以使第一FPGA板卡在多虚拟机同时发送待处理数据时按照预设共享处理模式进行数据处理,并将处理后的数据返回至对应虚拟机。
作为一种可选地实施例,创建模块1包括:
个数获取单元,用于预先获取供配置于云服务器的虚拟机使用的FPGA板卡的个数和虚拟机的个数;
虚拟机分配单元,用于当FPGA板卡的个数小于虚拟机的个数时,从FPGA板卡中确定供多个虚拟机共享使用的FPGA板卡,且从虚拟机中确定共享使用同一FPGA板卡的虚拟机,以为所有虚拟机分配好FPGA板卡;
虚拟层创建单元,用于在云服务器的主机***中创建PCIE虚拟层;其中,PCIE虚拟层包括与供多个虚拟机共享使用的FPGA板卡一一对应的PCIE子虚拟层;
虚拟设备创建单元,用于根据所有虚拟机的分配结果,确定每个PCIE子虚拟层所交互的虚拟机,并在每个PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备。
作为一种可选地实施例,该***还包括:
重新创建模块,用于当虚拟机的共享关系发生变化时,按照虚拟机的当前共享关系重新创建PCIE虚拟层和虚拟PCIE设备。
本申请提供的***的介绍请参考上述方法的实施例,本申请在此不再赘述。
本发明还提供了一种多虚拟机共享FPGA板卡的装置,包括:
存储器,用于存储计算机程序;
处理器,用于在执行计算机程序时实现上述任一种多虚拟机共享FPGA板卡的方法。
本申请提供的装置的介绍请参考上述方法的实施例,本申请在此不再赘述。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种多虚拟机共享FPGA板卡的方法,其特征在于,包括:
预先在云服务器的主机***中创建PCIE虚拟层;其中,所述PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;所述FPGA板卡为供配置于所述云服务器的虚拟机共享使用的加速卡;
预先从所述虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个所述PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备;
当所述虚拟机中的第一虚拟机启动后,使所述第一虚拟机加载对应的第一PCIE子虚拟层的第一虚拟PCIE设备;
利用所述第一虚拟PCIE设备接收所述第一虚拟机的待处理数据,并利用所述第一PCIE子虚拟层将所述待处理数据发送至对应的第一FPGA板卡,以使所述第一FPGA板卡在多虚拟机同时发送待处理数据时按照预设共享处理模式进行数据处理,并将处理后的数据返回至对应虚拟机;
预先在云服务器的主机***中创建PCIE虚拟层;其中,所述PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;所述FPGA板卡为供配置于所述云服务器的虚拟机共享使用的加速卡;预先从所述虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个所述PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备的过程,包括:
预先获取供配置于云服务器的虚拟机使用的FPGA板卡的个数和所述虚拟机的个数;
当FPGA板卡的个数小于所述虚拟机的个数时,从所述FPGA板卡中确定供多个虚拟机共享使用的FPGA板卡,且从所述虚拟机中确定共享使用同一FPGA板卡的虚拟机,以为所有虚拟机分配好FPGA板卡;
在所述云服务器的主机***中创建PCIE虚拟层;其中,所述PCIE虚拟层包括与供多个虚拟机共享使用的FPGA板卡一一对应的PCIE子虚拟层;
根据所有虚拟机的分配结果,确定每个所述PCIE子虚拟层所交互的虚拟机,并在每个所述PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备。
2.如权利要求1所述的多虚拟机共享FPGA板卡的方法,其特征在于,所述利用所述第一虚拟PCIE设备接收所述第一虚拟机的待处理数据,并利用所述第一PCIE子虚拟层将所述待处理数据发送至对应的第一FPGA板卡的过程,包括:
利用所述第一虚拟PCIE设备接收所述第一虚拟机的待处理数据,并将所述待处理数据写入至所述第一PCIE子虚拟层中预先为所述第一虚拟PCIE设备配置的共享内存,以利用所述第一PCIE子虚拟层将所述待处理数据发送至对应的第一FPGA板卡。
3.如权利要求2所述的多虚拟机共享FPGA板卡的方法,其特征在于,所述预设共享处理模式的设置过程包括:
预先设置共享使用同一FPGA板卡的多个虚拟机的优先级;
当共享使用同一FPGA板卡的多个虚拟机同时发送待处理数据时,使该FPGA板卡按照所述优先级进行数据处理;其中,优先级较高的虚拟机的数据处理顺序在优先级较低的虚拟机的数据处理顺序之前。
4.如权利要求2所述的多虚拟机共享FPGA板卡的方法,其特征在于,所述预设共享处理模式的设置过程包括:
当共享使用同一FPGA板卡的多个虚拟机同时发送待处理数据时,使该FPGA板卡按照先进先出的规则进行数据处理。
5.如权利要求1-4任一项所述的多虚拟机共享FPGA板卡的方法,其特征在于,该方法还包括:
当所述虚拟机的共享关系发生变化时,按照所述虚拟机的当前共享关系重新创建所述PCIE虚拟层和所述虚拟PCIE设备。
6.一种多虚拟机共享FPGA板卡的***,其特征在于,包括:
创建模块,用于预先在云服务器的主机***中创建PCIE虚拟层;其中,所述PCIE虚拟层包括与FPGA板卡一一对应的PCIE子虚拟层;所述FPGA板卡为供配置于所述云服务器的虚拟机共享使用的加速卡;预先从所述虚拟机中为每个PCIE子虚拟层选择与其交互的虚拟机,并在每个所述PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备;
虚拟设备加载模块,用于当所述虚拟机中的第一虚拟机启动后,使所述第一虚拟机加载对应的第一PCIE子虚拟层的第一虚拟PCIE设备;
数据处理模块,用于利用所述第一虚拟PCIE设备接收所述第一虚拟机的待处理数据,并利用所述第一PCIE子虚拟层将所述待处理数据发送至对应的第一FPGA板卡,以使所述第一FPGA板卡在多虚拟机同时发送待处理数据时按照预设共享处理模式进行数据处理,并将处理后的数据返回至对应虚拟机;
所述创建模块包括:
个数获取单元,用于预先获取供配置于云服务器的虚拟机使用的FPGA板卡的个数和所述虚拟机的个数;
虚拟机分配单元,用于当FPGA板卡的个数小于所述虚拟机的个数时,从所述FPGA板卡中确定供多个虚拟机共享使用的FPGA板卡,且从所述虚拟机中确定共享使用同一FPGA板卡的虚拟机,以为所有虚拟机分配好FPGA板卡;
虚拟层创建单元,用于在所述云服务器的主机***中创建PCIE虚拟层;其中,所述PCIE虚拟层包括与供多个虚拟机共享使用的FPGA板卡一一对应的PCIE子虚拟层;
虚拟设备创建单元,用于根据所有虚拟机的分配结果,确定每个所述PCIE子虚拟层所交互的虚拟机,并在每个所述PCIE子虚拟层中创建与所交互的虚拟机一一对应的虚拟PCIE设备。
7.如权利要求6所述的多虚拟机共享FPGA板卡的***,其特征在于,该***还包括:
重新创建模块,用于当所述虚拟机的共享关系发生变化时,按照所述虚拟机的当前共享关系重新创建所述PCIE虚拟层和所述虚拟PCIE设备。
8.一种多虚拟机共享FPGA板卡的装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于在执行所述计算机程序时实现如权利要求1-5任一项所述的多虚拟机共享FPGA板卡的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811527156.XA CN109634720B (zh) | 2018-12-13 | 2018-12-13 | 一种多虚拟机共享fpga板卡的方法、***及装置 |
PCT/CN2019/103675 WO2020119189A1 (zh) | 2018-12-13 | 2019-08-30 | 一种多虚拟机共享fpga板卡的方法、***及装置 |
US17/281,593 US11928493B2 (en) | 2018-12-13 | 2019-08-30 | Sharing of FPGA board by multiple virtual machines |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811527156.XA CN109634720B (zh) | 2018-12-13 | 2018-12-13 | 一种多虚拟机共享fpga板卡的方法、***及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109634720A CN109634720A (zh) | 2019-04-16 |
CN109634720B true CN109634720B (zh) | 2021-11-19 |
Family
ID=66073860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811527156.XA Active CN109634720B (zh) | 2018-12-13 | 2018-12-13 | 一种多虚拟机共享fpga板卡的方法、***及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11928493B2 (zh) |
CN (1) | CN109634720B (zh) |
WO (1) | WO2020119189A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634720B (zh) * | 2018-12-13 | 2021-11-19 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、***及装置 |
US12039354B2 (en) | 2019-06-18 | 2024-07-16 | The Calany Holding S. À R.L. | System and method to operate 3D applications through positional virtualization technology |
US12033271B2 (en) | 2019-06-18 | 2024-07-09 | The Calany Holding S. À R.L. | 3D structure engine-based computation platform |
US12040993B2 (en) * | 2019-06-18 | 2024-07-16 | The Calany Holding S. À R.L. | Software engine virtualization and dynamic resource and task distribution across edge and cloud |
CN110569042B (zh) * | 2019-08-19 | 2022-11-11 | 苏州浪潮智能科技有限公司 | 一种支持虚拟机内更新fpga功能的***,方法,设备及存储介质 |
CN111209086A (zh) * | 2020-01-13 | 2020-05-29 | 山东超越数控电子股份有限公司 | 一种基于自主平台的裸金属虚拟化实现方法 |
CN115412502B (zh) * | 2022-11-02 | 2023-03-24 | 之江实验室 | 一种网络端口扩展和报文快速均衡处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105612498A (zh) * | 2013-12-31 | 2016-05-25 | 华为技术有限公司 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** |
CN106533769A (zh) * | 2016-11-24 | 2017-03-22 | 华为技术有限公司 | 一种故障恢复方法及装置 |
CN108897601A (zh) * | 2018-06-29 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种基于虚拟化的fpga使用方法、***及相关装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996644B2 (en) * | 2010-12-09 | 2015-03-31 | Solarflare Communications, Inc. | Encapsulated accelerator |
US9329843B2 (en) * | 2011-08-02 | 2016-05-03 | International Business Machines Corporation | Communication stack for software-hardware co-execution on heterogeneous computing systems with processors and reconfigurable logic (FPGAs) |
US9008085B2 (en) * | 2012-08-15 | 2015-04-14 | International Business Machines Corporation | Network interface card having overlay gateway functionality |
US8978031B2 (en) * | 2012-08-21 | 2015-03-10 | International Business Machines Corporation | Processing of overlay networks using an accelerated network interface card |
CN105306241B (zh) * | 2014-07-11 | 2018-11-06 | 华为技术有限公司 | 一种业务部署方法及网络功能加速平台 |
JP6578731B2 (ja) | 2015-04-30 | 2019-09-25 | 富士通株式会社 | 通信システム,制御装置および管理装置 |
US10069681B2 (en) * | 2015-12-31 | 2018-09-04 | Amazon Technologies, Inc. | FPGA-enabled compute instances |
CN106354544A (zh) * | 2016-08-24 | 2017-01-25 | 华为技术有限公司 | 虚拟机创建方法、***以及主机 |
CN107977256A (zh) | 2017-12-15 | 2018-05-01 | 郑州云海信息技术有限公司 | 一种对fpga加速卡的访问方法、装置及介质 |
CN108319563B (zh) | 2018-01-08 | 2020-01-03 | 华中科技大学 | 一种基于fpga的网络功能加速方法和*** |
CN109634720B (zh) | 2018-12-13 | 2021-11-19 | 郑州云海信息技术有限公司 | 一种多虚拟机共享fpga板卡的方法、***及装置 |
US20230016692A1 (en) * | 2021-07-14 | 2023-01-19 | Seoul National University R&Db Foundation | Virtualization device including storage device and computational device, and method of operating the same |
-
2018
- 2018-12-13 CN CN201811527156.XA patent/CN109634720B/zh active Active
-
2019
- 2019-08-30 WO PCT/CN2019/103675 patent/WO2020119189A1/zh active Application Filing
- 2019-08-30 US US17/281,593 patent/US11928493B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105612498A (zh) * | 2013-12-31 | 2016-05-25 | 华为技术有限公司 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** |
CN108205506A (zh) * | 2013-12-31 | 2018-06-26 | 华为技术有限公司 | 虚拟机热迁移的方法、虚拟机内存数据处理方法、服务器和虚拟机*** |
CN106533769A (zh) * | 2016-11-24 | 2017-03-22 | 华为技术有限公司 | 一种故障恢复方法及装置 |
CN108897601A (zh) * | 2018-06-29 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种基于虚拟化的fpga使用方法、***及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020119189A1 (zh) | 2020-06-18 |
CN109634720A (zh) | 2019-04-16 |
US20210373928A1 (en) | 2021-12-02 |
US11928493B2 (en) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634720B (zh) | 一种多虚拟机共享fpga板卡的方法、***及装置 | |
US11693669B2 (en) | Deploying service containers in an adapter device | |
US11960430B2 (en) | Remote mapping method, apparatus and device for computing resources, and storage medium | |
US10572290B2 (en) | Method and apparatus for allocating a physical resource to a virtual machine | |
CN104618155B (zh) | 一种虚拟机容错的方法、装置及*** | |
CN106776998B (zh) | 一种数据库服务提供方法及服务器 | |
CN109729106B (zh) | 处理计算任务的方法、***和计算机程序产品 | |
CN107370796B (zh) | 一种基于Hyper TF的智能学习*** | |
CN111880902A (zh) | 一种pod创建方法、装置、设备及可读存储介质 | |
CN114244717B (zh) | 虚拟网卡资源的配置方法、装置、计算机设备及介质 | |
US11474853B2 (en) | Storage device operation method and physical server | |
CN112087332B (zh) | 一种云边协同下的虚拟网络性能优化*** | |
CN112286688A (zh) | 一种内存管理和使用方法、装置、设备和介质 | |
CN109361693B (zh) | 虚拟设备通信方法和装置 | |
CN113285843B (zh) | 容器网络配置方法、装置、计算机可读介质及电子设备 | |
CN114296953A (zh) | 一种多云异构***及任务处理方法 | |
CN109213565B (zh) | 异构虚拟计算资源的管理方法、相关设备及存储介质 | |
CN114629958B (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN113254160B (zh) | 一种io资源请求方法和装置 | |
CN115480910A (zh) | 多集群资源管理方法、装置及电子设备 | |
CN110971696B (zh) | 一种实现虚拟电子卡通讯的***和方法 | |
CN108737120A (zh) | 一种机顶盒的待机方法和机顶盒 | |
CN114021715A (zh) | 基于Tensorflow框架的深度学习训练方法 | |
CN113656181A (zh) | 一种实时应用集群实例资源的发放方法及装置 | |
CN114253704A (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 |