CN112925741B - 异构计算方法和系统 - Google Patents

异构计算方法和系统 Download PDF

Info

Publication number
CN112925741B
CN112925741B CN202110332343.8A CN202110332343A CN112925741B CN 112925741 B CN112925741 B CN 112925741B CN 202110332343 A CN202110332343 A CN 202110332343A CN 112925741 B CN112925741 B CN 112925741B
Authority
CN
China
Prior art keywords
control unit
soc control
fpga
unit
computing
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
Application number
CN202110332343.8A
Other languages
English (en)
Other versions
CN112925741A (zh
Inventor
谭黎敏
宋捷
罗治松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Xijing Technology Co ltd
Original Assignee
Shanghai Westwell Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Westwell Information Technology Co Ltd filed Critical Shanghai Westwell Information Technology Co Ltd
Priority to CN202110332343.8A priority Critical patent/CN112925741B/zh
Publication of CN112925741A publication Critical patent/CN112925741A/zh
Application granted granted Critical
Publication of CN112925741B publication Critical patent/CN112925741B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Analysis (AREA)

Abstract

本发明提供了一种异构计算方法和系统,该方法包括:SoC控制单元在PC机侧的内存中分配解码单元缓冲池;SoC控制单元在PC机侧的内存中为各个FPGA计算单元分别分配计算单元缓冲池;SoC控制单元获取待处理的视频,并对待处理的视频进行解码;SoC控制单元将解码数据上传至所对应的解码单元缓冲池;SoC控制单元将解码单元缓冲池中解码数据的指针和神经网络加速处理指令发送至FPGA计算单元;FPGA计算单元根据解码数据的指针从解码单元缓冲池中获取解码数据,根据处理指令对解码数据进行神经网络加速处理,并将处理结果上传至计算单元缓冲池。本发明实现端到端的边缘计算,无需依赖云端部署,具有低功耗和高功耗能效比的优势。

Description

异构计算方法和系统
技术领域
本发明涉及芯片技术领域,尤其涉及一种异构计算方法和系统。
背景技术
人工智能(Artificial Intelligence),英文缩写AI。人工智能包含了很多不同的领域,如机器学习,计算机视觉等等。深度学习硬件平台常见的异构计算系统包括CPU+GPU、CPU+FPGA组成的异构计算单元。异构计算技术是将不同类型的体系架构协同计算、彼此加速,从而发挥各自系统的优势。现有技术中异构计算系统往往存在功耗大和功耗能效比低的问题,并且现有技术中的异构计算系统往往需要依赖于云端部署。
发明内容
针对现有技术中的问题,本发明的目的在于提供一种异构计算方法和系统,实现端到端的边缘计算,无需依赖云端部署,具有低功耗和高功耗能效比的优势。
本发明实施例提供一种异构计算方法,包括:
SoC控制单元在PC机侧的内存中分配解码单元缓冲池;
所述SoC控制单元在PC机侧的内存中为各个FPGA计算单元分别分配计算单元缓冲池,所述FPGA计算单元通信配置为通过PCI总线与所述SoC控制单元通信;
所述SoC控制单元获取待处理的视频,并对所述待处理的视频进行解码,得到解码数据;
所述SoC控制单元将解码数据上传至所对应的解码单元缓冲池;
所述SoC控制单元将所述解码单元缓冲池中解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元;
所述FPGA计算单元根据所述解码数据的指针从所述解码单元缓冲池中获取解码数据,根据所述处理指令对解码数据进行神经网络加速处理,并将处理结果上传至所对应的计算单元缓冲池。
在一些实施例中,所述SoC控制单元获取待处理的视频,包括如下步骤:
所述SoC控制单元接收到视频源地址和视频处理任务信息;
所述SoC控制单元根据所述视频源地址获取待处理的视频。
在一些实施例中,所述SoC控制单元将所述解码单元缓冲池中解码数据的指针和处理指令发送至所对应的FPGA计算单元,包括如下步骤:
所述SoC控制单元根据所述视频处理任务信息为与其连接的各个FPGA计算单元分配神经网络加速处理任务;
所述SoC控制单元将所述神经网络加速处理任务所对应的解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元。
在一些实施例中,所述SoC控制单元根据所述视频处理任务信息为与其连接的各个FPGA计算单元分配神经网络加速任务,包括如下步骤:
所述SoC控制单元获取所述各个FPGA计算单元的能力级数据和状态数据;
所述SoC控制单元基于所述FPGA计算单元的能力级数据和状态数据,根据所述视频处理任务信息生成多个神经网络加速任务,并分配给所述FPGA计算单元。
在一些实施例中,所述SoC控制单元和所述FPGA计算单元通过消息交互区传递指令,所述消息交互区位于所对应的FPGA计算单元的bar区。
在一些实施例中,所述方法还包括如下步骤:
所述SoC控制单元从所述FPGA计算单元获取所述FPGA计算单元的设备信息;
所述SoC控制单元根据自身的设备信息和所述FPGA计算单元的设备信息生成异构计算节点的节点信息,所述异构计算节点包括所述SoC控制单元和与其通信的FPGA计算单元;
所述SoC控制单元将所述异构计算节点的节点信息存储于数据库。
在一些实施例中,所述SoC控制单元的设备信息和所述FPGA计算单元的设备信息分别包括设备资源类型、能力级数据和状态数据,所述异构计算节点的节点信息包括节点所包括的设备资源类型和能力级数据。
在一些实施例中,所述方法还包括如下步骤:
所述SoC控制单元接收到应用端的节点信息查询请求;
所述SoC控制单元从所述数据库中查询异构计算节点的节点信息,并推送至应用端。
在一些实施例中,所述FPGA计算单元将处理结果上传至所对应的计算单元缓冲池之后,还包括如下步骤:
所述FPGA计算单元将处理结果上传通知发送至所述SoC控制单元,所述处理结果上传通知包括处理结果在所对应的计算单元缓冲池中的存储指针。
在一些实施例中,所述SoC控制单元将所述解码单元缓冲池中解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元,包括:所述SoC控制单元将所述解码单元缓冲池中缩略图数据的指针和区域识别指令发送至所述FPGA计算单元;
所述FPGA计算单元根据所述处理指令对解码数据进行神经网络加速处理,包括:所述FPGA计算单元对获取的缩略图进行识别,判断是否检测到特定区域,如果检测到特定区域,所述FPGA计算单元检测所述特定区域在所述缩略图中的位置。
在一些实施例中,所述FPGA计算单元将处理结果上传至所对应的计算单元缓冲池之后,还包括如下步骤:
所述FPGA计算单元将所述区域识别指令所对应的处理结果上传通知发送至所述SoC控制单元,所述处理结果上传通知包括处理结果在所对应的计算单元缓冲池中的存储指针;
所述SoC控制单元根据所述处理结果判断缩略图中是否检测到特定区域;
如果是,则所述SoC控制单元将所述缩略图所对应的原图数据在所述解码单元缓冲池中的指针和图像识别指令发送至所述FPGA计算单元;
所述FPGA计算单元获取所述原图数据后,根据所述特定区域在所述缩略图中的位置对原图进行抠图,并对抠图得到的区域图形进行识别。
本发明实施例还提供一种异构计算系统,应用于所述的异构计算方法,所述系统包括至少一个异构计算节点,每个所述异构计算节点分别包括SoC控制单元和至少一个FPGA计算单元,所述FPGA计算单元与所述SoC控制单元通过PCI总线通信,其中:
所述SoC控制单元用于在PC机侧的内存中分配解码单元缓冲池,并在PC机侧的内存中为各个FPGA计算单元分别分配计算单元缓冲池;获取待处理的视频,并对所述待处理的视频进行解码,将解码数据上传至所对应的解码单元缓冲池;以及将所述解码单元缓冲池中解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元;
所述FPGA计算单元用于根据所述解码数据的指针从所述解码单元缓冲池中获取解码数据,根据所述处理指令对解码数据进行神经网络加速处理,并将处理结果上传至所对应的计算单元缓冲池。
在一些实施例中,所述SoC控制单元和所述FPGA计算单元通过消息交互区传递指令,所述消息交互区位于所对应的FPGA计算单元的bar区。
在一些实施例中,所述SoC控制单元还用于从所述FPGA计算单元获取所述FPGA计算单元的设备信息,根据自身的设备信息和所述FPGA计算单元的设备信息生成异构计算节点的节点信息,并存储于数据库。
在一些实施例中,所述系统还包括节点信息查询模块,用于接收到应用端的节点信息查询请求时,从数据库获取各个所述异构计算节点的节点信息,并推送至应用端。
本发明的异构计算方法和系统具有如下有益效果:
本发明首先由SoC控制单元在PC机侧的内存中分配用于存储解码数据和用于存储神经网络加速处理结果的缓冲池,并由SoC控制单元来进行视频解码,充分发挥SoC控制单元对视频编解码的优势,然后由FPGA计算单元进行神经网络加速处理,能充分发挥FPGA在神经网络学习上的加速功能。本发明能够实现端到端的边缘计算,无需依赖云端部署,无需依赖云端进行神经网络加速,具有低功耗和高功耗能效比的优势。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。
图1是本发明一实施例的异构计算方法的流程图;
图2是本发明一实施例的SoC控制单元和FPGA计算单元交互的示意图;
图3是本发明一实施例的获取待处理视频并解码的流程图;
图4是本发明一实施例的SoC控制单元分配处理任务的流程图;
图5是本发明一实施例的两级异构计算方法的过程示意图;
图6是本发明一实施例的两级异构计算方法的流程图;
图7是本发明一实施例的异构计算方法的应用架构图;
图8是本发明一实施例的节点信息生成的流程图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此,实际执行的顺序有可能根据实际情况改变。
如图1所示,本发明实施例提供一种异构计算方法,包括:
S100:SoC控制单元在PC机侧的内存中分配解码单元缓冲池;
S200:所述SoC控制单元在PC机侧的内存中为各个FPGA计算单元分别分配计算单元缓冲池,所述FPGA计算单元通信配置为通过PCI总线与所述SoC控制单元通信;
S300:所述SoC控制单元获取待处理的视频,并对所述待处理的视频进行解码,得到解码数据;
S400:所述SoC控制单元将解码数据上传至所对应的解码单元缓冲池;
S500:所述SoC控制单元将所述解码单元缓冲池中解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元;
S600:所述FPGA计算单元根据所述解码数据的指针从所述解码单元缓冲池中获取解码数据,根据所述处理指令对解码数据进行神经网络加速处理,并将处理结果上传至所对应的计算单元缓冲池。
本发明的异构计算方法首先通过步骤S100和步骤S200由SoC(System on Chip,系统级芯片)控制单元在PC机侧的内存中分配用于存储解码数据和用于存储神经网络加速处理结果的缓冲池,并通过步骤S300和步骤S400由SoC控制单元来进行视频解码,充分发挥SoC控制单元对视频编解码的优势,然后通过步骤S500和步骤S600由FPGA计算单元进行神经网络加速处理,能充分发挥FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)在神经网络学习上的加速功能。本发明能够实现端到端的边缘计算,无需依赖云端部署,无需依赖云端进行神经网络加速,具有低功耗和高功耗能效比的优势。
如图2所示,为该实施例中SoC单元与FPGA计算单元交互的示意图。其中,SoC控制单元直接从摄像头获取待处理的视频。例如,在应用于车辆检测时,SoC控制单元直接从交通路口摄像头获取到拍摄的视频,并对视频进行解码。SoC控制单元可以采用多级解码,一路原始视频可以输出多个分辨率的解码数据。如原始码率为1080P的图像,不仅可以输出1080P的图像,还可以输出480P的图像,用于后续不同神经网络使用。神经网络可以为卷积神经网络等深度学习网络,但本发明不限于此,其他的可以应用于FPGA的神经网络也属于本发明的保护范围之内。
本发明通过步骤S100和步骤S200在PC机侧的内存中分配解码数据缓冲池和各个FPGA计算单元的计算单元缓冲池,即利用了SoC侧的物理内存进行数据缓存,充分利用了PC机侧的大内存的优势,并且可以满足SoC控制单元对解码数据和处理结果的回溯需求,回溯功能极大地减小了计算量,降低了系统负载。
如图2所示,在该实施例中,所述SoC控制单元和所述FPGA计算单元通过消息交互区传递指令,所述消息交互区位于所对应的FPGA计算单元的bar区。SoC侧的物理内存要远远大于bar空间,使得作为数据交互区的缓冲池可以灵活配置。消息交互区占用空间大小可控,降低了硬件成本。PCI总线下面有多个FPGA计算单元,通过统一设备管理能实现硬件资源的发现、上报和管理。
如图3所示,在该实施例中,所述步骤S300中,所述SoC控制单元获取待处理的视频,包括如下步骤:
S310:所述SoC控制单元接收到视频源地址和视频处理任务信息;
S320:所述SoC控制单元根据所述视频源地址获取待处理的视频。
所述视频处理任务信息至少包括视频解码后的分辨率要求、图像中识别要求等。所述步骤S300中,所述SoC控制单元对所述待处理的视频进行解码,得到解码数据,包括S330:所述SoC控制单元根据所述视频处理任务信息,对待处理的视频进行解码,得到至少一种分辨率的解码数据。
如图4所示,所述步骤S500:SoC控制单元将所述解码单元缓冲池中解码数据的指针和处理指令发送至所对应的FPGA计算单元,包括如下步骤:
S510:所述SoC控制单元根据所述视频处理任务信息为与其连接的各个FPGA计算单元分配神经网络加速处理任务;
S520:所述SoC控制单元将所述神经网络加速处理任务所对应的解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元。由于不同的神经网络加速处理指令对应的输入数据是不同的,例如车辆识别对应的是整个拍摄图像,而车型识别则对应的只是车辆区域图像。因此,在步骤S520,SoC控制单元发送给不同的FPGA计算单元的解码数据的指针也不同,FPGA计算单元根据解码数据的指针获取到所需要的输入数据。
在该实施例中,所述图像识别要求例如可以包括对图像中特定区域的识别要求、对区域图像中文字的识别要求、多个识别要求的前后顺序等。例如,应用需要采用SoC控制单元和FPGA计算单元对交通路口视频的图像进行车辆检测,获取到车辆图像后,进行车辆车型的识别。SoC控制单元从交通路口的摄像头获取到视频数据后,进行解码,并且分别分配车辆检测任务和车型检测任务给不同的FPGA计算单元。在分配加速处理任务时,还可以进一步考虑每个FPGA计算单元的运行负载能力和运行状态,保证加速处理任务能够及时快速地被执行。
如图4所示,在该实施例中,所述步骤S510:SoC控制单元根据所述视频处理任务信息为与其连接的各个FPGA计算单元分配神经网络加速任务,包括如下步骤:
S511:所述SoC控制单元获取所述各个FPGA计算单元的能力级数据和状态数据,此处能力级数据至少包括FPGA计算单元的类型、计算单元的运行负载等,状态数据至少包括FPGA计算单元是否正常运行;
在该实施例中,FPGA计算单元可以通过消息交互区上报各自的能力级数据和状态数据。进一步地,SoC控制单元也可以通过消息交互区配置各个FPGA计算单元的运行负载。
S512:所述SoC控制单元基于所述FPGA计算单元的能力级数据和状态数据,根据所述视频处理任务信息生成多个神经网络加速任务,并分配给所述FPGA计算单元。
在该实施例中,所述步骤S600:FPGA计算单元将处理结果上传至所对应的计算单元缓冲池之后,还包括如下步骤:
所述FPGA计算单元通过所述消息交互区将处理结果上传通知发送至所述SoC控制单元,所述处理结果上传通知包括处理结果在所对应的计算单元缓冲池中的存储指针。所述SoC控制单元可以根据所述处理结果上传通知在计算单元缓冲池中获取到当前神经网络加速处理的结果,例如,图像中是否识别到车辆、对车辆车型的识别分类结果、对车牌区域中文本识别的结果等等。并且SoC控制单元可以根据处理结果在计算单元缓冲池中存储的规则进行数据回溯。
如图5所示,为一具体实例中异构计算方法的过程示意图。在该实施例中,深度学习加速处理采用两级识别,第一级深度学习模型有有效输出后,才会触发第二级深度学习模型的识别。第一级深度学习模型采用缩略图作为输入可以降低计算量,第二级深度学习模型根据第一级深度学习模型的结果从原图上抠图做第二级深度学习模型的识别。例如,在将该异构计算方法应用于车牌文本识别时,首先采用缩略图在车辆图像中识别得到车牌区域,然后根据车牌区域位置在原图中抠图,对抠图得到的车牌区域图像进行文本识别。
所述步骤S500中,所述SoC控制单元将所述解码单元缓冲池中解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元,包括:所述SoC控制单元将所述解码单元缓冲池中缩略图数据的指针和区域识别指令发送至所述FPGA计算单元。此处缩略图即指的是对解码后的原图进行分辨率压缩后得到的图像。
所述步骤S600中,FPGA计算单元根据所述处理指令对解码数据进行神经网络加速处理,包括:所述FPGA计算单元对获取的缩略图进行识别,判断是否检测到特定区域,如果检测到特定区域,所述FPGA计算单元检测所述特定区域在所述缩略图中的位置。在识别完成后,所述FPGA计算单元将是否识别到特定区域以及识别到的特定区域的位置作为处理结果上传至所对应的计算单元缓冲池。
如图5所示,在该实施例中,所述步骤S600:FPGA计算单元将处理结果上传至所对应的计算单元缓冲池之后,还包括如下步骤:
S710:所述FPGA计算单元将所述区域识别指令所对应的处理结果上传通知发送至所述SoC控制单元,所述处理结果上传通知包括处理结果在所对应的计算单元缓冲池中的存储指针;
S720:所述SoC控制单元根据所述处理结果在所对应的计算单元缓冲池中的存储指针到对应位置获取到处理结果,根据所述处理结果判断缩略图中是否检测到特定区域;
S730:如果是,则所述SoC控制单元将所述缩略图所对应的原图数据在所述解码单元缓冲池中的指针和图像识别指令发送至所述FPGA计算单元,然后继续步骤S750;
S740:如果否,则不执行第二级深度学习识别;
S750:所述FPGA计算单元根据所述原图数据在解码单元缓冲池中的指针获取所述原图数据后,根据所述特定区域在所述缩略图中的位置对原图进行抠图,并根据所述图像识别指令对抠图得到的区域图形进行识别,将识别结果上传至所对应的计算单元缓冲池,并将识别结果上传通知发送至所述SoC控制单元,从而完成两级识别。
图5中还示出了一种对图像进行裁剪后识别的二级识别过程。即第一级识别时,SoC控制单元将原图在解码数据缓存池中的指针和区域识别指令发送给FPGA计算单元,FPGA计算单元对区域进行识别后,SoC控制单元再将识别结果对应的裁剪图在解码数据缓冲池中的指针发送给FPGA计算单元,然后由FPGA计算单元对裁剪图进行进一步识别。
在其他可替代的实施方式中,本发明的异构计算方法也可以应用于其他场景的识别,例如应用于行人检测、车辆行进方向识别等等,该异构计算方法中的识别可以只有一级深度学习识别,也可以有两级或者更多级的深度学习识别。
在该实施例中,每个SoC控制单元和与其连接的FPGA计算单元可以组成一个异构计算节点。一个服务器可以连接至多个异构计算节点,形成一个计算集群。对于应用端来说,每个异构计算节点是一个整体,对节点能力的查询、对节点任务的派发等,均是以节点为单位来进行的。而每个异构计算节点中的SoC控制单元在接收到具体的异构计算任务后,再进行分析和计算任务分配。
如图7所示,为所述异构计算方法的应用架构图。其中,设备层是硬件设备层,包括SoC芯片和FPGA加速卡,SoC芯片完成摄像头视频数据解码,FPGA加速卡完成深度学习网络加速。Co-agent完成虚拟设备创建,虚拟设备提供对上层应用的驱动接口。在co-agent中,完成硬件资源的管理和查询。FPGA加速卡和SoC芯片通过PCIE上电,设备信息通过驱动上报到co-agent节点。Co-agent完成设备能力查询,查询内容包括且不限于:设备资源类型(卷积加速器/视频编解码器等)、设备能力(解码能力/深度学习网络承载能力)、实时更新设备当前状态(负载占用、温度、指导温度、指导负载等),将这些内容实时更新在DB数据库中。Co-runtime library能提供在虚拟环境和非虚拟环境中的对应用接口。
如图8所示,所述异构计算方法还包括如下步骤:
S810:所述SoC控制单元从所述FPGA计算单元获取所述FPGA计算单元的设备信息;
S820:所述SoC控制单元根据自身的设备信息和所述FPGA计算单元的设备信息生成异构计算节点的节点信息,所述异构计算节点包括所述SoC控制单元和与其通信的FPGA计算单元;
在该实施例中,所述SoC控制单元的设备信息和所述FPGA计算单元的设备信息分别包括设备资源类型、能力级数据和状态数据,所述异构计算节点的节点信息包括节点所包括的设备资源类型和能力级数据;
S830:所述SoC控制单元将所述异构计算节点的节点信息存储于数据库。
在该实施例中,所述异构计算方法还包括如下步骤:
所述SoC控制单元接收到应用端的节点信息查询请求;
所述SoC控制单元从所述数据库中查询异构计算节点的节点信息,并推送至应用端。因此,在应用端所看到的每个异构计算节点是一个整体,在选择执行任务的对象时,也是以节点为单位来进行派发任务。通过各个节点的设备资源类型和能力级数据的查询,可以在任务派发时进行统一设备管理、任务进度管理和均衡负载。因此,在应用端派发任务之后,对于每个节点来说,SoC控制单元接收到任务后,自动进行分析、确定视频源信息、确定需要进行识别的内容并且确定执行识别加速的FPGA计算单元,从而可以完成从视频解码到识别加速的整个过程,无需依赖云端来进行具体的任务部署。在任务执行过程中,由SoC控制单元对整个节点的状态进行监控和反馈,应用端可以实时了解到每个节点的任务执行状态。
本发明实施例还提供一种异构计算系统,应用于所述的异构计算方法,所述系统包括至少一个异构计算节点,每个所述异构计算节点分别包括SoC控制单元和至少一个FPGA计算单元,所述FPGA计算单元与所述SoC控制单元通过PCI总线通信。一个异构计算节点的结构可以参见图2中的示例。图2中示出了一个异构计算系统在视频处理中的应用,但本发明不限于此,该异构计算系统也可以应用于其他场景中,并且其中每个异构计算节点所包括的FPGA计算单元的数量可以根据需要选择。在该实施例中,所述SoC控制单元和所述FPGA计算单元通过消息交互区传递指令,所述消息交互区位于所对应的FPGA计算单元的bar区。SoC侧的物理内存要远远大于bar空间,使得作为数据交互区的缓冲池可以灵活配置。消息交互区占用空间大小可控,降低了硬件成本。PCI总线下面有多个FPGA计算单元,通过统一设备管理能实现硬件资源的发现、上报和管理。
在所述异构计算节点中,所述SoC控制单元用于在PC机侧的内存中分配解码单元缓冲池,并在PC机侧的内存中为各个FPGA计算单元分别分配计算单元缓冲池;获取待处理的视频,并对所述待处理的视频进行解码,将解码数据上传至所对应的解码单元缓冲池;以及将所述解码单元缓冲池中解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元。因此,本发明可以充分发挥SoC芯片对视频编解码的优势。
在所述异构计算节点中,所述FPGA计算单元用于根据所述解码数据的指针从所述解码单元缓冲池中获取解码数据,根据所述处理指令对解码数据进行神经网络加速处理,并将处理结果上传至所对应的计算单元缓冲池。因此,本发明可以充分发挥FPGA在深度学习上加速处理优势。
本发明的异构计算系统首先由SoC控制单元在PC机侧的内存中分配用于存储解码数据和用于存储神经网络加速处理结果的缓冲池,并由SoC控制单元来进行视频解码,充分发挥SoC控制单元对视频编解码的优势,然后由FPGA计算单元进行神经网络加速处理,能充分发挥FPGA在神经网络学习上的加速功能。本发明能够实现端到端的边缘计算,无需依赖云端部署,无需依赖云端进行神经网络加速,具有低功耗和高功耗能效比的优势。
在该实施例中,所述SoC控制单元还用于从所述FPGA计算单元获取所述FPGA计算单元的设备信息,根据自身的设备信息和所述FPGA计算单元的设备信息生成异构计算节点的节点信息,并存储于数据库。在该实施例中,所述SoC控制单元的设备信息和所述FPGA计算单元的设备信息分别包括设备资源类型、能力级数据和状态数据,所述异构计算节点的节点信息包括节点所包括的设备资源类型和能力级数据。
在该实施例中,所述异构计算系统还包括节点信息查询模块,用于接收到应用端的节点信息查询请求时,从数据库获取各个所述异构计算节点的节点信息,并推送至应用端。因此,在应用端所看到的每个异构计算节点是一个整体,在选择执行任务的对象时,也是以节点为单位来进行派发任务。通过各个节点的设备资源类型和能力级数据的查询,可以在任务派发时进行统一设备管理、任务进度管理和均衡负载。因此,在应用端派发任务之后,对于每个节点来说,SoC控制单元接收到任务后,自动进行分析、确定视频源信息、确定需要进行识别的内容并且确定执行识别加速的FPGA计算单元,从而可以完成从视频解码到识别加速的整个过程,无需依赖云端来进行具体的任务部署。在任务执行过程中,由SoC控制单元对整个节点的状态进行监控和反馈,应用端可以实时了解到每个节点的任务执行状态。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (15)

1.一种异构计算方法,其特征在于,包括如下步骤:
SoC控制单元在PC机侧的内存中分配解码单元缓冲池;
所述SoC控制单元在PC机侧的内存中为各个FPGA计算单元分别分配计算单元缓冲池,所述FPGA计算单元通信配置为通过PCI总线与所述SoC控制单元通信;
所述SoC控制单元获取待处理的视频,并对所述待处理的视频进行解码,得到解码数据;
所述SoC控制单元将解码数据上传至所对应的解码单元缓冲池;
所述SoC控制单元将所述解码单元缓冲池中解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元;
所述FPGA计算单元根据所述解码数据的指针从所述解码单元缓冲池中获取解码数据,根据所述处理指令对解码数据进行神经网络加速处理,并将处理结果上传至所对应的计算单元缓冲池。
2.根据权利要求1所述的异构计算方法,其特征在于,所述SoC控制单元获取待处理的视频,包括如下步骤:
所述SoC控制单元接收到视频源地址和视频处理任务信息;
所述SoC控制单元根据所述视频源地址获取待处理的视频。
3.根据权利要求2所述的异构计算方法,其特征在于,所述SoC控制单元将所述解码单元缓冲池中解码数据的指针和处理指令发送至所对应的FPGA计算单元,包括如下步骤:
所述SoC控制单元根据所述视频处理任务信息为与其连接的各个FPGA计算单元分配神经网络加速处理任务;
所述SoC控制单元将所述神经网络加速处理任务所对应的解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元。
4.根据权利要求3所述的异构计算方法,其特征在于,所述SoC控制单元根据所述视频处理任务信息为与其连接的各个FPGA计算单元分配神经网络加速任务,包括如下步骤:
所述SoC控制单元获取所述各个FPGA计算单元的能力级数据和状态数据;
所述SoC控制单元基于所述FPGA计算单元的能力级数据和状态数据,根据所述视频处理任务信息生成多个神经网络加速任务,并分配给所述FPGA计算单元。
5.根据权利要求1所述的异构计算方法,其特征在于,所述SoC控制单元和所述FPGA计算单元通过消息交互区传递指令,所述消息交互区位于所对应的FPGA计算单元的bar区。
6.根据权利要求1所述的异构计算方法,其特征在于,所述方法还包括如下步骤:
所述SoC控制单元从所述FPGA计算单元获取所述FPGA计算单元的设备信息;
所述SoC控制单元根据自身的设备信息和所述FPGA计算单元的设备信息生成异构计算节点的节点信息,所述异构计算节点包括所述SoC控制单元和与其通信的FPGA计算单元;
所述SoC控制单元将所述异构计算节点的节点信息存储于数据库。
7.根据权利要求6所述的异构计算方法,其特征在于,所述SoC控制单元的设备信息和所述FPGA计算单元的设备信息分别包括设备资源类型、能力级数据和状态数据,所述异构计算节点的节点信息包括节点所包括的设备资源类型和能力级数据。
8.根据权利要求6所述的异构计算方法,其特征在于,所述方法还包括如下步骤:
所述SoC控制单元接收到应用端的节点信息查询请求;
所述SoC控制单元从所述数据库中查询异构计算节点的节点信息,并推送至应用端。
9.根据权利要求1所述的异构计算方法,其特征在于,所述FPGA计算单元将处理结果上传至所对应的计算单元缓冲池之后,还包括如下步骤:
所述FPGA计算单元将处理结果上传通知发送至所述SoC控制单元,所述处理结果上传通知包括处理结果在所对应的计算单元缓冲池中的存储指针。
10.根据权利要求1所述的异构计算方法,其特征在于,所述SoC控制单元将所述解码单元缓冲池中解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元,包括:所述SoC控制单元将所述解码单元缓冲池中缩略图数据的指针和区域识别指令发送至所述FPGA计算单元;
所述FPGA计算单元根据所述处理指令对解码数据进行神经网络加速处理,包括:所述FPGA计算单元对获取的缩略图进行识别,判断是否检测到特定区域,如果检测到特定区域,所述FPGA计算单元检测所述特定区域在所述缩略图中的位置。
11.根据权利要求10所述的异构计算方法,其特征在于,所述FPGA计算单元将处理结果上传至所对应的计算单元缓冲池之后,还包括如下步骤:
所述FPGA计算单元将所述区域识别指令所对应的处理结果上传通知发送至所述SoC控制单元,所述处理结果上传通知包括处理结果在所对应的计算单元缓冲池中的存储指针;
所述SoC控制单元根据所述处理结果判断缩略图中是否检测到特定区域;
如果是,则所述SoC控制单元将所述缩略图所对应的原图数据在所述解码单元缓冲池中的指针和图像识别指令发送至所述FPGA计算单元;
所述FPGA计算单元获取所述原图数据后,根据所述特定区域在所述缩略图中的位置对原图进行抠图,并对抠图得到的区域图形进行识别。
12.一种异构计算系统,其特征在于,应用于权利要求1至11中任一项所述的异构计算方法,所述系统包括至少一个异构计算节点,每个所述异构计算节点分别包括SoC控制单元和至少一个FPGA计算单元,所述FPGA计算单元与所述SoC控制单元通过PCI总线通信,其中:
所述SoC控制单元用于在PC机侧的内存中分配解码单元缓冲池,并在PC机侧的内存中为各个FPGA计算单元分别分配计算单元缓冲池;获取待处理的视频,并对所述待处理的视频进行解码,将解码数据上传至所对应的解码单元缓冲池;以及将所述解码单元缓冲池中解码数据的指针和神经网络加速处理指令发送至所对应的FPGA计算单元;
所述FPGA计算单元用于根据所述解码数据的指针从所述解码单元缓冲池中获取解码数据,根据所述处理指令对解码数据进行神经网络加速处理,并将处理结果上传至所对应的计算单元缓冲池。
13.根据权利要求12所述的异构计算系统,其特征在于,所述SoC控制单元和所述FPGA计算单元通过消息交互区传递指令,所述消息交互区位于所对应的FPGA计算单元的bar区。
14.根据权利要求12所述的异构计算系统,其特征在于,所述SoC控制单元还用于从所述FPGA计算单元获取所述FPGA计算单元的设备信息,根据自身的设备信息和所述FPGA计算单元的设备信息生成异构计算节点的节点信息,并存储于数据库。
15.根据权利要求14所述的异构计算系统,其特征在于,所述系统还包括节点信息查询模块,用于接收到应用端的节点信息查询请求时,从数据库获取各个所述异构计算节点的节点信息,并推送至应用端。
CN202110332343.8A 2021-03-29 2021-03-29 异构计算方法和系统 Active CN112925741B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110332343.8A CN112925741B (zh) 2021-03-29 2021-03-29 异构计算方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110332343.8A CN112925741B (zh) 2021-03-29 2021-03-29 异构计算方法和系统

Publications (2)

Publication Number Publication Date
CN112925741A CN112925741A (zh) 2021-06-08
CN112925741B true CN112925741B (zh) 2023-01-24

Family

ID=76176364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110332343.8A Active CN112925741B (zh) 2021-03-29 2021-03-29 异构计算方法和系统

Country Status (1)

Country Link
CN (1) CN112925741B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108734285A (zh) * 2017-04-24 2018-11-02 英特尔公司 神经网络的计算优化
CN108764466A (zh) * 2018-03-07 2018-11-06 东南大学 基于现场可编程门阵列的卷积神经网络硬件及其加速方法
CN110991632A (zh) * 2019-11-29 2020-04-10 电子科技大学 一种基于fpga的异构神经网络计算加速器设计方法
CN111260553A (zh) * 2020-01-13 2020-06-09 哈尔滨工程大学 一种基于远距离无损视频传输的国产视觉计算系统
CN111488051A (zh) * 2020-03-06 2020-08-04 复旦大学 基于cpu和fpga协同计算的云端深度神经网络优化方法
CN111626403A (zh) * 2020-05-14 2020-09-04 北京航空航天大学 一种基于cpu-fpga内存共享的卷积神经网络加速器
WO2020240113A1 (fr) * 2019-05-28 2020-12-03 Bull Sas Procede d'implementation d'un accelerateur materiel d'un reseau de neurones

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108734285A (zh) * 2017-04-24 2018-11-02 英特尔公司 神经网络的计算优化
CN108764466A (zh) * 2018-03-07 2018-11-06 东南大学 基于现场可编程门阵列的卷积神经网络硬件及其加速方法
WO2020240113A1 (fr) * 2019-05-28 2020-12-03 Bull Sas Procede d'implementation d'un accelerateur materiel d'un reseau de neurones
CN110991632A (zh) * 2019-11-29 2020-04-10 电子科技大学 一种基于fpga的异构神经网络计算加速器设计方法
CN111260553A (zh) * 2020-01-13 2020-06-09 哈尔滨工程大学 一种基于远距离无损视频传输的国产视觉计算系统
CN111488051A (zh) * 2020-03-06 2020-08-04 复旦大学 基于cpu和fpga协同计算的云端深度神经网络优化方法
CN111626403A (zh) * 2020-05-14 2020-09-04 北京航空航天大学 一种基于cpu-fpga内存共享的卷积神经网络加速器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Yang Li ; Xiaodong Zhao ; Taoran Cheng.Heterogeneous Computing Platform Based on CPU+FPGA and Working Modes.《2016 12th International Conference on Computational Intelligence and Security (CIS)》.2016, *
基于异构SoC卷积神经网络加速器的设计与实现;曾春明;《现代计算机》;20210325;第3-7页 *

Also Published As

Publication number Publication date
CN112925741A (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
Ali et al. RES: Real-time video stream analytics using edge enhanced clouds
CN113849293B (zh) 数据处理方法、装置、系统及计算机可读存储介质
CN110769257A (zh) 智能视频结构化分析装置、方法和系统
CN112925737B (zh) Pci异构系统数据融合方法、系统、设备及存储介质
US20200387539A1 (en) Cascaded video analytics for edge computing
CN113537445B (zh) 一种轨迹预测方法、装置、设备和存储介质
US20200005482A1 (en) Optimized neural network structure
CN108639882B (zh) 基于lstm网络模型的处理芯片与包含其的运算装置
CN113096201B (zh) 嵌入式视频图像深度学习方法、设备及存储介质
CN113283514B (zh) 一种基于深度学习的未知类别分类方法、装置及介质
CN108675071B (zh) 基于人工神经网络处理器的云端协同智能芯片
CN112116636A (zh) 目标分析方法、装置、系统、节点设备及存储介质
CN114554279A (zh) 基于远程分析的触发器响应剪辑提取
EP3930355A1 (en) Object tracking technology based on cognitive representation of a location in space
CN112925741B (zh) 异构计算方法和系统
CN111104611B (zh) 一种数据处理方法、装置、设备及存储介质
CN113438482A (zh) 基于感兴趣区域的视频编码
WO2022165675A1 (zh) 一种手势识别方法、装置、终端设备及可读存储介质
CN113095231B (zh) 基于分类对象的视频识别方法、系统、设备及存储介质
CN113543045B (zh) 处理单元、相关装置和张量运算方法
WO2022261928A1 (zh) 运算加速方法及运算加速器
CN115774800B (zh) 基于numa架构的时变图处理方法、电子设备、介质
US20230327996A1 (en) In-network message aggregation for efficient small message transport
CN114531603B (zh) 一种视频流的图像处理方法、系统及电子设备
CN115529159B (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
CP01 Change in the name or title of a patent holder

Address after: Room 503-3, 398 Jiangsu Road, Changning District, Shanghai 200050

Patentee after: Shanghai Xijing Technology Co.,Ltd.

Address before: Room 503-3, 398 Jiangsu Road, Changning District, Shanghai 200050

Patentee before: SHANGHAI WESTWELL INFORMATION AND TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder