一种异构计算架构的边缘端图像处理系统及方法
技术领域
本发明涉及边缘计算领域,具体地说是一种异构计算架构的边缘端图像处理系统及方法。
背景技术
随着GPU技术的快速发展,当前的GPU已经具有很强的并行计算能力,浮点运算能力甚至可以达到同代CPU的10倍以上。同时,随着Nvidia公司CUDA的推出,使得GPU具有更好的可编程性,因此,在图像处理等并行计算领域有着广泛的应用。如何充分利用GPU的并行计算特点实现海量网络数据的快速处理,已经成为当今的热点问题之一。
FPGA具备良好的并行+流水处理能力,同时,OpenCL/SDAccel等高层开发环境降低了FPGA的使用门槛。使用FPGA构建NIC用于网络报文的卸载及简单数据处理分发,可极大降低系统开销与提升系统实时性。
故如何避免边缘端图像处理实时需求与计算性能浪费是目前现有技术中急需解决的技术问题。
专利号为CN107346170A的专利文献公开了一种基于CPU+GPU+FPGA架构的异构计算系统,包括CPU主机单元、一个或多个GPU异构加速单元和一个或多个FPGA异构加速单元,CPU主机单元分别与GPU异构加速单元、FPGA异构加速单元通信连接,其中:CPU主机单元用于资源管理,以及将处理任务分配给GPU异构加速单元和/或FPGA异构加速单元;GPU异构加速单元对来自CPU主机单元的任务进行并行处理;FPGA异构加速单元对来自CPU主机单元的任务进行串行或并行处理。该技术方案能够充分发挥CPU的管控优势、GPU的并行处理优势、FPGA的性能功耗比并且具有灵活配置的优势,但是不能避免边缘端图像处理实时需求与计算性能浪费。
专利号为CN107273331A的专利文献公开了一种FPGA异构计算加速系统,包括现场可编程门阵列FPGA芯片;控制模块,用于确定待降低功耗的FPGA卡,并生成与各个待降低功耗的FPGA卡对应的控制指令;与FPGA芯片一一对应的控制寄存器,用于接收与自身对应的控制指令,并根据控制指令控制与FPGA芯片对应的电源模块的开关状态和/或控制FPGA芯片的工作状态。该技术方案从两方面节省了FPGA卡的功耗,可以做到在特定的场景下根据实际需要投入使用不同数量的FPGA卡,降低了整个系统的耗电量,节约了资源,但是不能避免边缘端图像处理实时需求与计算性能浪费。
发明内容
本发明的技术任务是提供一种异构计算架构的边缘端图像处理系统及方法,来解决如何避免边缘端图像处理实时需求与计算性能浪费的问题。
本发明的技术任务是按以下方式实现的,一种异构计算架构的边缘端图像处理系统,该系统包括FPGA实现的网卡(FPGA_NIC)、FPGA实现的系统主控单元(FPGA_CTRL)、GPU、PCIE Switch及系统存储;
网卡(FPGA_NIC)、系统主控单元(FPGA_CTRL)与GPU通过PCIE Switch互联;
网卡(FPGA_NIC)阵列设置且网卡(FPGA_NIC)阵列中网卡(FPGA_NIC)数量取决于网络报文处理能力与GPU计算能力;
系统存储用于存储系统中信息。
作为优选,所述网卡(FPGA_NIC)包括通用FPGA、网络接口、内存块及PCIE接口,通用FPGA分别连接网络接口、PCIE接口和内存。
更优地,所述通用FPGA包括网络控制器(内部实现网络MAC)、PCIE控制器、内存控制器接口及可重构协议卸载逻辑单元,可重构协议卸载逻辑单元用于实现网络报文实时解析与发送;可重构协议卸载逻辑单元分别连接内存控制器接口、网络控制器和PCIE控制器,内存控制器接口外接内存块,网络控制器外接网络接口,PCIE控制器外接PCIE接口。
作为优选,所述系统主控单元(FPGA_CTRL)由带有ARM处理器的FPGA为核心构成,FPGA的PL端实现内存控制器和PCIE控制器,FPGA的PS端外接内存块、NandFlash、网络接口及SD卡的外设设备,同时PS端运行操作系统。
更优地,所述系统主控单元(FPGA_CTRL)通过sds_aollc()/sds_free()函数进行指定地址的内存分配与释放,GPU通过cuMemMap()函数分配GPU内存映射,构建系统主控单元(FPGA_CTRL)、GPU与网卡(FPGA_NIC)相互之间的内存通路。
更优地,所述系统主控单元(FPGA_CTRL)依据需求动态配置FPGA_NIC实现重构,满足不同网络报文卸载与数据通路方向需求。
一种异构计算架构的边缘端图像处理方法,该方法是通过多FPGA与单GPU构建异构计算架构,实现网络传输宽带与计算性能的匹配;具体步骤如下:
S1、系统主控单元(FPGA_CTRL)接收云端需求;
S2、系统主控单元(FPGA_CTRL)依据需求配置网卡(FPGA_NIC)阵列;
S3、网卡(FPGA_NIC)阵列接收网络数据并进行协议卸载;
S4、网卡(FPGA_NIC)阵列依据驱动将数据发送至GPU共享的多个内存块;
S5、GPU接管共享内存块并进行数据并行运算;
S6、GPU将计算结果放入系统主控单元(FPGA_CTRL)共享内存;
S7、系统主控单元(FPGA_CTRL)依据需求将计算结果进行存储、发送、转发的操作。
作为优选,所述GPU、系统主控单元(FPGA_CTRL)通过SDK的cuMemMap()、sds_aollc()/sds_free()来指定共享内存,数据通过网卡(FPGA_NIC)的报文卸载预处理发送至GPU。
更优地,所述网卡(FPGA_NIC)包括通用FPGA、网络接口、内存块及PCIE接口,通用FPGA分别连接网络接口、PCIE接口和内存;
通用FPGA包括网络控制器(内部实现网络MAC)、PCIE控制器、内存控制器接口及可重构协议卸载逻辑单元,可重构协议卸载逻辑单元用于实现网络报文实时解析与发送;可重构协议卸载逻辑单元分别连接内存控制器接口、网络控制器和PCIE控制器,内存控制器接口外接内存块,网络控制器外接网络接口,PCIE控制器外接PCIE接口。
更优地,所述系统主控单元(FPGA_CTRL)由带有ARM处理器的FPGA为核心构成,FPGA的PL端实现内存控制器和PCIE控制器,FPGA的PS端外接内存块、NandFlash、网络接口及SD卡的外设设备,同时PS端运行操作系统;
系统主控单元(FPGA_CTRL)通过sds_aollc()/sds_free()函数进行指定地址的内存分配与释放,GPU通过cuMemMap()函数分配GPU内存映射,构建系统主控单元(FPGA_CTRL)、GPU与网卡(FPGA_NIC)相互之间的内存通路;
系统主控单元(FPGA_CTRL)依据需求动态配置FPGA_NIC实现重构,满足不同网络报文卸载与数据通路方向需求。
本发明的异构计算架构的边缘端图像处理系统及方法具有以下优点:
(一)、本发明针对边缘端视频处理实时需求与计算性能浪费问题,最终目标是实现异构计算架构的边缘端图像处理系统,通过多FPGA与单GPU构建异构计算架构,实现网络传输带宽与计算性能的匹配,因此,不仅避免GPU并行计算资源浪费,又通过FPGA实现了数据传输低时延,保证实时性;
(二)、本发明的FPGA_CTRL通过sds_aollc()/sds_free()函数进行指定地址的内存分配与释放,GPU通过cuMemMap()函数分配GPU内存映射,通过这个方法构建FPGA_CTRL、GPU与FPGA_NIC相互之间的内存通路;
(三)、本发明的FPGA_CTRL可依据需求动态配置FPGA_NIC实现重构,满足不同网络报文卸载与数据通路方向需求。
附图说明
下面结合附图对本发明进一步说明。
附图1为异构计算架构的边缘端图像处理系统的结构框图;
附图2为附图1中FPGA_NIC的结构框图;
附图3为异构计算架构的边缘端图像处理方法的流程框图。
具体实施方式
参照说明书附图和具体实施例对本发明的一种异构计算架构的边缘端图像处理系统及方法作以下详细地说明。
实施例1:
如附图1所示,本发明的异构计算架构的边缘端图像处理系统,其结构包括FPGA实现的网卡(FPGA_NIC)、FPGA实现的系统主控单元(FPGA_CTRL)、GPU、PCIE Switch及系统存储;网卡(FPGA_NIC)、系统主控单元(FPGA_CTRL)与GPU通过PCIE Switch互联;网卡(FPGA_NIC)阵列设置且网卡(FPGA_NIC)阵列中网卡(FPGA_NIC)数量取决于网络报文处理能力与GPU计算能力;系统存储用于存储系统中信息。
如附图2所示,网卡(FPGA_NIC)包括通用FPGA、网络接口、内存块及PCIE接口,通用FPGA分别连接网络接口、PCIE接口和内存。通用FPGA包括网络控制器(内部实现网络MAC)、PCIE控制器、内存控制器接口及可重构协议卸载逻辑单元,可重构协议卸载逻辑单元用于实现网络报文实时解析与发送;可重构协议卸载逻辑单元分别连接内存控制器接口、网络控制器和PCIE控制器,内存控制器接口外接内存块,网络控制器外接网络接口,PCIE控制器外接PCIE接口。
系统主控单元(FPGA_CTRL)由带有ARM处理器的FPGA为核心构成,FPGA的PL端实现内存控制器和PCIE控制器,FPGA的PS端外接内存块、NandFlash、网络接口及SD卡的外设设备,同时PS端运行操作系统。系统主控单元(FPGA_CTRL)通过sds_aollc()/sds_free()函数进行指定地址的内存分配与释放,GPU通过cuMemMap()函数分配GPU内存映射,构建系统主控单元(FPGA_CTRL)、GPU与网卡(FPGA_NIC)相互之间的内存通路。系统主控单元(FPGA_CTRL)依据需求动态配置FPGA_NIC实现重构,满足不同网络报文卸载与数据通路方向需求。
具体工作过程如下:
FPGA_CTRL会依据云端需求,将FPGA_NIC阵列配置好,GPU、FPGA_CTRL通过SDK的cuMemMap()、sds_aollc()/sds_free()来指定共享内存,数据通过FPGA_NIC的报文卸载预处理发送至GPU,GPU处理好后,将数据发送至FPGA_CTRL进行保存或转发。整个流程通过多FPGA与单GPU构建异构计算系统,实现网络传输带宽与计算性能的匹配,避免GPU并行计算资源浪费,并通过FPGA实现了数据传输低时延,保证实时性。
实施例2:
如附图3所示,本发明的异构计算架构的边缘端图像处理方法,该方法是通过多FPGA与单GPU构建异构计算架构,实现网络传输宽带与计算性能的匹配;具体步骤如下:
S1、系统主控单元(FPGA_CTRL)接收云端需求;
S2、系统主控单元(FPGA_CTRL)依据需求配置网卡(FPGA_NIC)阵列;
S3、网卡(FPGA_NIC)阵列接收网络数据并进行协议卸载;
S4、网卡(FPGA_NIC)阵列依据驱动将数据发送至GPU共享的多个内存块;
S5、GPU接管共享内存块并进行数据并行运算;
S6、GPU将计算结果放入系统主控单元(FPGA_CTRL)共享内存;
S7、系统主控单元(FPGA_CTRL)依据需求将计算结果进行存储、发送、转发的操作。
其中,GPU、系统主控单元(FPGA_CTRL)通过SDK的cuMemMap()、sds_aollc()/sds_free()来指定共享内存,数据通过网卡(FPGA_NIC)的报文卸载预处理发送至GPU。
网卡(FPGA_NIC)包括通用FPGA、网络接口、内存块及PCIE接口,通用FPGA分别连接网络接口、PCIE接口和内存;通用FPGA包括网络控制器(内部实现网络MAC)、PCIE控制器、内存控制器接口及可重构协议卸载逻辑单元,可重构协议卸载逻辑单元用于实现网络报文实时解析与发送;可重构协议卸载逻辑单元分别连接内存控制器接口、网络控制器和PCIE控制器,内存控制器接口外接内存块,网络控制器外接网络接口,PCIE控制器外接PCIE接口。
系统主控单元(FPGA_CTRL)由带有ARM处理器的FPGA为核心构成,FPGA的PL端实现内存控制器和PCIE控制器,FPGA的PS端外接内存块、NandFlash、网络接口及SD卡的外设设备,同时PS端运行操作系统;系统主控单元(FPGA_CTRL)通过sds_aollc()/sds_free()函数进行指定地址的内存分配与释放,GPU通过cuMemMap()函数分配GPU内存映射,构建系统主控单元(FPGA_CTRL)、GPU与网卡(FPGA_NIC)相互之间的内存通路;系统主控单元(FPGA_CTRL)依据需求动态配置FPGA_NIC实现重构,满足不同网络报文卸载与数据通路方向需求。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。