CN116662008A - 一种异构硬件统一纳管调度节点控制器 - Google Patents
一种异构硬件统一纳管调度节点控制器 Download PDFInfo
- Publication number
- CN116662008A CN116662008A CN202310664763.5A CN202310664763A CN116662008A CN 116662008 A CN116662008 A CN 116662008A CN 202310664763 A CN202310664763 A CN 202310664763A CN 116662008 A CN116662008 A CN 116662008A
- Authority
- CN
- China
- Prior art keywords
- computing unit
- hardware
- computing
- memory
- queue
- 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
- 239000002071 nanotube Substances 0.000 title claims abstract description 29
- 238000004891 communication Methods 0.000 claims abstract description 59
- 238000012545 processing Methods 0.000 claims abstract description 19
- 230000015654 memory Effects 0.000 claims description 102
- 238000007726 management method Methods 0.000 claims description 34
- 238000000034 method Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000000903 blocking effect Effects 0.000 claims description 3
- 238000007405 data analysis Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 12
- 238000005516 engineering process Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 7
- 230000007704 transition Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000012369 In process control Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 210000004544 dc2 Anatomy 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000004190 ion pair chromatography Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000344 soap Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
- 239000002699 waste material Substances 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/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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种异构硬件统一纳管调度节点控制器,它包括:远程服务单元,所述远程服务单元包括系统管理服务端;计算单元池,所述计算单元池包括多个计算单元;所述计算单元为CPU、GPU、DSP、协处理器或FPGA,所述FPGA被划分为单独作为计算单元配置和使用、细粒度更小的vFPGA;处理系统,所述处理系统包括系统管理客户端、监视器、数据库和硬件管理器;所述系统管理客户端与所述系统管理服务端通过Grpc远程服务调用框架作为通信方式相通讯;所述硬件管理器与所述计算单元池相通讯,用于对所述计算单元池的计算资源进行统一纳管。简化基于该异构计算平台的各任务的开发及部署流程的同时并提高系统的总体资源利用率及处理能力。
Description
技术领域
本发明属于云计算技术领域,涉及一种节点控制器,具体涉及一种对不同架构的硬件芯片进行资源虚拟化的统一纳管调度节点控制器。
背景技术
异构硬件指的是由不同类型的处理器和加速器组成的计算机系统,例如中央处理器(CPU)、图形处理器(GPU)、数字信号处理器(DSP)、协处理器等等。这些不同类型的硬件各自拥有自己的特点和优势,可以在不同的应用场景下发挥不同的作用,在一些信创集成项目中广泛使用;很多已研系统也会对其进行融合,整合不同架构的处理器。但是,由于这些硬件类型的不同,对于系统管理员来说,需要管理和维护多个不同的硬件资源,这增加了管理的复杂度;而且这些处理器可能来自不同的生产商,也可能采用不同的体系结构(例如,对于一个大型计算机系统,可能同时采用龙芯、飞腾、x86等不同架构的硬件设备),这在提升计算机系统性能和资源利用效率的同时也带来了软件兼容性问题,导致无法统一进行纳管调度。
目前,针对硬件异构无法统一纳管的问题,主要的解决方案是:通过云计算技术将各个不同架构的硬件设备抽象为云计算资源(例如在龙芯设备上抽象出龙芯云,飞腾设备上抽象出飞腾云),将云管理平台进行部署和管理,支持可扩展性、弹性和可靠性,并可以实现减少管理成本(还有通过API和中间件可以将不同类型的处理器和设备连接起来,以实现数据和通信的无缝集成和管理。API和中间件可以基于不同的标准和技术,例如REST API、SOAP、AMQP等,并提供多种服务器和协议支持)。此方法适用于在不同操作系统和设备之间进行通信和数据交换的场景。可见,当前的解决方案仍然是通过上层应用来进行统一调度:如当前的云计算技术本质上是对各个不同的硬件设备独立抽象为云计算资源,当前仍是形式上的统一管理;多个架构上的计算单元间网络是原生不互通的,需要跨过云层才能实现交互。同时该方法会构建出多个云服务,产生了云层消耗大量系统资源的问题;由于需要在硬件基础上组成云服务,对于处理器的数量通常有较高要求(通常在三台以上),当某种异构硬件的使用需求较小时,为了组成云服务而增加设备数量也会产生徒增资源消耗的问题。
发明内容
基于上述缺陷,本发明提供一种异构硬件统一纳管调度节点控制器。
为了达成上述目的,本发明提供一种异构硬件统一纳管调度节点控制器,它包括:
远程服务单元,所述远程服务单元包括系统管理服务端;
计算单元池,所述计算单元池包括多个计算单元;所述计算单元为CPU、GPU、DSP、协处理器或FPGA,所述FPGA被划分为单独作为计算单元配置和使用、细粒度更小的vFPGA;
处理系统,所述处理系统包括系统管理客户端、监视器、数据库和硬件管理器;所述系统管理客户端与所述系统管理服务端通过Grpc远程服务调用框架作为通信方式相通讯;所述硬件管理器与所述计算单元池相通讯,用于对所述计算单元池的计算资源进行统一纳管;所述监视器分别与所述硬件管理器、所述数据库相通讯,用于定时对所述计算单元池的计算资源进行检测,将检测到的信息写入所述数据库,并供给所述系统管理服务端进行数据分析。
优化地,所述处理系统还包括用于管理记录所述FPGA硬件资源使用的硬件资源池,所述硬件资源池还包括重构网络通信中队列资源的任务队列和FPGA物理内存资源的内存池。
进一步地,所述硬件管理器包括计算资源管理器、资源调度框架管理器和网络通信管理器,所述计算资源管理器和所述资源调度框架管理器分别通过API接口与所述系统管理服务端的守护进程进行通信;所述网络管理器通过套接字与计算单元通信代理模块相连,所述计算单元通信代理模块通过套接字与所述计算单元相连并通过网络驱动其底层的RDMA网络适配器。
更进一步地,所述计算单元与所述计算单元通信代理模块之间通过共享内存作为输出传输方式,以实现零拷贝的数据传输。
具体地,当建立消息队列时,所述计算单元通信代理模块创建一个共享内存池,所述共享内存池中存储了页对齐的多个内存块,每个块的大小由用户在任务描述图中对于各个计算资源之间连接的描述所决定,所述内存块用于消息队列的接收缓存以及发送缓存。
具体地,所述共享内存池具有空闲区、缓存区和使用区;当发送队列请求时,所述计算单元通过套接字获取一块空闲的内存区域的key,将此内存映射到进程的地址空间中,应用进程将需要发送的相数据传输入该块内存中,使得共享内存块在内存池中从空闲区转移到队列使用区中;计算单元通信代理模块通过解析key到相应的共享内存块后, 将内存块的地址绑定于新创建的发送请求中;新创建的请求将被放于发送队列中等待硬件完成发送。
具体地,当接收队列中的接收工作请求任务完成后,会在完成队列中生成一个完成队列元素,计算单元通信代理模块中监听发送队列的线程就会停止阻塞,此时接收工作请求指向的内存块会被标记为正在使用,被置为内存池中的使用区。
优化地,当计算单元通信代理模块将待处理的数据推送给指定的计算单元,推送的方式是通过套接字将共享内存的key传输给指定的计算单元,计算单元根据key来对指定的数据区域进行读取、运算操作,同时将内存池中的空闲区域取出一部分用于新的接收工作请求的缓存地址,将接收工作请求置于接收队列中,内存块就会标记为队列使用中,同时将该内存块置于内存池的队列缓冲区。
本发明异构硬件统一纳管调度节点控制器,通过采用特定的处理系统与远程服务单元、计算单元池进行配合,在基于网络的计算节点互联拓扑的异构硬件计算平台框架上,完成对各类异构计算节点抽象虚拟化工作,并在此虚拟化基础上完成系统管理框架,简化基于该异构计算平台的各任务的开发及部署流程的同时并提高系统的总体资源利用率及处理能力。
附图说明
图1为本发明异构硬件统一纳管调度节点控制器的结构图;
图2为本发明异构硬件统一纳管调度节点控制器的整体实施方案图;
图3为本发明异构硬件统一纳管调度节点控制器的通信实施方案图;
图4为本发明计算单元通信代理模块的结构图;
图5为本发明共享内存的原理图;
图6为本发明队列接收数据过程内存状态转换图;
图7为本发明队列发送数据内存状态转换图。
具体实施方式
为了使本技术领域的人员更好地理解本发明,下面将结合实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所做的等效变化与修饰前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
如图1所示的异构硬件统一纳管调度节点控制器,主要包括相配合的远程服务单元、计算单元池和处理系统,从而通过资源虚拟化技术对异构硬件计算系统中的各个不同的架构的CPU和GPU如龙芯、飞腾、x86架构以及DSP(数字信号处理器)、FPGA等进行统一纳管,发明整体实施图如附图2所示。
远程服务单元包括系统管理服务端;计算单元池包括多个计算单元;计算单元为CPU、GPU、DSP、协处理器或FPGA,FPGA被划分为单独作为计算单元配置和使用、细粒度更小的vFPGA;处理系统包括系统管理客户端、监视器、数据库和硬件管理器;系统管理客户端与系统管理服务端通过Grpc远程服务调用框架作为通信方式相通讯;硬件管理器与所述计算单元池相通讯,用于对所述计算单元池的计算资源进行统一纳管;监视器分别与硬件管理器、数据库相通讯,用于定时对计算单元池的计算资源进行检测,将检测到的信息写入数据库,并供给系统管理服务端进行数据分析。处理系统还包括用于管理记录FPGA硬件资源使用的硬件资源池,硬件资源池还包括重构网络通信中队列资源的任务队列和FPGA物理内存资源的内存池。
其中,控制器(即硬件管理器)用于整个计算系统中的资源和服务管理,控制器的上层是具体的应用系统,通过API接口进行管理调度。对下则是主要有两大功能:(1)是对各个异构硬件之间的通信进行统一纳管,(2)是对各个不同的服务提供异构计算资源的支持。用户通过网络协议如TCP,socket套接字与系统服务进行交互。计算单元通信代理模块负责各个计算单元之间的数据交互。在本实施例中,硬件管理器包括计算资源管理器、资源调度框架管理器和网络通信管理器(三个管理控制器共同实现了异构硬件计算资源的统一纳管),计算资源管理器和资源调度框架管理器分别通过API接口与系统管理服务端的守护进程进行通信;网络管理器通过套接字与计算单元通信代理模块相连(主要负责各个模块的网络通信和流量统计信息,以及计算单元的标识符等信息),计算单元通信代理模块通过套接字与计算单元相连并通过网络驱动其底层的RDMA网络适配器。
Grpc远程服务调用框架作为通信方式的功能包括如下几点:(1)启动时自动连接并登录至服务端,将本计算单元的参数信息传输给服务端,包括本单元的处理器的体系结构、CPU、GPU信息、DSP、协处理器、FPGA、内存数量、网络接口等信息。(2)接受上层的相关调度请求,根据服务端不同请求做出不同的处理,最终交由下游的各类管理器做具体的实施。此类请求包括相关任务内服务的创建及销毁、配置相关网络、计算单元的添加与删除等信息。(3)定时将监视器组件检测的信息上传给管理服务端,这些信息包括任务模块对应的计算单元运行状态,物理节点的芯片占用率情况、网络占用率情况、内存占用率情况、硬盘使用率等相关的情况。
在本实施例中,计算资源管理器是本发明的一个重要的方面。计算资源可以包括不同类型的CPU、GPU、DSP、协处理器和FPGA(现场可编程逻辑门阵列)。这些计算资源通常被用来执行不同类型的任务,包括数据处理、模型训练和推理、图像处理等等。对于异构硬件环境,计算资源的管理通常包括以下几个方面:
资源监控和优化:管理员需要对计算资源的使用情况进行监控,并根据实际情况进行优化。例如,如果某个计算资源被闲置了一段时间,管理员可以将其分配给其他任务,以提高资源利用率。
资源调整和维护:管理员需要对计算资源进行调整和维护,以保证其稳定性和可靠性。例如,管理员可以对硬件进行调整,以提高其性能和可用性。
资源访问控制:管理员需要对不同的用户和应用程序进行访问控制,以确保计算资源被合理地使用。这可以通过为不同用户和应用程序分配不同的权限和资源配额来实现。
在本实施例中,计算资源调度(由资源调度框架管理器实现)是指将任务分配到适当的计算资源上,以最大化系统性能和资源利用率。计算资源调度通常需要考虑以下几个因素:
任务的类型和优先级:不同类型的任务通常需要不同类型的计算资源来执行,并且具有不同的优先级。管理员需要根据任务类型和优先级来分配计算资源,以确保高优先级任务能够得到及时处理。
计算资源的可用性:管理员需要了解每个计算资源的可用性,以便合理地分配任务。如果某个计算资源已经被其他任务占用,管理员需要找到其他可用的计算资源来处理新的任务。
当前负载和系统状态:管理员需要了解当前系统的负载和状态,以便有效地分配计算资源。如果系统处于高负载状态,管理员需要相应地调整任务分配策略,以避免资源瓶颈和性能下降。
硬件配置和性能:管理员需要了解每个计算资源的硬件配置和性能,以便选择最适合任务的计算资源。例如,如果任务需要大量的内存和存储空间,管理员需要选择具有较大内存和存储容量的计算资源。
现有技术基础下,RDMA相关的技术难以在计算资源虚拟化技术上实施。大部分应用场景下,资源虚拟化需要对网络进行隔离,每个计算单元都有其专有的网络命名空间,其通过虚拟交换机的形式进行网络的虚拟化,这适用于所有基于TCP/IP协议栈通信的应用。但是RDMA底层的如RoCEv2的协议栈处理交由网卡硬件处理,所以这种网络虚拟技术难以虚拟RDMA网络。而如果将物理机的Infiniband设备文件暴露给计算单元的形式实现的话,则存在计算资源的网络不在受控制器程序管理的风险,失去隔离性,使得每个计算单元可以无约束得访问整个网络。这种情况下,需要RDMA性能的相关应用无法部署于异构硬件计算资源虚拟化平台中,只能裸机运行。
本申请提出对RDMA进行增强的通信代理技术,其结构如附图4所示。通信代理模块(即计算单元通信代理模块)作用于异构计算单元的底层库,直接连接各个异构硬件的物理网卡,通过相关的API完成RDMA 的控制及数据通路功能,对于底层的RDMA网卡而言,其只允许从该模块程序的地址空间进行读写操作;对上层的计算单元而言,其通过Unix域套接字分别与各个服务中的应用相连,用于双方间对于数据传输的控制,包括应用待发送的RDMA的内存以及远端发送给该应用的相关的数据。外部程序可以通过连接控制器API控制 通信代理模块的相关操作,包括本地QP(消息队伍队列)的创建与QP信息获取、本地与远端QP的连接、QP的销毁等。
由于通信代理模块接管了底层的RDMA硬件操作,使得硬件只能读写该模块所在的地址空间,这就涉及到数据在计算单元与RoCEv2通信协议之间如何传输的问题。目前,底层操作系统提供的IPC(Inter-Process Communication)操作存在有:管道(Pipe)、命名管道(Named Pipes)、信号(Signal)、消息队列(Message Queue)、共享内存(Shared Memory)、信号量(Semaphore)、套接字(Socket)等,这些IPC中用于的数据传输的除了共享内存都需要一次或者一次以上的数据拷贝操作,若使用这些相关的技术,则将失去使用RDMA的处理器旁路零拷贝的意义。而共享内存提供了一种方式,使得两个进程可以访问同一段物理地址,如图5所示这段物理地址分别映射在两个进程的地址空间中的不同虚拟地址上。本发明通过共享内存作为异构计算单元与该模块的输出传输方式,即可实现零拷贝的数据传输。但是共享内存技术并没有提供同步机制,本发明通过计算单元与该模块之间的Unix域套接字来实现同步。
对于每一个建立的消息队列,通信代理模块均会为其创建一个共享内存池,该内存池中存储了多个内存块,每个块的大小由用户在任务描述图中对于各个计算资源之间连接的描述所决定,由于共享内存的原因,这些内存块往往是页对齐的。这些块内存用于消息 队列的接收缓存以及发送缓存。这些内存池分为三个区域,分别为空闲区、缓存区、使用区。对于接收队列而言,通信方式使用的是发送/接收模式。当接收队列准备接收数据包时,需要建立一个接收工作请求用来接收数据,为了保证接收数据的稳定性,本发明预先设置多个接收工作请求,请求地址指向的位置是内存块中的起始地址。当接收队列中的接收工作请求任务完成后,会在完成队列中生成一个完成队列元素,通信代理模块中监听发送队列的线程就会停止阻塞,此时接收工作请求指向的内存块会被标记为正在使用,被置为内存池中的使用区。通信代理模块会将待处理的数据推送给指定的计算单元,推送的方式是通过套接字将共享内存的key传输给指定的异构计算单元,计算单元可以根据key来对指定的数据区域进行读取,运算等操作,同时将内存池中的空闲区域取出一部分用于新的接收工作请求的缓存地址,将该接收工作请求置于接收队列中,内存块就会标记为队列使用中,同时将该内存块置于内存池的队列缓冲区。在计算单元处理完所指向内存的数据后,通过套接字向通信代理模块发送该内存的key值,通知通信代理模块该处内存处于空闲状态,然后控制器就会将该处内存从使用区置于空闲区。此过程的内存状态转化如图6所示。
对于发送队列请求,内存状态转化如图7所示,内存状态转移过程与图6相反。首先计算单元需要通过套接字获取一块空闲的内存区域的key,从而将此内存映射到进程的地址空间中,应用进程可以将需要发送的相数据传输入该块内存中。在这个过程中,该共享内存块在内存池中从空闲区转移到队列使用区中。而后代理通信模块通过解析key到相应的共享内存块后, 会将该内存块的地址绑定于新创建的发送请求中。新创建的请求将被放于发送队列中等待硬件完成发送。在底层硬件完成该请求后,模块中相应的监测完成队列的线程会将请求指向的共享内存块从使用区放置于空闲区以待下一次使用。
相对于CPU、GPU、DSP这类芯片,在设计之初其中的电路就是固定的,内部的管脚、IO、乘法器也已经确定,但是FPGA可以通过编程改变芯片的内部结构,可以在硬件层面上实现数字电路的设计和开发,具有灵活性、可重构性、高性能等特点,广泛应用于各种领域,如数字信号处理,高性能计算(深度学习),工业自动化,通信等领域。由于FPGA可以改变芯片的内部结构,因此本发明提出的异构硬件统一纳管方法也将FPGA资源纳入到统一的管理框架,与其他计算资源一起进行管理和调度,以实现更高效、更灵活、更可靠的计算资源利用。
在传统的FPGA(现场可编程逻辑门阵列)开发流程中,通常是通过相关硬件描述语言针对于应用进行相关设计,然后通过相关的EDA工具将设计映射到特定的型号的FPGA芯片 上,生成可以运行在该FPGA上的相关配置文件(如Vivado环境下生成的Bitstream)。但在这种模式下,用户对于FPGA资源的使用缺乏弹性,同一块FPGA只能服务于单个用户,这在大规模FPGA部署时,资源利用率及开发效率均较低。这就使得FPGA虚拟化技术显得格外重要,本发明对此提出FPGA虚拟化技术的优化方案。当前,FPGA的开发和部署仍存在一些问题,主要有:(1) FPGA目前开发通常需要使用硬件描述语言(HDL)进行开发,这通常需要涉及到底层硬件细节,比如各种IO等设备,工程师将会花大量时间在这些硬件的调试上,开发效率较低。(2)目前,相关的FPGA应用的开发高度依赖于硬件本身,使得代码程序的可移植性相对较低,不利于应用跨硬件移植,不利于应用在不同 FPGA硬件上的部署及迁移。(3)目前大多应用的开发往往会占用整片的FPGA硬件,这种开发部署方式缺乏灵活性,往往无法满足计算集群中多租户单FPGA、多租户多 FPGA的应用场景,缺乏对算力进行弹性调整的特性。
根据上述问题,本发明提出优化后的FPGA硬件资源虚拟化的解决方案,具体如下:(1)本发明将单片FPGA划分成更小细粒度的可重配置虚拟化FPGA(即vFPGA),这些vFPGA可以单独作为计算单元配置和使用。(2)将FPGA硬件资源进行抽象,以用于隐藏各种硬件细节,如网络设备等,开发者可以调用虚拟化框架下抽象出的同一接口来控制底层硬件的行为。(3)本发明对vFPGA之间进行相关的隔离性设计,使得各个vFPGA无法感知到其他的vFPGA的存在,只能通过通信代理模块进行数据交互,各个vFPGA之间的运行不会导致冲突。(4)本发明对虚拟化设计做安全性考虑,vFPGA的运行无法影响整体系统的稳定性。(5)本发明的设计方案提供各类资源管理机制,支持对多用户多FPGA的场景,可以快速对用户的提交的任务进行部署。
本发明的FPGA虚拟化的逻辑框架是使每一个虚拟化的FPGA都有一个对应的控制器对其进行管理,FPGA通过接口与网络连接器相连,通过通信代理模块获取内存池的资源进行计算,同时通过控制器可以进行多个虚拟FPGA的并行计算。FPGA节点与CPU节点一样,都需要节点控制器来对硬件资源以及上层应用系统管理服务通信进行管理,在本发明中,该节点控制器程序运行在处理系统端。
硬件资源池用于管理记录FPGA的硬件资源的使用,这些资源包括可重构块、网络通信中的队列资源以及FPGA物理内存资源。这些资源的管理相对比较简单,只需记录任务模块对于这两个资源的拥有情况,同一个任务模块只能拥有一个可重构区域以及至多16个任务队列。而对于FPGA物理内存资源而言,由于底层内存管理单元以4M大小为一页,所以在FPGA物理内存资源池中,对所有的物理内存,也需以4M的大小的范围做分割管理,如本系统中的FPGA的物理内存大小有64GB,则其分割出来的内存资源数目为64GB/4M,即16384个。当一个任务模块被部署的时候,将会从内存池的空闲资源取出来分配给相关的资源,首先会根据任务模块的比特流文件对应可重构区域将该区域从可重构块池子中的空闲区中取出,而后根据该模块的拓扑连接,从任务队列的空闲区为其分配需要的任务队列。最后需要为其分配相应得内存,这需要根据该任务模块描述中的内存需求分配,如若一个模块需要2G的内存,即vFPGA虚拟地址空间为0-2GB,那么需要从FPGA内存池中的空闲区取出512个资源。在任务模块被卸载的时候,为该模块分配的资源会被重新回收至各资源池的空闲区。
对于大型的FPGA业务模块而言,其所需逻辑资源可能会超过一个vFPGA的区域,导致无法综合计算的情况。对此,本发明提出了两个解决方案:(1)将业务模块拆分成多个规模相对较小的子任务模块,将部署至多个vFPGA上。(2)面向应用场景定制化得划分vFPGA的区域大小,针对这种大规模的业务模块场景,划分出个数区域更大的vFPGA或者区域大小不一的vFPGA。对于小规模的FPGA业务模块而言,其本身可能无法完全占用一个vFPGA 的逻辑资源,使得vFPGA内部的大部分资源处于空闲状态,从单个vFPGA来看,这是一种资源浪费的表现。但是若再细粒度的划分vFPGA的区域,这会大大增加 外部静态电路的开销,反而使得所有的vFPGA的资源总和得到削减,所以说这种资源的空闲是合理的。且在多用户多业务场景下,在虚拟化框架下,当前规模的 FPGA可以承载多个用户的多个业务模块,其利用率也大大高于单用户单业务的场景。
以上所述仅为本发明较佳的实施方式,并非用以限定本发明的保护范围;同时以上的描述,对于相关技术领域中具有通常知识者应可明了并据以实施,因此其他未脱离本发明所揭露概念下所完成之等效改变或修饰,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种异构硬件统一纳管调度节点控制器,其特征在于,它包括:
远程服务单元,所述远程服务单元包括系统管理服务端;
计算单元池,所述计算单元池包括多个计算单元;所述计算单元为CPU、GPU、DSP、协处理器或FPGA,所述FPGA被划分为单独作为计算单元配置和使用、细粒度更小的vFPGA;
处理系统,所述处理系统包括系统管理客户端、监视器、数据库和硬件管理器;所述系统管理客户端与所述系统管理服务端通过Grpc远程服务调用框架作为通信方式相通讯;所述硬件管理器与所述计算单元池相通讯,用于对所述计算单元池的计算资源进行统一纳管;所述监视器分别与所述硬件管理器、所述数据库相通讯,用于定时对所述计算单元池的计算资源进行检测,将检测到的信息写入所述数据库,并供给所述系统管理服务端进行数据分析。
2.根据权利要求1所述的异构硬件统一纳管调度节点控制器,其特征在于:所述处理系统还包括用于管理记录所述FPGA硬件资源使用的硬件资源池,所述硬件资源池还包括重构网络通信中队列资源的任务队列和FPGA物理内存资源的内存池。
3.根据权利要求1或2所述的异构硬件统一纳管调度节点控制器,其特征在于:所述硬件管理器包括计算资源管理器、资源调度框架管理器和网络通信管理器,所述计算资源管理器和所述资源调度框架管理器分别通过API接口与所述系统管理服务端的守护进程进行通信;所述网络管理器通过套接字与计算单元通信代理模块相连,所述计算单元通信代理模块通过套接字与所述计算单元相连并通过网络驱动其底层的RDMA网络适配器。
4.根据权利要求3所述的异构硬件统一纳管调度节点控制器,其特征在于:所述计算单元与所述计算单元通信代理模块之间通过共享内存作为输出传输方式,以实现零拷贝的数据传输。
5.根据权利要求4所述的异构硬件统一纳管调度节点控制器,其特征在于:当建立消息队列时,所述计算单元通信代理模块创建一个共享内存池,所述共享内存池中存储了页对齐的多个内存块,每个块的大小由用户在任务描述图中对于各个计算资源之间连接的描述所决定,所述内存块用于消息队列的接收缓存以及发送缓存。
6.根据权利要求5所述的异构硬件统一纳管调度节点控制器,其特征在于:所述共享内存池具有空闲区、缓存区和使用区;当发送队列请求时,所述计算单元通过套接字获取一块空闲的内存区域的key,将此内存映射到进程的地址空间中,应用进程将需要发送的相数据传输入该块内存中,使得共享内存块在内存池中从空闲区转移到队列使用区中;计算单元通信代理模块通过解析key到相应的共享内存块后, 将内存块的地址绑定于新创建的发送请求中;新创建的请求将被放于发送队列中等待硬件完成发送。
7.根据权利要求5或6所述的异构硬件统一纳管调度节点控制器,其特征在于:当接收队列中的接收工作请求任务完成后,会在完成队列中生成一个完成队列元素,计算单元通信代理模块中监听发送队列的线程就会停止阻塞,此时接收工作请求指向的内存块会被标记为正在使用,被置为内存池中的使用区。
8.根据权利要求7所述的异构硬件统一纳管调度节点控制器,其特征在于:当计算单元通信代理模块将待处理的数据推送给指定的计算单元,推送的方式是通过套接字将共享内存的key传输给指定的计算单元,计算单元根据key来对指定的数据区域进行读取、运算操作,同时将内存池中的空闲区域取出一部分用于新的接收工作请求的缓存地址,将接收工作请求置于接收队列中,内存块就会标记为队列使用中,同时将该内存块置于内存池的队列缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310664763.5A CN116662008A (zh) | 2023-06-07 | 2023-06-07 | 一种异构硬件统一纳管调度节点控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310664763.5A CN116662008A (zh) | 2023-06-07 | 2023-06-07 | 一种异构硬件统一纳管调度节点控制器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116662008A true CN116662008A (zh) | 2023-08-29 |
Family
ID=87722193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310664763.5A Pending CN116662008A (zh) | 2023-06-07 | 2023-06-07 | 一种异构硬件统一纳管调度节点控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116662008A (zh) |
-
2023
- 2023-06-07 CN CN202310664763.5A patent/CN116662008A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10819657B2 (en) | Allocating acceleration component functionality for supporting services | |
US20170371636A1 (en) | Methods and systems to optimize cost and automate a development and operations deployment pipeline | |
KR102103596B1 (ko) | 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법 | |
CN107534582B (zh) | 用于在数据中心中使用的方法、系统和计算机可读介质 | |
CN117348976A (zh) | 用于流处理的数据处理单元 | |
US9052957B2 (en) | Method and system for conducting intensive multitask and multiflow calculation in real-time | |
US9946565B2 (en) | Management of cloud-computing facility through a virtual infrastructure management server | |
US10379883B2 (en) | Simulation of high performance computing (HPC) application environment using virtual nodes | |
US10212045B2 (en) | Method and system for testing and analyzing management servers | |
US10225142B2 (en) | Method and system for communication between a management-server and remote host systems | |
US10031768B2 (en) | Host-gateway-facilitated aggregation of host-computer clusters | |
US11042413B1 (en) | Dynamic allocation of FPGA resources | |
Mohamed et al. | MidCloud: an agent‐based middleware for effective utilization of replicated Cloud services | |
US8977752B2 (en) | Event-based dynamic resource provisioning | |
CN115878301A (zh) | 一种数据库网络负载性能的加速框架、加速方法及设备 | |
US20210099354A1 (en) | Method and system that determines application topology using network metrics | |
CN110955602A (zh) | 一种基于资源共享的分布式嵌入式软件测试系统 | |
Guo et al. | Decomposing and executing serverless applications as resource graphs | |
CN116662008A (zh) | 一种异构硬件统一纳管调度节点控制器 | |
CN113076189B (zh) | 具有多数据通路的数据处理系统及用多数据通路构建虚拟电子设备 | |
Li et al. | Resources-conscious asynchronous high-speed data transfer in multicore systems: Design, optimizations, and evaluation | |
CN113076180A (zh) | 上行数据通路的构建方法及数据处理系统 | |
CN114567520B (zh) | 实现集合通信的方法、计算机设备和通信系统 | |
US20220232069A1 (en) | Actor-and-data-grid-based distributed applications | |
US20230221993A1 (en) | Methods and systems that place and manage workloads across heterogeneous hosts within distributed computer systems |
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 |