CN117435214A - 一种fpga程序烧录方法、装置、设备及存储介质 - Google Patents
一种fpga程序烧录方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117435214A CN117435214A CN202311599039.5A CN202311599039A CN117435214A CN 117435214 A CN117435214 A CN 117435214A CN 202311599039 A CN202311599039 A CN 202311599039A CN 117435214 A CN117435214 A CN 117435214A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- fpga
- network
- computing node
- target
- 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 67
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012216 screening Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种FPGA程序烧录方法、装置、设备及存储介质,涉及云计算技术领域,包括:获取目标虚拟机在创建前用户选择的包括FPGA设备的特征信息的虚拟机规格信息;根据虚拟机规格信息从多个计算节点中确定出目标计算节点,并在目标计算节点上对目标虚拟机进行创建,并在创建过程中通过虚拟机管理服务将虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络名空间,并在网络名空间中启动网络代理服务;当接收到FPGA设备的程序烧录请求时,通过网络代理服务将程序烧录请求转发至FPGA管理服务,以在目标虚拟机中烧录FPGA程序。可见,本申请能够在虚拟机中烧录FPGA程序,简化FPGA程序的烧录过程,并提高了FPGA程序烧录的安全性。
Description
技术领域
本申请涉及云计算技术领域,特别涉及一种FPGA程序烧录方法、装置、设备及存储介质。
背景技术
随着用户业务的上云,越来越多的计算密集型服务也开始对云服务有了需求,如视频流处理、图像处理、人工智能和机器学习的应用等服务。目前,FPGA(FieldProgrammable Gate Array,现场可编程门阵列)因其较高的性能和较低的能耗,已经在各种计算密集型服务中得到了广泛的应用,用于对特定任务进行提速。
然而,FPGA是一种可编程的逻辑器件,在使用之前需要根据用户的需求进行程序的烧录。目前主流的方式是在虚拟机运行之前便对FPGA设备进行编程,并在烧录完成后再启动虚拟机。上述方式是在管理侧进行程序的烧录,实现起来较为简单,但是存在一些问题:一是,用户侧无法进行FPGA程序的烧录;二是,由于不能直接进行烧录导致在用户侧进行程序调试时比较复杂;三是,对FPGA设备进行重复的编程需要先对FPGA设备进行卸载,而一般情况下并不支持卸载,因此需要对虚拟机进行重建,导致重复编程的实现比较麻烦;四是,部分FPGA设备被分为管理设备和用户设备两种,如果将上述两种类型的FPGA设备都挂载到虚拟机上,虽然能实现在虚拟机中进行烧录,但是存在一些安全的隐患,尤其是在云环境下,用户虚拟机在计算节点上混用的场景下。
综上,如何在云场景下的虚拟机中烧录FPGA程序是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种FPGA程序烧录方法、装置、设备及存储介质,能够在虚拟机中安全的烧录FPGA程序,即能够在用户侧进行FPGA程序的烧录,简化了FPGA程序的烧录过程,并提高了FPGA程序烧录的安全性,同时节省了烧录的人力成本和时间成本。其具体方案如下:
第一方面,本申请公开了一种FPGA程序烧录方法,包括:
获取目标虚拟机在创建前用户选择的规格信息,得到虚拟机规格信息;所述虚拟机规格信息中包括FPGA设备的特征信息;
根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点,并在所述目标计算节点上对所述目标虚拟机进行创建,并在创建过程中通过虚拟机管理服务将所述虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务;所述虚拟机管理服务运行在所述目标计算节点上,所述FPGA管理服务运行在各计算节点上;
当获取到所述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,以在所述目标虚拟机中对待烧录的FPGA程序进行烧录。
可选的,所述根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点,包括:
通过虚拟机调度器并根据所述虚拟机规格信息从当前所有可用的计算节点中筛选出能够对所述目标虚拟机进行创建的计算节点,得到多个初始计算节点;
对各个所述初始计算节点进行评分,得到各所述初始计算节点对应的评分值;
从所有所述评分值中确定出最大值,并将所述最大值对应的所述初始计算节点作为对所述目标虚拟机进行创建的目标计算节点。
可选的,所述根据所述虚拟机规格信息从当前所有可用的计算节点中筛选出能够对所述目标虚拟机进行创建的计算节点,得到多个初始计算节点,包括:
获取当前所有可用的计算节点的计算资源,得到当前计算资源;
分别判断各所述当前计算资源是否满足与所述虚拟机规格信息对应的资源需求;
若是,则将满足所述资源需求的计算节点作为能够对所述目标虚拟机进行创建的计算节点,得到多个初始计算节点。
可选的,所述FPGA管理服务由第一服务端和第二服务端组成,所述第一服务端用于运行WEB服务器,所述第二服务端运行在各计算节点上,用于对所述FPGA设备进行管理和控制。
可选的,所述FPGA程序烧录方法,还包括:
当接收到用户端发送的虚拟机创建请求时,通过所述WEB服务器判断所述虚拟机创建请求中是否包含FPGA设备的特征信息;
若所述虚拟机创建请求中包含FPGA设备的特征信息,则请求FPGA管理服务,并通过所述FPGA管理服务判断所述FPGA设备是否需要代理网络流量服务;
若所述FPGA设备需要代理网络流量服务,则对所述虚拟机创建请求的网络情况进行校验。
可选的,所述对所述虚拟机创建请求的网络情况进行校验,包括:
通过所述虚拟机规格信息查询所述目标虚拟机挂载的网卡设备,得到目标网卡设备;
选择所述目标网卡设备所使用的网络与所述用户端进行通信,以告知所述用户端所述目标虚拟机能够被创建。
可选的,所述调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务,包括:
调用网络管理服务在各计算节点上创建网络端口和网络名空间,并在所述网络名空间中启动网络代理服务;
相应的,所述通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,包括:
通过所述网络代理服务并经过所述网络端口将所述程序烧录请求转发至所述FPGA管理服务。
第二方面,本申请公开了一种FPGA程序烧录装置,包括:
规格信息获取模块,用于获取目标虚拟机在创建前用户选择的规格信息,得到虚拟机规格信息;所述虚拟机规格信息中包括FPGA设备的特征信息;
计算节点确定模块,用于根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点;
虚拟机创建模块,用于在所述目标计算节点上对所述目标虚拟机进行创建;
规格信息发送模块,用于在创建过程中通过虚拟机管理服务将所述虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务;所述虚拟机管理服务运行在所述目标计算节点上,所述FPGA管理服务运行在各计算节点上;
烧录请求转发模块,用于当获取到所述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,以在所述目标虚拟机中对待烧录的FPGA程序进行烧录。
第三方面,本申请公开了一种电子设备,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现前述的FPGA程序烧录方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述的FPGA程序烧录方法。
可见,本申请先获取目标虚拟机在创建前用户选择的规格信息得到虚拟机规格信息;所述虚拟机规格信息中包括FPGA设备的特征信息;接着,根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点,并在所述目标计算节点上对所述目标虚拟机进行创建,并在创建过程中通过虚拟机管理服务将所述虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务;所述虚拟机管理服务运行在所述目标计算节点上,所述FPGA管理服务运行在各计算节点上;当获取到所述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,再通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,以在所述目标虚拟机中对待烧录的FPGA程序进行烧录。本申请通过代理的方式访问计算节点上的服务,能够在虚拟机中安全的烧录FPGA程序,即能够在用户侧进行FPGA程序的烧录,简化了FPGA程序的烧录过程,并提高了FPGA程序烧录的安全性,同时节省了烧录的人力成本和时间成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种FPGA程序烧录方法流程图;
图2为本申请公开的一种具体的FPGA程序烧录方法流程图;
图3为本申请公开的一种FPGA程序烧录装置结构示意图;
图4为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种FPGA程序烧录方法,参见图1所示,该方法包括:
步骤S11:获取目标虚拟机在创建前用户选择的规格信息,得到虚拟机规格信息;所述虚拟机规格信息中包括FPGA设备的特征信息。
本申请提出的FPGA程序烧录方案,应用于云场景下在虚拟机中烧录FPGA程序的场景,整体的实现方式是采用一套软件架构使得虚拟机中的应用程序可以安全地访问到宿主机,即用户侧上的服务,从而完成FPGA应用程序的烧录。具体的,当需要进行FPGA程序烧录时,先确定待烧录FPGA程序对应的目标虚拟机,然后获取所述目标虚拟机在创建前用户选择的包括FPGA设备的特征信息的规格信息,即用户在创建虚拟机时选中的带有FPGA设备的特征信息的规格信息,得到相应的虚拟机规格信息;其中,所述FPGA设备的特征信息包括但不限于FPGA设备的数量、型号等信息。
另外,本方案可以预先为用户提供API(Application Programming Interface,应用程序编程接口)接口,通过该接口可以接收用户请求,如创建虚拟机的请求,当接收到创建虚拟机请求后,可以提供相应的创建方式以便用户创建虚拟机,如用户通过提供的WEB页面或REST页面创建虚拟机并输入相应的FPGA设备的特征信息。
步骤S12:根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点,并在所述目标计算节点上对所述目标虚拟机进行创建,并在创建过程中通过虚拟机管理服务将所述虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务;所述虚拟机管理服务运行在所述目标计算节点上,所述FPGA管理服务运行在各计算节点上。
本实施例中,获取到目标虚拟机在创建前用户选择的虚拟机规格信息之后,进一步的,根据上述虚拟机规格信息从多个计算节点中确定出一个最佳的目标计算节点,然后通过虚拟机管理服务将所述目标虚拟机调度到上述目标计算节点上进行创建,并在创建过程中将包含所述FPGA设备的特征信息的上述虚拟机规格信息发送至FPGA管理服务;当所述FPGA管理服务接收到上述虚拟机规格信息后,调用网络管理服务在各计算节点上创建一个网络名空间,并在上述网络名空间中启动网络代理服务,通过该代理服务可以将来自虚拟机的请求通过代理的方式发送到上述FPGA管理服务,然后通过上述FPGA管理服务进行相应的处理操作,即进行FPGA程序的烧录;其中,所述虚拟机管理服务运行在所述目标计算节点上,即运行在虚拟机所在的计算节点上,用于虚拟机的创建、虚拟机的状态管理和虚拟机设备管理等,而上述FPGA管理服务运行在各个计算节点上。
需要指出的是,所述FPGA管理服务由第一服务端和第二服务端组成,所述第一服务端用于运行WEB服务器,所述第二服务端运行在各计算节点上,用于对所述FPGA设备进行管理和控制。也即,FPGA管理服务由两个服务端组成,其中一个用于运行WEB服务器,可以接收HTTP(Hypertext Transfer Protocol,超文本传输协议)请求;另一个服务端运行在各个计算节点上,用于FPGA设备的管理和控制。
本实施例中,当接收到用户端发送的虚拟机创建请求时,通过所述WEB服务器判断所述虚拟机创建请求中是否包含FPGA设备的特征信息;若所述虚拟机创建请求中包含FPGA设备的特征信息,则请求FPGA管理服务,并通过所述FPGA管理服务判断所述FPGA设备是否需要代理网络流量服务;若所述FPGA设备需要代理网络流量服务,则对所述虚拟机创建请求的网络情况进行校验。本实施例中,当接收到用户端发送的虚拟机创建请求时,先通过运行在上述第一服务端的WEB服务器进行校验,校验请求体的结构、配额、权限等,以判断是否为请求了FPGA资源的虚拟机创建请求。具体的,先通过WEB服务器判断虚拟机创建请求中是否包含有FPGA设备的特征信息,如果虚拟机创建请求中包含有FPGA设备的特征信息,则请求FPGA管理服务,然后通过上述FPGA管理服务进一步判断当前FPGA设备是否需要代理网络流量服务,如果不需要则不进行处理;如果需要则请求流量代理服务,以继续检查虚拟机创建请求的网络情况。
具体的,所述对所述虚拟机创建请求的网络情况进行校验,包括:通过所述虚拟机规格信息查询所述目标虚拟机挂载的网卡设备,得到目标网卡设备;选择所述目标网卡设备所使用的网络与所述用户端进行通信,以告知所述用户端所述目标虚拟机能够被创建。本实施例中,如果虚拟机创建请求的FPGA资源需要代理网络流量服务,则通过虚拟机规格信息查询目标虚拟机是否挂载了网卡设备,如果目标虚拟机没有挂载网卡设备,则进行报错并退出虚拟机创建,错误信息中可以描述失败的原因是当前类型的FPGA设备需要通过网络访问FPGA管理服务;如果挂载了网卡设备,则选择该网卡设备所使用的网络与用户端进行通信,从而告知用户端虚拟机创建请求合法,当前目标虚拟机可以被创建;如果挂载了多个网卡设备,则选择查询到的第一个网卡设备所使用的网络与用户端进行通信。需要指出的是,虚拟机的调度、创建等操作在后台是异步执行的。
具体的,所述根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点,可以包括:通过虚拟机调度器并根据所述虚拟机规格信息从当前所有可用的计算节点中筛选出能够对所述目标虚拟机进行创建的计算节点,得到多个初始计算节点;对各个所述初始计算节点进行评分,得到各所述初始计算节点对应的评分值;从所有所述评分值中确定出最大值,并将所述最大值对应的所述初始计算节点作为对所述目标虚拟机进行创建的目标计算节点。本实施例中,可以通过虚拟机调度器对目标虚拟机进行调度,具体的,若虚拟机创建请求合法,则将虚拟机创建请求发送至虚拟机调度器,当虚拟机调度器接收到虚拟机创建请求后,根据虚拟机规格信息进行计算节点的选择,计算节点需有足够的CPU(Central Processing Unit,中央处理器)、内存、存储等通用计算资源和满足用户需求的FPGA等异构加速设备资源,如果没有符合要求的计算节点,则目标虚拟机创建失败,此时可以将目标虚拟机置为创建失败状态;如果检索到符合条件的多个计算节点,则分别对筛选出的各个计算节点进行评分得到相应的评分值,然后通过虚拟机调度器将虚拟机创建请求转发至执行器,以便通过执行器将目标虚拟机调度到评分值最高的计算节点上进行创建。
具体的,当执行器接收到虚拟机调度器发送的虚拟机创建请求之后,可以请求FPGA管理服务创建一个FPGA资源请求,以申请与用户需求数量一致的FPGA资源,然后将FPGA资源的ID(Identity document,唯一编码)记录在虚拟机创建请求中,再将记录后的虚拟机创建请求转发至对应的计算节点的计算服务上,最后由该计算服务继续接管虚拟机的创建过程。
进一步的,当计算节点的计算服务接收到虚拟机创建请求后,先获取虚拟机创建请求中包含的FPGA资源的ID,然后请求FPGA管理服务,以将虚拟机的UUID(UniversallyUnique Identifier,通用唯一识别码)绑定到FPGA资源的ID上,同时计算服务也将虚拟机的网络信息发送至FPGA管理服务,此时计算服务进入等待的流程,等待FPGA资源准备就绪。
接着,当FPGA管理服务接收到绑定FPGA资源请求后,首先判断请求的FPGA资源的类型是否需要使用网络代理,如果需要则检查绑定FPGA资源请求中是否有网络信息,如果没有则返回绑定失败提示;若校验入参成功,则将虚拟机的UUID和对应的网络信息记录入库,然后将绑定FPGA资源请求、虚拟机的UUID和网络信息等一并发送至对应的FPGA管理服务的网络代理服务。
需要指出的是,FPGA管理服务的网络代理服务运行在FPGA设备所在的计算节点上,用于进行FPGA设备初始化和网络代理初始化的操作。具体的,先由FPGA管理服务确认当前虚拟机的UUID所在的项目与当前所使用的网络是否已经创建过代理网卡,如果已经创建过,则将该网卡的IP地址(Internet Protocol Address,互联网协议地址)和端口信息进行保存,并复用对应的端口;如果当前没有创建过代理网卡,则访问网络管理服务创建一个端口,并将该端口的IP地址、MAC(Media Access Control Address,局域网地址)地址信息进行记录,当虚拟网卡创建完成后,获取对应的MAC地址和IP地址,并在计算节点中创建一个网络名空间,其名称具体可以为cyborg-PUUID-UUID的形式,其中UUID为网络的UUID,PUUID为项目的UUID,接着在该网络名空间中创建一个虚拟网卡设备(即子接口),并将该虚拟网卡设备挂载到网桥上,再为该网桥配置MAC地址和IP地址等信息,同时配置网络管理服务所依赖的其他元数据信息,如端口的UUID等。进一步的,还可以创建安全组,为上述调用网络管理服务创建的端口(即VPC(virtual private cloud,虚拟私有云))端口配置安全组信息;其中,安全组中仅允许dst port为FPGA管理服务允许的端口,允许的IP地址为虚拟机的IP地址。
另外,FPGA管理服务的网络代理服务的驱动可以根据FPGA设备的类型启动一个FPGA加速器以运行一个网络代理服务,该代理服务可以与FPGA加速器的硬件服务进行通信,并暴露一个Unix Socket文件(即FPGA的代理进程和FPGA的管理进程之间通过UnixSocket文件进行通信),用于提供外部的访问;并且,该代理服务还分配了一个Port(端口),在满足TCP(Transmission Control Protocol,传输控制协议)/UDP(User DatagramProtocol,用户数据报协议)要求的条件下,Port的范围可以是随机的,并排除已经被占用的端口。由于已创建好的网络名空间中运行着一个网络代理服务,该代理服务可以用于代理TCP或UDP的服务,并且可以配置代理的端口,以及将网络代理服务的上游指向驱动服务启动的Unix Socket的文件,这样一来,网络代理服务即可代理用户侧的虚拟机对FPGA管理服务进行访问了。进一步的,FPGA管理服务的网络代理服务将调用网络管理服务的接口修改端口的安全策略,放行如上所述的IP、MAC和UDP/TCP端口,如果端口复用则在原有限制的基础上增加限制。
当FPGA管理服务的代理服务完成如上所述的准备工作后,需将为虚拟机配置的代理端口的IP、MAC、UDP/TCP端口等信息更新到数据库中,以备后续FPGA程序烧录时使用,再通知计算服务FPGA资源已经准备就绪。当计算服务接收到来自FPGA管理服务返回的信息后,如果FPGA资源已经准备就绪,则继续进行其他的准备工作,并将FPGA设备对应的PCI(Peripheral Component Interconnect,定义局部总线的标准)地址透传到虚拟机中,以供虚拟机使用,在准备工作完成后,计算服务将启动虚拟机并通知用户端虚拟机创建成功。需要指出的是,在虚拟机启动的过程中,虚拟机的FPGA管理服务将自动的请求169.254.169.254/accelerator的URL(uniform resource locator,统一资源定位系统),而虚拟机管理服务会将来自于虚拟机的请求,如虚拟机创建请求代理到FPGA管理服务上,FPGA管理服务通过虚拟机的UUID、网口的MAC地址等信息从上述数据库中查询到对应的FPGA加速器的代理信息(如IP地址、端口等信息),并将查询到的信息返回给虚拟机,当虚拟机的FPGA管理服务获取到IP地址和端口等信息后,即可访问FPGA管理服务了,也即,可以在虚拟机中进行对在宿主机(即用户侧)上的FPGA管理服务的访问,从而可以实现对FPGA程序的烧录。通过上述软件架构,不仅能够使虚拟机中的FPGA程序安全地访问到宿主机上的特定服务,从而并完成FPGA程序的烧录,同时还能够满足用户侧虚拟机访问管理侧服务的需要,最小化控制平面的修改,对平台的网络流量没有侵入性;并且,对VPC中的IP地址使用量可控,不同类型的FPGA设备在相同网络的情况下可以复用IP地址,能够节省网络资源;同时,实现了不同用户侧网络的隔离,不同VPC网络的虚拟机与FPGA设备的网络代理服务在网络上进行了一层隔离,减小了攻击平面;另外,通过已有的网络安全组进行安全控制,复用了已有的安全隔离方式,实现简单、灵活度较高。
具体的,所述调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务,可以包括:调用网络管理服务在各计算节点上创建网络端口和网络名空间,并在所述网络名空间中启动网络代理服务。本实施例中,FPGA管理服务可以调用网络管理服务在同子网中创建管理端口以便进行FPGA设备管理,并在计算节点上创建网络端口和网络名空间,以便通过网络端口与其他服务,如网络代理服务进行通信。
步骤S13:当获取到所述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,以在所述目标虚拟机中对待烧录的FPGA程序进行烧录。
本实施例中,当获取到由上述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,可以直接通过在上述网络名空间中开启的网络代理服务以及上述网络端口将上述程序烧录请求转发至所述FPGA管理服务,然后通过上述FPGA管理服务在所述目标虚拟机中对待烧录的FPGA程序进行烧录。
可见,本申请实施例先获取目标虚拟机在创建前用户选择的规格信息得到虚拟机规格信息;所述虚拟机规格信息中包括FPGA设备的特征信息;接着,根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点,并在所述目标计算节点上对所述目标虚拟机进行创建,并在创建过程中通过虚拟机管理服务将所述虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务;所述虚拟机管理服务运行在所述目标计算节点上,所述FPGA管理服务运行在各计算节点上;当获取到所述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,再通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,以在所述目标虚拟机中对待烧录的FPGA程序进行烧录。本申请实施例通过代理的方式访问计算节点上的服务,能够在虚拟机中安全的烧录FPGA程序,即能够在用户侧进行FPGA程序的烧录,简化了FPGA程序的烧录过程,并提高了FPGA程序烧录的安全性,同时节省了烧录的人力成本和时间成本。
本申请实施例公开了一种具体的FPGA程序烧录方法,参见图2所示,该方法包括:
步骤S21:获取目标虚拟机在创建前用户选择的规格信息,得到虚拟机规格信息;所述虚拟机规格信息中包括FPGA设备的特征信息。
步骤S22:通过虚拟机调度器获取当前所有可用的计算节点的计算资源,得到当前计算资源。
本实施例中,在获取到目标虚拟机在创建前用户选择的虚拟机规格信息之后,可以通过虚拟机调度器获取当前所有可用的计算节点的计算资源,如CPU、内存、存储等通用计算资源以及满足用户需求的FPGA等异构加速设备资源,得到各个计算节点对应的当前计算资源。
步骤S23:分别判断各所述当前计算资源是否满足与所述虚拟机规格信息对应的资源需求。
本实施例中,为了从多个计算节点中选择性能最佳的计算节点进行虚拟机的创建,可以分别判断各个计算节点对应的所述当前计算资源是否满足与上述虚拟机规格信息对应的资源需求,如判断各个计算节点是否满足能够对所述目标虚拟机创建的CPU、内存、存储等通用计算资源和满足用户需求的FPGA等异构加速设备资源等的资源需求。
步骤S24:若是,则将满足所述资源需求的计算节点作为能够对所述目标虚拟机进行创建的计算节点,得到多个初始计算节点。
本实施例中,如果当前所述当前计算资源是否满足与上述虚拟机规格信息对应的资源需求,则将满足上述资源需求的计算节点作为能够对上述目标虚拟机进行创建的计算节点,进而得到多个初始计算节点。
步骤S25:对各个所述初始计算节点进行评分,得到各所述初始计算节点对应的评分值。
步骤S26:从所有所述评分值中确定出最大值,并将所述最大值对应的所述初始计算节点作为对所述目标虚拟机进行创建的目标计算节点。
步骤S27:在所述目标计算节点上对所述目标虚拟机进行创建,并在创建过程中通过虚拟机管理服务将所述虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络端口和网络名空间,并在所述网络名空间中启动网络代理服务,并在所述网络名空间中启动网络代理服务;所述虚拟机管理服务运行在所述目标计算节点上,所述FPGA管理服务运行在各计算节点上。
步骤S28:当获取到所述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,通过所述网络代理服务并经过所述网络端口将所述程序烧录请求转发至所述FPGA管理服务,以在所述目标虚拟机中对待烧录的FPGA程序进行烧录。
其中,关于上述步骤S21、S25至S28更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请提供了一种在云场景下,虚拟机通过代理的方式访问计算节点服务的方法,从而实现了在虚拟机中安全的烧录FPGA程序,简化了FPGA程序的烧录过程,提高了FPGA程序烧录的安全性,同时节省了烧录的人力成本和时间成本。
相应的,本申请实施例还公开了一种FPGA程序烧录装置,参见图3所示,该装置包括:
规格信息获取模块11,用于获取目标虚拟机在创建前用户选择的规格信息,得到虚拟机规格信息;所述虚拟机规格信息中包括FPGA设备的特征信息;
计算节点确定模块12,用于根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点;
虚拟机创建模块13,用于在所述目标计算节点上对所述目标虚拟机进行创建;
规格信息发送模块14,用于在创建过程中通过虚拟机管理服务将所述虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务;所述虚拟机管理服务运行在所述目标计算节点上,所述FPGA管理服务运行在各计算节点上;
烧录请求转发模块15,用于当获取到所述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,以在所述目标虚拟机中对待烧录的FPGA程序进行烧录。
其中,关于上述各个模块的具体工作流程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请实施例中,先获取目标虚拟机在创建前用户选择的规格信息得到虚拟机规格信息;所述虚拟机规格信息中包括FPGA设备的特征信息;接着,根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点,并在所述目标计算节点上对所述目标虚拟机进行创建,并在创建过程中通过虚拟机管理服务将所述虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务;所述虚拟机管理服务运行在所述目标计算节点上,所述FPGA管理服务运行在各计算节点上;当获取到所述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,再通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,以在所述目标虚拟机中对待烧录的FPGA程序进行烧录。本申请实施例通过代理的方式访问计算节点上的服务,能够在虚拟机中安全的烧录FPGA程序,即能够在用户侧进行FPGA程序的烧录,简化了FPGA程序的烧录过程,并提高了FPGA程序烧录的安全性,同时节省了烧录的人力成本和时间成本。
在一些具体实施例中,所述计算节点确定模块12,具体可以包括:
第一筛选单元,用于通过虚拟机调度器并根据所述虚拟机规格信息从当前所有可用的计算节点中筛选出能够对所述目标虚拟机进行创建的计算节点,得到多个初始计算节点;
评分单元,用于对各个所述初始计算节点进行评分,得到各所述初始计算节点对应的评分值;
第一节点确定单元,用于从所有所述评分值中确定出最大值,并将所述最大值对应的所述初始计算节点作为对所述目标虚拟机进行创建的目标计算节点。
在一些具体实施例中,所述第一筛选单元,具体可以包括:
资源获取单元,用于获取当前所有可用的计算节点的计算资源,得到当前计算资源;
第一判断单元,用于分别判断各所述当前计算资源是否满足与所述虚拟机规格信息对应的资源需求;
第二节点确定单元,用于如果所述当前计算资源满足与所述虚拟机规格信息对应的资源需求,则将满足所述资源需求的计算节点作为能够对所述目标虚拟机进行创建的计算节点,得到多个初始计算节点。
在一些具体实施例中,所述FPGA管理服务由第一服务端和第二服务端组成,所述第一服务端用于运行WEB服务器,所述第二服务端运行在各计算节点上,用于对所述FPGA设备进行管理和控制。
在一些具体实施例中,所述FPGA程序烧录装置装置,还可以包括:
第二判断单元,用于当接收到用户端发送的虚拟机创建请求时,通过所述WEB服务器判断所述虚拟机创建请求中是否包含FPGA设备的特征信息;
服务请求单元,用于如果所述虚拟机创建请求中包含FPGA设备的特征信息,则请求FPGA管理服务;
第三判断单元,用于通过所述FPGA管理服务判断所述FPGA设备是否需要代理网络流量服务;
校验单元,用于如果所述FPGA设备需要代理网络流量服务,则对所述虚拟机创建请求的网络情况进行校验。
在一些具体实施例中,所述校验单元,具体可以包括:
查询单元,用于通过所述虚拟机规格信息查询所述目标虚拟机挂载的网卡设备,得到目标网卡设备;
通信单元,用于选择所述目标网卡设备所使用的网络与所述用户端进行通信,以告知所述用户端所述目标虚拟机能够被创建。
在一些具体实施例中,所述规格信息发送模块14,具体可以包括:
创建单元,用于调用网络管理服务在各计算节点上创建网络端口和网络名空间;
启动单元,用于在所述网络名空间中启动网络代理服务;
相应的,所述烧录请求转发模块15,具体可以包括:
烧录请求转发单元,用于通过所述网络代理服务并经过所述网络端口将所述程序烧录请求转发至所述FPGA管理服务。
进一步的,本申请实施例还公开了一种电子设备,图4是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图4为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的FPGA程序烧录方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的FPGA程序烧录方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的FPGA程序烧录方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种FPGA程序烧录方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种FPGA程序烧录方法,其特征在于,包括:
获取目标虚拟机在创建前用户选择的规格信息,得到虚拟机规格信息;所述虚拟机规格信息中包括FPGA设备的特征信息;
根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点,并在所述目标计算节点上对所述目标虚拟机进行创建,并在创建过程中通过虚拟机管理服务将所述虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务;所述虚拟机管理服务运行在所述目标计算节点上,所述FPGA管理服务运行在各计算节点上;
当获取到所述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,以在所述目标虚拟机中对待烧录的FPGA程序进行烧录。
2.根据权利要求1所述的FPGA程序烧录方法,其特征在于,所述根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点,包括:
通过虚拟机调度器并根据所述虚拟机规格信息从当前所有可用的计算节点中筛选出能够对所述目标虚拟机进行创建的计算节点,得到多个初始计算节点;
对各个所述初始计算节点进行评分,得到各所述初始计算节点对应的评分值;
从所有所述评分值中确定出最大值,并将所述最大值对应的所述初始计算节点作为对所述目标虚拟机进行创建的目标计算节点。
3.根据权利要求2所述的FPGA程序烧录方法,其特征在于,所述根据所述虚拟机规格信息从当前所有可用的计算节点中筛选出能够对所述目标虚拟机进行创建的计算节点,得到多个初始计算节点,包括:
获取当前所有可用的计算节点的计算资源,得到当前计算资源;
分别判断各所述当前计算资源是否满足与所述虚拟机规格信息对应的资源需求;
若是,则将满足所述资源需求的计算节点作为能够对所述目标虚拟机进行创建的计算节点,得到多个初始计算节点。
4.根据权利要求1所述的FPGA程序烧录方法,其特征在于,所述FPGA管理服务由第一服务端和第二服务端组成,所述第一服务端用于运行WEB服务器,所述第二服务端运行在各计算节点上,用于对所述FPGA设备进行管理和控制。
5.根据权利要求4所述的FPGA程序烧录方法,其特征在于,还包括:
当接收到用户端发送的虚拟机创建请求时,通过所述WEB服务器判断所述虚拟机创建请求中是否包含FPGA设备的特征信息;
若所述虚拟机创建请求中包含FPGA设备的特征信息,则请求FPGA管理服务,并通过所述FPGA管理服务判断所述FPGA设备是否需要代理网络流量服务;
若所述FPGA设备需要代理网络流量服务,则对所述虚拟机创建请求的网络情况进行校验。
6.根据权利要求5所述的FPGA程序烧录方法,其特征在于,所述对所述虚拟机创建请求的网络情况进行校验,包括:
通过所述虚拟机规格信息查询所述目标虚拟机挂载的网卡设备,得到目标网卡设备;
选择所述目标网卡设备所使用的网络与所述用户端进行通信,以告知所述用户端所述目标虚拟机能够被创建。
7.根据权利要求1至6任一项所述的FPGA程序烧录方法,其特征在于,所述调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务,包括:
调用网络管理服务在各计算节点上创建网络端口和网络名空间,并在所述网络名空间中启动网络代理服务;
相应的,所述通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,包括:
通过所述网络代理服务并经过所述网络端口将所述程序烧录请求转发至所述FPGA管理服务。
8.一种FPGA程序烧录装置,其特征在于,包括:
规格信息获取模块,用于获取目标虚拟机在创建前用户选择的规格信息,得到虚拟机规格信息;所述虚拟机规格信息中包括FPGA设备的特征信息;
计算节点确定模块,用于根据所述虚拟机规格信息从多个计算节点中确定出目标计算节点;
虚拟机创建模块,用于在所述目标计算节点上对所述目标虚拟机进行创建;
规格信息发送模块,用于在创建过程中通过虚拟机管理服务将所述虚拟机规格信息发送至FPGA管理服务,以调用网络管理服务在各计算节点上创建网络名空间,并在所述网络名空间中启动网络代理服务;所述虚拟机管理服务运行在所述目标计算节点上,所述FPGA管理服务运行在各计算节点上;
烧录请求转发模块,用于当获取到所述目标虚拟机发送的针对所述FPGA设备的程序烧录请求时,通过所述网络代理服务将所述程序烧录请求转发至所述FPGA管理服务,以在所述目标虚拟机中对待烧录的FPGA程序进行烧录。
9.一种电子设备,其特征在于,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现如权利要求1至7任一项所述的FPGA程序烧录方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的FPGA程序烧录方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311599039.5A CN117435214A (zh) | 2023-11-28 | 2023-11-28 | 一种fpga程序烧录方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311599039.5A CN117435214A (zh) | 2023-11-28 | 2023-11-28 | 一种fpga程序烧录方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117435214A true CN117435214A (zh) | 2024-01-23 |
Family
ID=89546157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311599039.5A Pending CN117435214A (zh) | 2023-11-28 | 2023-11-28 | 一种fpga程序烧录方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117435214A (zh) |
-
2023
- 2023-11-28 CN CN202311599039.5A patent/CN117435214A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719369B1 (en) | Network interfaces for containers running on a virtual machine instance in a distributed computing environment | |
US6775700B2 (en) | System and method for common information model object manager proxy interface and management | |
CN103038788B (zh) | 提供多个网络资源 | |
CN109194760A (zh) | 业务处理方法、网络系统及服务器 | |
CN106933648B (zh) | 用于多租户容器资源管理的方法和系统 | |
JP7036899B2 (ja) | エイリアス管理方法およびデバイス | |
CN108173774B (zh) | 一种客户端的升级方法及系统 | |
CN110677383B (zh) | 防火墙开墙方法、装置、存储介质及计算机设备 | |
CN113824795B (zh) | 车端与云端的通信方法、装置、系统 | |
CN114531945B (zh) | 用于可上网设备的基于模板的载入的方法、系统和介质 | |
WO2009097776A1 (zh) | 一种实现业务升级的系统、装置及方法 | |
CN111327668B (zh) | 网络管理方法、装置、设备和存储介质 | |
CN111506367A (zh) | 多集群式人工智能在线服务方法及系统 | |
US20080028034A1 (en) | Method for mapping an iscsi target name to a storage resource based on an initiator hardware class identifier | |
CN103023935B (zh) | M2m平台云系统及其处理m2m服务的方法 | |
CN111385325A (zh) | 基于p2p的文件分发系统和方法 | |
JP2000132473A (ja) | ファイアウォール動的制御方式を用いたネットワークシステム | |
JPH10177548A (ja) | セッション管理システム | |
CN117955980A (zh) | 一种多集群纳管方法及平台、设备及存储介质 | |
CN117294503A (zh) | 一种数据传输方法、装置、电子设备及存储介质 | |
CN116566656A (zh) | 资源访问方法、装置、设备及计算机存储介质 | |
CN117435214A (zh) | 一种fpga程序烧录方法、装置、设备及存储介质 | |
CN115733666A (zh) | 一种密码管理方法、装置、电子设备及可读存储介质 | |
CN115580614A (zh) | 一种数据下载方法、装置、设备及计算机可读存储介质 | |
US20180234502A1 (en) | Prioritizing vdi sessions and redirected devices in software defined networks |
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 |