CN110119311A - 一种基于fpga的分布式流计算系统加速方法 - Google Patents

一种基于fpga的分布式流计算系统加速方法 Download PDF

Info

Publication number
CN110119311A
CN110119311A CN201910297011.3A CN201910297011A CN110119311A CN 110119311 A CN110119311 A CN 110119311A CN 201910297011 A CN201910297011 A CN 201910297011A CN 110119311 A CN110119311 A CN 110119311A
Authority
CN
China
Prior art keywords
task
fpga
node
total amount
stream
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.)
Granted
Application number
CN201910297011.3A
Other languages
English (en)
Other versions
CN110119311B (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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201910297011.3A priority Critical patent/CN110119311B/zh
Publication of CN110119311A publication Critical patent/CN110119311A/zh
Priority to US16/752,870 priority patent/US11023285B2/en
Application granted granted Critical
Publication of CN110119311B publication Critical patent/CN110119311B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种基于FPGA的分布式流计算系统加速方法,FPGA设备与CPU模块按照协同计算的方式完成流处理作业的运算处理,分布式流计算系统加速方法至少包括如下步骤:按照将所述FPGA设备安装至从节点的方式构建具有主节点的基于FPGA的分布式流计算系统;将流处理作业程序划分为适合所述FPGA设备执行的第一任务和适合所述CPU模块执行的第二任务;在所述流处理作业程序按照配置能够在所述FPGA设备上编译执行的内核程序文件或内核程序文件上传的文件路径的方式提交至所述主节点的情况下,所述主节点按照对所述流处理作业程序进行预处理的方式对资源进行分配和调度。

Description

一种基于FPGA的分布式流计算系统加速方法
技术领域
本发明属于分布式流计算领域,尤其涉及一种基于FPGA的分布式流计算系统加速方法。
背景技术
当前,大数据的发展已经呈现白热化状态,数据的爆炸性增长,数据类型的多样化、数据产生速度的不断增长都对数据处理提出了越来越高的要求。实时购物推荐、社交数据实时分析、站点日志处理、智能电网的实时数据处理等很多应用都要求数据处理的实时性,流计算的技术就由此发展而来,成为当前研究的热点。越来越多流式数据计算平台涌现出来,它们依托实时处理相关技术,逐步成为了企业界和研究界重要的在线分析和处理工具。
衡量数据流计算系统最重要的两个性能指标就是延迟和吞吐量,不同的流式处理平台都面临着如何提高这两项指标或者说如何兼顾这两项指标的挑战。现如今摩尔定律已近暮年,“免费的午餐”时代已经快要结束,不得不寻找其他方式来提高计算的速度,采用处理器加速技术为这一挑战带来了新的曙光。
GPU和FPGA是目前两种主流的处理器加速技术,其中FPGA加速部件具有能效比和绝对性能方面的优势。近年来,随着半导体工艺技术的发展, FPGA芯片的容量和运行频率得到了大幅度提高。同时,面向FPGA加速技术的可重构计算研究领域在体系结构和编程技术方面也取得了突破性成果, FPGA加速技术在学术和工业界的推广和应用也呈现出不断加速的趋势。 Intel OpenCL SDK for FPGA为FPGA开发提供了一个简明的途径,用户不再需要触碰复杂的硬件细节,只要利用OpenCL框架和一定的C语言知识,便能快速写出加速的应用。与此同时,FPGA加速技术也广泛用于各大数据中心的试验,取得了良好的效果。例如,公开号为CN108776649A的专利文献公开了一种基于CPU+FPGA异构计算系统及其加速方法,采用多个FPGA 加速单元协同CPU主控单元完成同一计算任务;CPU主控单元负责逻辑判断、管理控制,对FPGA加速单元进行计算任务分配;FPGA加速单元负责对计算任务进行加速;FPGA加速单元内部划分为静态区域:负责实现PCIe DMA通信、SRIO通信、DDR控制;以及动态可重构区域:执行CPU主控单元下发的kernel函数,对计算任务进行加速。该发明针对不同的任务类型,实现对计算任务的并行加速处理与流水加速处理,能够大幅提升任务处理的吞吐率,缩短任务执行时间,极大提高计算机的计算性能。
因此,利用FPGA来加速流计算系统或者平台是一个值得探索的领域, FPGA优秀的并行性和能耗比结合流计算系统,有望解决系统性能瓶颈,提升系统性能。因此如何将FPGA引入流计算系统并加以利用是当前研究的一个主题,本发明旨在提供一种将FPGA设备应用到例如是Storm的分布式流计算系统中以解决系统瓶颈的加速方法。
发明内容
如本文所用的词语“模块”描述任一种硬件、软件或软硬件组合,其能够执行与“模块”相关联的功能。
针对现有技术之不足,本发明提供一种基于FPGA的分布式流计算系统加速方法,FPGA设备与CPU模块按照协同计算的方式完成流处理作业的运算处理,所述分布式流计算系统加速方法至少包括如下步骤:按照将所述 FPGA设备安装至从节点的方式构建具有主节点的基于FPGA的分布式流计算系统;将流处理作业程序划分为适合所述FPGA设备执行的第一任务和适合所述CPU模块执行的第二任务;在所述流处理作业程序按照配置能够在所述FPGA设备上编译执行的内核程序文件或内核程序文件上传的文件路径的方式提交至所述主节点的情况下,所述主节点按照对所述流处理作业程序进行预处理的方式对资源进行分配和调度。
根据一种优选实施方式,主节点至少按照如下步骤对资源进行分配和调度:获取系统集群中待调度的所有流处理作业并对每一流处理作业至少执行添加系统组件、添加数据统计组件并执行标准化处理以完成所述预处理;获得第一任务的第一总量、第二任务的第二总量以及处于空闲状态的FPGA设备的第三总量;在所述第三总量小于等于零的情况下,将所有的流处理作业均调度至CPU模块中执行,在所述第三总量大于零且所述第一总量小于所述第三总量的情况下,将所述第一任务调度至FPGA设备中执行,并将所述第二任务调度至CPU模块中执行,或者在所述第三总量大于零且所述第一总量大于所述第三总量的情况下,基于所述第三总量将所述第一任务划分为第一子任务和第二子任务,其中,第一子任务调度至FPGA设备中执行,所述第二子任务按照转化为所述第二任务的方式传输至所述CPU模块中执行。
根据一种优选实施方式,主节点对资源进行分配和调度还包括如下步骤:在流处理作业程序包含所述第一任务并且内核程序文件或内核程序文件上传的文件路径均提交至所述主节点的情况下,将所述流处理作业程序判定为合法并对其进行调度。
根据一种优选实施方式,所述预处理至少包括如下步骤:在拓扑中包含需要第一任务运行的特殊组件并且为所述特殊组件配置所述FPGA设备能够执行的内核函数名称的情况下,基于用户在提交拓扑时的并行度设置和组件类型的选择将拓扑中的每一个组件均实例化为相应数量的第一任务的执行器或第二任务的执行器。
根据一种优选实施方式,CPU模块中至少设置有第一作业执行器、第二作业执行器和第三作业执行器,所述FPGA设备和所述CPU模块按照如下步骤对所述流处理作业进行协同计算:所述第一作业执行器配置为接收上游的传输的若干条数据,按照流水线的方式对数据进行逐一处理,并将处理结果通过线程发送至下游的第二作业执行器;所述第二作业执行器配置为接收第一作业执行器传输的处理结果并将其缓存至其自带的内存中,在缓存的数据量达到设定阈值的情况下,将缓存的所有数据通过接口发送至FPGA设备;第三作业执行器配置为根据预先设定的数据依赖关系接收第二作业执行器传输过来的处理结果,并对其进行后续的计算处理。
根据一种优选实施方式,所述分布式流计算系统加速方法至少包括如下步骤:主节点在进行流处理作业的调度时,基于集群的运行时环境获取每个从节点对应的空闲资源量信息,将需要调度的任务分配至当前具有最多空闲资源的从节点。
根据一种优选实施方式,所述基于FPGA的分布式计算系统的构建至少包括如下步骤:基于接口连接的方式将FPGA设备安装在从节点上,在从节点上为FPGA设备配置软件开发工具包以形成统一的编程环境,并建立主机端;在每个从节点上启动能够对分配至硬件设备的计算任务进行监听的监听进程,并通过编程接口将其连接至主机端;从节点上运行的监听进程通过所述编程接口向主机端发送请求以获取FPGA资源状态信息,并且所述监听进程基于所述FPGA资源状态信息构建心跳信息并将其定时同步至集群的运行时环境中;所述主节点获取所述心跳信息以对流处理作业进行调度。
根据一种优选实施方式,将流处理作业程序划分为所述第一任务和所述第二任务至少包括如下步骤:构建具有若干个数据处理节点的有向无环图,将每一个数据处理节点实现为至少一个计算模型;基于计算模型的计算密集程度或数据处理量将所述计算模型实现为所述第一任务。
本发明还提供一种基于FPGA的分布式流计算系统,FPGA设备与CPU 模块按照协同计算的方式完成流处理作业的运算处理,所述基于FPGA的分布式流计算系统具有主节点并按照将所述FPGA设备安装至从节点的方式构建,其配置为:将流处理作业程序划分为适合所述FPGA设备执行的第一任务和适合所述CPU模块执行的第二任务;在所述流处理作业程序按照配置能够在所述FPGA设备上编译执行的内核程序文件或内核程序文件上传的文件路径的方式提交至所述主节点的情况下,所述主节点按照对所述流处理作业程序进行预处理并结合集群中的资源状态的方式对作业进行调度。
根据一种优选实施方式,所述主节点至少按照如下步骤对资源进行分配和调度:获取系统集群中待调度的所有流处理作业并对每一流处理作业至少执行添加系统组件、添加数据统计组件并执行标准化处理以完成所述预处理;获得第一任务的第一总量、第二任务的第二总量以及处于空闲状态的 FPGA设备的第三总量;在所述第三总量小于等于零的情况下,将所有的流处理作业均调度至CPU模块中执行,在所述第三总量大于零且所述第一总量小于所述第三总量的情况下,将所述第一任务调度至FPGA设备中执行,并将所述第二任务调度至CPU模块中执行,或者在所述第三总量大于零且所述第一总量大于所述第三总量的情况下,基于所述第三总量将所述第一任务划分为第一子任务和第二子任务,其中,第一子任务调度至FPGA设备中执行,所述第二子任务按照转化为所述第二任务的方式传输至所述CPU模块中执行。
本发明的有益技术效果:
(1)本发明通过利用FPGA设备优秀的硬件并行能力和能耗比,将其引入到分布式流计算系统中参与调度和计算,将计算密集型任务或者数据负载大的任务卸载到FPGA上去执行,从而提高系统吞吐量,降低系统延迟,提高整个流计算系统的性能。
(2)本发明采用OpenCL框架来开发FPGA程序,避免了用户在提交作业时触碰复杂的硬件细节,用户只需要提供简单的基于C的kernel程序就可以实现在FPGA上执行任务。
(3)本发明只需要针对分布式流计算系统作修改以及实现OpenCL Host服务端程序,对于用户程序是半透明的,用户只需要按照原来的方式构建拓扑,只需要额外提供一个内核程序即可。
附图说明
图1是本发明优选的基于FPGA的分布式流计算系统集群的结构示意图;
图2是本发明优选的分布式流计算系统加速方法的流程示意图;
图3是本发明优选的FPGA设备环境与分布式流计算系统环境进行集成的流程示意图;
图4是本发明优选的用户流处理作业提交的流程示意图;
图5是本发明优选的有向无环图的示意图;
图6是本发明优选的主节点进行混合调度的流程示意图;
图7是本发明优选的FPGA设备与CPU模块进行协同计算的流程示意图;和
图8是本发明优选的主节点对从节点的负载进行均衡处理的流程示意图。
附图标记列表
1:主节点 2:从节点 3:CPU模块
4:硬件模块 5:编程接口 6:第一作业执行器
7:第二作业执行器 8:第三作业执行器
301:虚拟机 302:主机端
401:FPGA设备
具体实施方式
为了便于理解,将本发明的关键技术用语进行如下解释:
分布式流计算系统(Distributed Stream Processing System):分布式的、高容错的实时计算系统,能够用于处理源源不断的数据。其采用时间流的形式,多个输入和处理组件构成了一个处理网络,将中间的处理结果都存储在内存中,保证了数据处理的时效性,能够有效地应对大数据的实时分析需求。
主节点(Master Node):用于分配任务和监测故障。
从节点(Slave Node):用于启动或停止工作进程。
拓扑(Topologies):将实时处理程序进行打包后形成的逻辑。
运行时环境(Runtime):系统运行时、应用程序运行时的集群环境。
心跳信息(Heartbeat):集群中从节点定时向Zookeeper发送的一种元数据,用于主节点对集群中的从节点的信息进行同步,以及检查从节点是否正常运行。
流处理作业程序(Stream Applications):用户提交的流数据处理应用程序,分布式流处理系统接收作业提交以后进行处理并执行。
内核程序文件(Kernel file):一个OpenCL语言编写的后缀为.cl的文件,里面包含了多个以__kernel开头的多个函数,每一个函数对应于一个拓扑中的计算组件,运行在FPGA上的加速器上。
数据依赖关系(Data Dependency):拓扑中多个不同的组件它们之间的数据流动关系。
下面结合附图进行详细说明。
实施例1
如图1所示,本发明提供一种基于FPGA的分布式流计算系统,其通过将FPGA设备与分布式流计算系统进行集成而完成。基于FPGA的分布式流计算系统至少包括至少一个主节点1和若干个从节点2。例如,在分布式流计算系统Storm中,主节点1上配置有运行在虚拟机上的后台程序Nimbus。从节点2上配置有若干个运行在虚拟机上的Supervisor进程。通过主节点1 可以接收用户提交的拓扑、对代码进行分发并且将对计算任务进行分配。从节点2中运行的Supervisor进程能够对分配至硬件设备的计算任务进行监听并且能够根据需求启动或关闭进程。Storm是一个分布式的实时流式计算框架,其采用时间流的形式,多个输入和处理组件构成了一个处理网络,将中间的处理结果都存储在内存中,保证了数据处理的时效性,能够有效地应对大数据的实时分析需求。
优选的,每一个从节点2上均架构有CPU模块3和硬件模块4。CPU 模块3至少包括虚拟机301和主机端302。虚拟机301用于运行Supervisor 进程。虚拟机301通过编程接口5与主机端302通信连接。例如,编程接口5可以是socket,从而使得虚拟机和主机端之间能够进行数据交换。硬件模块4至少包括若干个FPGA设备401。硬件模块4与CPU模块3之间通过PCI-E接口6进行通信连接,进而使得虚拟机301上运行Supervisor进程能够间接获取FPGA资源信息。例如,FPGA资源信息可以包括FPGA设备的数量、每一个FPGA设备的状态、FPGA设备能够支持的最大工作项数以及全局存储器的内存大小。优选的,FPGA资源信息能够通过心跳而定时更新至分布式流计算系统集群的运行时环境中。当主节点1在进行任务调度时,其能够获取FPGA资源信息以根据该信息对任务进行调度。例如,可以将适合FPGA设备401运行计算的第一任务调度至具有FPGA设备的从节点 2中去处理。从节点2在获得第一任务后通过主机端302启动其对应的FPGA 设备401。具体的,主机端302在接收到虚拟机301传输的数据后便将数据再次传输至FPGA设备401中进行处理。FPGA设备处理完成的结果回传至主机端302,随后通过主机端302传输至虚拟机301上的相关线程中以便下一个任务进行处理。本发明通过将FPGA设备引入到分布式流计算系统中来与CPU进行协同计算,将适合FPGA设备计算的任务卸载到FPGA设备中进行完成,能够降低该瓶颈任务的计算延迟并且能够提高吞吐量,从而降低整个任务的处理延迟和提高整个任务处理吞吐量,提高分布式流计算系统的性能。
优选的,在流处理作业程序包含第一任务并且内核程序文件或内核程序文件上传的文件路径均提交至主节点的情况下,将流处理作业程序判定为合法并对其进行调度,并且主节点在进行流处理作业的调度时,基于集群的运行时环境获取每个从节点对应的空闲资源量信息,将需要调度的任务分配至当前具有最多空闲资源的从节点。
实施例2
本实施例是对实施例1的进一步改进,重复的内容不再赘述。
如图2所示,本发明还提供一种基于FPGA的分布式流计算系统加速方法,至少包括如下步骤:
S1:完成FPGA环境与分布式流计算系统的环境的集成以限定基于FPGA 的分布式流计算系统。
优选的,多个FPGA设备401安装在分布式流计算系统集群的从节点2 上。为每一个从节点2配置统一的编程环境,并建立能够获取当前从节点上的FPGA设备401的信息的主机端302。例如,可以将多个FPGA设备401 安装在现有的分布式流计算系统Storm的从节点上,并为从节点安装配置 OpenCL以形成统一的编程环境。建立OpenCL Host服务端以使得其能够利用各种API函数获取当前物理节点上的FPGA设备的信息,从而通过将FPGA 设备与分布式流计算系统进行集成便能够得到本发明的基于FPGA的分布式流计算系统。分布式流计算系统中的虚拟机301能够与主机端302进行交互以获取节点的FPGA资源信息,并将其按照定时更新的方式保存至集群运行时环境中。具体的,如图3所示,以分布式流计算系统Storm为例,FPGA 环境与分布式流计算系统Storm的环境的集成步骤至少包括:
A1:基于接口连接的方式将FPGA设备安装在分布式流计算系统集群的从节点上。例如可以通过PCI-E接口对FPGA设备进行安装。
A2:在从节点上为FPGA设备配置软件开发工具包以形成统一的编程环境,并建立主机端。软件开发工具包可以是Intel Opencl SDK。主机端可以是OpenCL Host服务端。
A3:在每个从节点上启动能够对分配至硬件设备的计算任务进行监听的监听进程,并通过编程接口将其连接至主机端。例如,针对Storm系统,每个从节点上可以运行Supervisor进程以对分配至硬件设备的计算任务进行监听。Supervisor进程可以通过socket连接至OpenCL Host服务端。
A4:从节点上运行的监听进程通过编程接口向主机端发送请求以获取节点上的FPGA资源状态信息。
A5:主机端获取FPGA资源状态信息并将其反馈至监听进程。例如,主机端可以通过API函数获取FPGA资源状态信息。
A6:监听进程基于反馈的FPGA资源状态信息构建心跳信息并将其定时同步到集群的运行时环境中。运行时环境是指系统运行时、应用程序运行时的集群环境。
A7:主节点获取心跳信息以对作业进行调度。
S2:用户提交作业程序并判断用户提交的作业程序是否合法,在作业程序合法的情况下,主节点对作业进行混合调度。
优选的,基于FPGA设备的引入而构建的异构资源,使得用户的流处理作业的构建需要进行相应调整。即在用户使用编程接口5编写流处理程序时,用户需要根据作业处理逻辑中不同计算模块的特征,将计算逻辑实现为适合在FPGA设备上执行的第一任务和适合在CPU模块上执行的第二任务。同时,用户需要将能够在FPGA设备进行编译并执行的内核程序与流处理作业程序一并提交。内核程序可以是OpenCL kernel程序。用户提交后由系统作进一步检验进而提交给主节点进行调度。具体的,如图4所示,用户提交作业程序至少包括如下步骤:
B1:用户基于作业中各个部分的计算特点将作业划分为第一任务和第二任务。具体的,用户在采用编程接口编写流处理作业程序时,能够构建至少一个数据处理的有向无环图,有向无环图中能够包含若干个不同的数据处理节点,每一个数据处理节点代表一个计算模型,使得能够根据各个数据处理节点的特征将计算逻辑简单的计算模块实现为适合在CPU模块上执行的第二任务,并且将计算密集型或者数据处理量大的计算模块实现为适合在 FPGA设备上的第一任务。同时可以根据有向无环图的节点之间的联系,通过编程实现各个任务之间的数据传递关系。例如,如图5所示,矩阵乘作业的有向无环图包含了三个不同的数据处理节点,MG是一个数据源节点,它负责不断产生包含有两个矩阵的元组,并将其发送至下游的MM数据处理节点。MM负责订阅并接收上游MG发送过来的元组,计算元组中两个矩阵的乘积,并将其作为一个元组发送给下游的RW节点。RW节点负责订阅MM 发送的元组并将其中包含的结果矩阵写入文件。上述三个数据处理节点中, MM是一个计算密集型的计算模块,因此用户可以在提交作业时将其划分为第一任务,并将MG和RW两个计算节点划分为第二任务。
B2:为用户提交的作业配置能够在FPGA设备上编译执行的内核程序文件或内核程序文件上传的文件路径,并将其与流处理作业程序一并提交。具体的,内核程序文件是针对一个作业中所有的第一任务开发的在FPGA上执行的内核函数集,每一个内核函数代表了一个计算模块。用户对内核程序的开发重点关注如何高效地实现计算逻辑,使其充分利用FPGA的并行性,从而得到更大的性能提升。FPGA的开发方式有利用硬件描述语言例如Verilog 或者VHDL开发,这类开发对硬件知识要求很高,成为了广大开发人员使用 FPGA的阻碍,而现有的高层次的语言开发例如C/C++/OpenCL不仅仅需要用户处理计算内核的实现细节,还需要处理FPGA设备的管理、内核在FPGA 设备上的启动以及输入输出数据的传输等控制细节,整个开发过程比较繁琐。采用本发明提交的FPGA内核程序只需要用户利用OpenCL为每一个第一任务开发类C的内核函数,只需要关注计算逻辑的实现,其能够为用户隐藏FPGA加速器管理、数据传输等控制细节,为用户省略了大量的代码,降低了用户使用FPGA加速器的门槛。
B3:对流处理作业程序进行合法性检验,其中,在流处理作业程序包含第一任务的情况下,判断是否同时提交内核程序文件或是否设置内核程序文件上传的文件路径。在未提交内核程序文件并且未设置内核程序文件的上传的文件路径的情况下,将用户提交的作业程序判定为不合法。只有判断为合法的作业程序能够提交至主节点进行调度。
S3:主节点获取运行时资源状态和负载状态并据此进行资源分配和调度。例如,主节点对提交的作业程序进行预处理分析,并根据资源情况进行不同类型的调度。具体的,如图6所示,主节点进行资源分配和调度至少包括如下步骤:
C1:获取系统集群中待调度的所有流处理作业,对每个流处理作业进行预处理后将其传输至主节点的调度器中进行调度。例如,预处理可以包括对流处理作业添加系统组件和数据统计的组件,并执行标准化处理。具体的,为作业添加系统组件具体表现为提供消息的可靠性保障以及数据统计的组件。通过为作业添加系统组件能够统计拓扑中每一个组件的Metric,包括不同时间段内处理的元组数量,通过它可以计算数据处理延迟以及吞吐量,这两类组件在作业运行时被作为第二任务执行。执行拓扑的标准化处理,其目的是验证拓扑的正确可被调度性,将拓扑中的每一个组件初步转化为相应的第一任务或者第二任务的执行器,为后序的作业调度服务。执行拓扑的标准化处理具体包括以下步骤:D1:查找拓扑中是否包含有需要作为第一任务运行的特殊组件,如果有,检查拓扑是否为这些组件的每一个设置了在FPGA 上执行的内核函数名称以及作业是否伴随提交了合法的内核程序,如果检查通过,则表示拓扑正确且可被调度,如果不通过,则会抛出异常,提示用户提交作业失败。D2:针对拓扑中的每一个组件,根据用户在提交拓扑时的并行度设置和组件类型的选择,实例化为相应数量的第一任务的执行器或者第二任务的执行器,具体地是在每一个生成的执行器上初始化一个第一标记属性,这个标记属性是一个布尔值,为TRUE标记这个执行器初始是第一任务的执行器,为FALSE标志这个执行器初始是第二任务的执行器,这样的标志方便后续的调度器进行调度。除此之外,还为每一个执行器添加另外一个第二标记属性,同样是布尔值类型,标志的是经过调度以后,这个执行器是否是第一任务的执行器,为TRUE表示是,FALSE表示不是,在这一步骤中第二标记属性设置为与第一标记属性的值相同。
C2:计算每个流处理作业中第一任务的第一数量以及第二任务的第二数量,并通过集群的运行时环境获取每个从节点上处于空闲状态的FPGA设备的第三数量。基于流处理作业的总量可以获得第一任务的第一总量以及第二任务的第二总量。基于从节点的总量可以获得空闲状态的FPGA设备的第三总量。
C3:在第三总量小于等于零的情况下,将所有的流处理作业均调度至 CPU模块中执行。具体的,在第三总量小于等于零表明系统中没有处于空闲状态的FPGA设备,进而流处理作业中的第一任务需要进行任务转化以调整为第二任务,进而传输至CPU模块的作业执行器中进行执行。流处理作业中原有的第二任务则调度至CPU模块中进行执行。任务转化主要调整对步骤D2中生成的第一任务或者第二任务的执行器的第二标记属性值进行修改。优选的,第一任务与第二任务能够按照如下步骤完成相互转化:将需要转化为第二任务的第一任务的执行器的第二标记属性值由TRUE修改为FALSE;在每一个从节点上的Supervisor进程接收到主节点分配的任务时, Supervisor进程能根据分配的任务所对应的任务执行器的第二标记属性,来启动对应的执行器去执行第一任务或者第二任务。
C4:在第三总量大于零且第一总量小于第三总量的情况下,将第一任务调度至FPGA设备中进行执行,并将第二任务调度至CPU模块的作业执行器中执行。第一总量小于第三总量表明系统中存在足够多的处于空闲状态的 FPGA设备,进而可以将第一任务均调度至FPGA设备中进行执行。
C5:在第三总量大于零且第一总量大于第三总量的情况下,基于第三总量将第一任务划分为第一子任务和第二子任务,第一子任务调度至FPGA设备中进行执行,第二子任务进行任务转化以调整为第二任务并传输至CPU 模块的作业执行器中进行执行。第一总量大于第三总量表示处于空闲状态的 FPGA设备的数量不足以完成所有第一任务的执行。因此需要根据第三总量按照最大化的原则将第一任务划分为第一子任务和第二子任务。即第一子任务的总量可以与第三总量匹配,从而能够最大程度地利用FPGA设备的计算资源。
S4:CPU模块和FPGA设备按照协同计算的方式对流处理作业进行运算处理。例如,用户提交的流处理作业经过主节点的调度后以第一任务和第二任务的形式在集群中运行,数据则在第一任务和第二任务之间进行流动。优选的,第一任务和第二任务彼此之间存在数据依赖关系,第一任务和第二任务彼此之间通过线程和队列协作的方式发送数据和接收数据。即上游的第二任务处理过的数据传输至上游的第一任务进行处理,随后再传输至下游的第二任务进行处理。具体的,如图7所示,CPU模块中至少设置有第一作业执行器6、第二作业执行器7和第三作业执行器8。CPU模块和FPGA设备对流处理作业进行协同计算至少包括如下步骤:
E1:第一作业执行器6配置为接收上游的传输的若干条数据,按照流水线的方式对数据进行逐一处理,并将处理结果通过线程发送至下游的第二作业执行器7。
E2:第二作业执行器7配置为接收第一作业执行器6传输的处理结果并将其缓存至其自带的内存中,在缓存的数据量达到设定阈值的情况下,将缓存的所有数据通过接口发送至FPGA设备。FPGA设备配置为将计算完成的处理结果按照流水线式的方式经第二作业执行器7传输至其下游的第三作业执行器8。
E3:第三作业执行器8配置为根据预先设定的数据依赖关系接收第二作业执行器7传输过来的处理结果,并对其进行后续的计算处理。数据依赖关系是在用户构建拓扑的时候建立的,它定义了作业拓扑中每一个非数据源的计算组件它的输入数据的来源,例如在图5中,MM的输入数据来源就是 MG组件,RW计算组件消费的数据就是MM计算输出的。
S5:主节点依据从节点上的空闲资源数量将流处理作业的任务分配至各个从节点,使得各个从节点彼此之间的负载尽量处于比较均衡的状态。
具体的,如图8所示,主节点按照如下步骤对从节点的负载进行均衡处理:
F1:主节点在进行流处理作业的调度时,基于集群的运行时环境获取每个从节点对应的空闲资源量信息。
F2:对于每一个需要调度的任务,获取从节点中拥有空闲资源最多的那一个,将这个任务分配至那个节点,然后将该从节点的空闲资源数量减1。
F3:对流处理作业的任务集中的每一个任务执行步骤F2。
实施例3
本实施例是对前述实施例的进一步改进,重复的内容不再赘述。
本发明还提供一种用户提交作业程序的方法,至少包括如下步骤:用户基于作业中各个部分的计算特点将作业划分为第一任务和第二任务;为用户提交的作业配置能够在FPGA设备上编译执行的内核程序文件或内核程序文件上传的文件路径,并将其与流处理作业程序一并提交;对流处理作业程序进行合法性检验,其中,在流处理作业程序包含第一任务的情况下,判断是否同时提交内核程序文件或是否设置内核程序文件上传的文件路径,在未提交内核程序文件并且未设置内核程序文件的上传的文件路径的情况下,将用户提交的作业程序判定为不合法,只有判断为合法的作业程序能够提交至主节点进行调度。
需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。

Claims (10)

1.一种基于FPGA的分布式流计算系统加速方法,FPGA设备(401)与CPU模块(3)按照协同计算的方式完成流处理作业的运算处理,其特征在于,所述分布式流计算系统加速方法至少包括如下步骤:
按照将所述FPGA设备(401)安装至从节点(2)的方式构建具有主节点(1)的基于FPGA的分布式流计算系统;
将流处理作业程序划分为适合所述FPGA设备(401)执行的第一任务和适合所述CPU模块(3)执行的第二任务;
在所述流处理作业程序按照配置能够在所述FPGA设备(401)上编译执行的内核程序文件或内核程序文件上传的文件路径的方式提交至所述主节点(1)的情况下,所述主节点(1)按照对所述流处理作业程序进行预处理的方式对资源进行分配和调度。
2.根据权利要求1所述的分布式流计算系统加速方法,其特征在于,主节点(1)至少按照如下步骤对资源进行分配和调度:
获取系统集群中待调度的所有流处理作业并对每一流处理作业至少执行添加系统组件、添加数据统计组件并执行标准化处理以完成所述预处理;
获得第一任务的第一总量、第二任务的第二总量以及处于空闲状态的FPGA设备(401)的第三总量;
在所述第三总量小于等于零的情况下,将所有的流处理作业均调度至CPU模块(3)中执行,在所述第三总量大于零且所述第一总量小于所述第三总量的情况下,将所述第一任务调度至FPGA设备(401)中执行,并将所述第二任务调度至CPU模块(3)中执行,或者
在所述第三总量大于零且所述第一总量大于所述第三总量的情况下,基于所述第三总量将所述第一任务划分为第一子任务和第二子任务,其中,第一子任务调度至FPGA设备(401)中执行,所述第二子任务按照转化为所述第二任务的方式传输至所述CPU模块(3)中执行。
3.根据权利要求2所述的分布式流计算系统加速方法,其特征在于,主节点(1)对资源进行分配和调度还包括如下步骤:
在流处理作业程序包含所述第一任务并且内核程序文件或内核程序文件上传的文件路径均提交至所述主节点(1)的情况下,将所述流处理作业程序判定为合法并对其进行调度。
4.根据权利要求3所述的分布式流计算系统加速方法,其特征在于,所述预处理至少包括如下步骤:
在拓扑中包含需要第一任务运行的特殊组件并且为所述特殊组件配置所述FPGA设备(401)能够执行的内核函数名称的情况下,基于用户在提交拓扑时的并行度设置和组件类型的选择将拓扑中的每一个组件均实例化为相应数量的第一任务的执行器或第二任务的执行器。
5.根据权利要求4所述的分布式流计算系统加速方法,其特征在于,CPU模块(3)中至少设置有第一作业执行器(6)、第二作业执行器(7)和第三作业执行器(8),所述FPGA设备(401)和所述CPU模块(3)按照如下步骤对所述流处理作业进行协同计算:
所述第一作业执行器(6)配置为接收上游传输的若干条数据,按照流水线的方式对数据进行逐一处理,并将处理结果通过线程发送至下游的第二作业执行器(7);
所述第二作业执行器(7)配置为接收第一作业执行器(6)传输的处理结果并将其缓存至其自带的内存中,在缓存的数据量达到设定阈值的情况下,将缓存的所有数据通过接口发送至FPGA设备(401);
第三作业执行器(8)配置为根据预先设定的数据依赖关系接收第二作业执行器(7)传输过来的处理结果,并对其进行后续的计算处理。
6.根据权利要求4所述的分布式流计算系统加速方法,其特征在于,所述分布式流计算系统加速方法至少包括如下步骤:
主节点(1)在进行流处理作业的调度时,基于集群的运行时环境获取每个从节点(2)对应的空闲资源量信息,将需要调度的任务分配至当前具有最多空闲资源的从节点(2)。
7.根据权利要求6所述的分布式流计算系统加速方法,其特征在于,所述基于FPGA的分布式计算系统的构建至少包括如下步骤:
基于接口连接的方式将FPGA设备(401)安装在从节点(2)上,在从节点上为FPGA设备(401)配置软件开发工具包以形成统一的编程环境,并建立主机端(302);
在每个从节点(2)上启动能够对分配至硬件设备的计算任务进行监听的监听进程,并通过编程接口(5)将其连接至主机端(302);
从节点上(2)运行的监听进程通过所述编程接口(5)向主机端(302)发送请求以获取FPGA资源状态信息,并且所述监听进程基于所述FPGA资源状态信息构建心跳信息并将其定时同步至集群的运行时环境中;
所述主节点(1)获取所述心跳信息以对流处理作业进行调度。
8.根据权利要求7所述的分布式流计算系统加速方法,其特征在于,将流处理作业程序划分为所述第一任务和所述第二任务至少包括如下步骤:
构建具有若干个数据处理节点的有向无环图,将每一个数据处理节点实现为至少一个计算模型;
基于计算模型的计算密集程度或数据处理量将所述计算模型实现为所述第一任务。
9.一种基于FPGA的分布式流计算系统,FPGA设备(401)与CPU模块(3)按照协同计算的方式完成流处理作业的运算处理,其特征在于,所述基于FPGA的分布式流计算系统具有主节点(1)并按照将所述FPGA设备(401)安装至从节点(2)的方式构建,其配置为:
将流处理作业程序划分为适合所述FPGA设备(401)执行的第一任务和适合所述CPU模块(3)执行的第二任务;在所述流处理作业程序按照配置能够在所述FPGA设备(401)上编译执行的内核程序文件或内核程序文件上传的文件路径的方式提交至所述主节点(1)的情况下,所述主节点(1)按照对所述流处理作业程序进行预处理并结合集群中的资源状态的方式对作业进行调度。
10.根据权利要求9所述的分布式流计算系统,其特征在于,所述主节点(1)至少按照如下步骤对资源进行分配和调度:
获取系统集群中待调度的所有流处理作业并对每一流处理作业至少执行添加系统组件、添加数据统计组件并执行标准化处理以完成所述预处理;
获得第一任务的第一总量、第二任务的第二总量以及处于空闲状态的FPGA设备(401)的第三总量;
在所述第三总量小于等于零的情况下,将所有的流处理作业均调度至CPU模块(3)中执行,在所述第三总量大于零且所述第一总量小于所述第三总量的情况下,将所述第一任务调度至FPGA设备(401)中执行,并将所述第二任务调度至CPU模块(3)中执行,或者
在所述第三总量大于零且所述第一总量大于所述第三总量的情况下,基于所述第三总量将所述第一任务划分为第一子任务和第二子任务,其中,第一子任务调度至FPGA设备(401)中执行,所述第二子任务按照转化为所述第二任务的方式传输至所述CPU模块(3)中执行。
CN201910297011.3A 2019-04-12 2019-04-12 一种基于fpga的分布式流计算系统加速方法 Active CN110119311B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910297011.3A CN110119311B (zh) 2019-04-12 2019-04-12 一种基于fpga的分布式流计算系统加速方法
US16/752,870 US11023285B2 (en) 2019-04-12 2020-01-27 Acceleration method for FPGA-based distributed stream processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910297011.3A CN110119311B (zh) 2019-04-12 2019-04-12 一种基于fpga的分布式流计算系统加速方法

Publications (2)

Publication Number Publication Date
CN110119311A true CN110119311A (zh) 2019-08-13
CN110119311B CN110119311B (zh) 2022-01-04

Family

ID=67520901

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910297011.3A Active CN110119311B (zh) 2019-04-12 2019-04-12 一种基于fpga的分布式流计算系统加速方法

Country Status (2)

Country Link
US (1) US11023285B2 (zh)
CN (1) CN110119311B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831330A (zh) * 2020-07-10 2020-10-27 深圳致星科技有限公司 用于联邦学习的异构计算系统设备交互方案
CN112347721A (zh) * 2020-10-29 2021-02-09 北京长焜科技有限公司 基于fpga实现数据处理加速的系统及其加速方法
CN112860422A (zh) * 2019-11-28 2021-05-28 伊姆西Ip控股有限责任公司 用于作业处理的方法、设备和计算机程序产品
CN117149442A (zh) * 2023-10-30 2023-12-01 山东浪潮数据库技术有限公司 一种基于分布式架构数据库的硬件加速方法及系统

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110618871B (zh) * 2019-09-21 2022-07-22 苏州浪潮智能科技有限公司 一种fpga云平台加速资源的分配方法与系统
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11237880B1 (en) 2020-12-18 2022-02-01 SambaNova Systems, Inc. Dataflow all-reduce for reconfigurable processor systems
US11392740B2 (en) 2020-12-18 2022-07-19 SambaNova Systems, Inc. Dataflow function offload to reconfigurable processors
US11182221B1 (en) 2020-12-18 2021-11-23 SambaNova Systems, Inc. Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS)
CN112685159B (zh) * 2020-12-30 2022-11-29 深圳致星科技有限公司 基于fpga异构处理系统的联邦学习计算任务处理方案
US11782760B2 (en) 2021-02-25 2023-10-10 SambaNova Systems, Inc. Time-multiplexed use of reconfigurable hardware
US11200096B1 (en) 2021-03-26 2021-12-14 SambaNova Systems, Inc. Resource allocation for reconfigurable processors
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures
CN113220369B (zh) * 2021-05-27 2022-12-23 北京师范大学珠海校区 一种基于分布式机器学习的智能计算卸载优化方法
CN113377591B (zh) * 2021-06-18 2022-05-13 杭州加速科技有限公司 一种提升ate设备芯片测试速度的方法、装置
CN116467245A (zh) * 2022-01-12 2023-07-21 华为技术有限公司 计算系统、方法、装置及加速设备
CN115237506B (zh) * 2022-09-21 2022-12-09 暨南大学 Cps系统中可靠性驱动的分层任务卸载方法和装置
CN117076140B (zh) * 2023-10-17 2024-01-23 浪潮(北京)电子信息产业有限公司 一种分布式计算方法、装置、设备、系统及可读存储介质
CN117539642B (zh) * 2024-01-09 2024-04-02 上海晨钦信息科技服务有限公司 一种信用卡分布式调度平台及调度方法
CN117707792A (zh) * 2024-02-04 2024-03-15 国网上海能源互联网研究院有限公司 基于fpga加速器的异地并行加速装置、方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106250349A (zh) * 2016-08-08 2016-12-21 浪潮(北京)电子信息产业有限公司 一种高能效异构计算系统
WO2017172220A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga
CN107273331A (zh) * 2017-06-30 2017-10-20 山东超越数控电子有限公司 一种基于cpu+gpu+fpga架构的异构计算系统和方法
CN108776649A (zh) * 2018-06-11 2018-11-09 山东超越数控电子股份有限公司 一种基于cpu+fpga异构计算系统及其加速方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8810584B2 (en) * 2011-09-13 2014-08-19 Nvidia Corporation Smart power management in graphics processing unit (GPU) based cluster computing during predictably occurring idle time
JP5946068B2 (ja) * 2013-12-17 2016-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 演算コア上で複数の演算処理単位が稼働可能なコンピュータ・システムにおける応答性能を評価する計算方法、計算装置、コンピュータ・システムおよびプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017172220A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga
CN106250349A (zh) * 2016-08-08 2016-12-21 浪潮(北京)电子信息产业有限公司 一种高能效异构计算系统
CN107273331A (zh) * 2017-06-30 2017-10-20 山东超越数控电子有限公司 一种基于cpu+gpu+fpga架构的异构计算系统和方法
CN108776649A (zh) * 2018-06-11 2018-11-09 山东超越数控电子股份有限公司 一种基于cpu+fpga异构计算系统及其加速方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李绍松等: ""基于FPGA可扩展的Mapreduce架构设计与实现"", 《计算机技术与发展》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860422A (zh) * 2019-11-28 2021-05-28 伊姆西Ip控股有限责任公司 用于作业处理的方法、设备和计算机程序产品
CN112860422B (zh) * 2019-11-28 2024-04-26 伊姆西Ip控股有限责任公司 用于作业处理的方法、设备和计算机程序产品
CN111831330A (zh) * 2020-07-10 2020-10-27 深圳致星科技有限公司 用于联邦学习的异构计算系统设备交互方案
CN112347721A (zh) * 2020-10-29 2021-02-09 北京长焜科技有限公司 基于fpga实现数据处理加速的系统及其加速方法
CN112347721B (zh) * 2020-10-29 2023-05-26 北京长焜科技有限公司 基于fpga实现数据处理加速的系统及其加速方法
CN117149442A (zh) * 2023-10-30 2023-12-01 山东浪潮数据库技术有限公司 一种基于分布式架构数据库的硬件加速方法及系统
CN117149442B (zh) * 2023-10-30 2024-02-20 山东浪潮数据库技术有限公司 一种基于分布式架构数据库的硬件加速方法及系统

Also Published As

Publication number Publication date
US20200326992A1 (en) 2020-10-15
US11023285B2 (en) 2021-06-01
CN110119311B (zh) 2022-01-04

Similar Documents

Publication Publication Date Title
CN110119311A (zh) 一种基于fpga的分布式流计算系统加速方法
Athlur et al. Varuna: scalable, low-cost training of massive deep learning models
Higashino et al. CEPSim: Modelling and simulation of Complex Event Processing systems in cloud environments
Tang et al. Reliability-aware scheduling strategy for heterogeneous distributed computing systems
CN102360309B (zh) 片上多核异构系统的调度系统与调度执行方法
CN104536937B (zh) 基于cpu‑gpu异构集群的大数据一体机实现方法
CN102929725B (zh) 信号处理并行计算软件的动态重配置方法
CN106339351A (zh) 一种sgd算法优化系统及方法
CN105975261B (zh) 一种面向统一接口调用的运行时系统及运行方法
CN107316124B (zh) 大数据环境下大规模事务型作业调度与处理通用系统
Segal et al. High level programming framework for FPGAs in the data center
Shi et al. Exploiting simultaneous communications to accelerate data parallel distributed deep learning
Hu et al. Minimizing resource consumption cost of DAG applications with reliability requirement on heterogeneous processor systems
Helal et al. Adaptive task aggregation for high-performance sparse solvers on GPUs
Jing et al. MaMR: High-performance MapReduce programming model for material cloud applications
Singh et al. NARMADA: Near-memory horizontal diffusion accelerator for scalable stencil computations
Giorgi et al. Energy efficiency exploration on the zynq ultrascale+
CN102193831A (zh) 一种建立层次化的映射/归约并行编程模型的方法
Zhang et al. Mpipemoe: Memory efficient moe for pre-trained models with adaptive pipeline parallelism
Yang et al. Parameter communication consistency model for large-scale security monitoring based on mobile computing
Fu et al. Streaming@ Twitter.
Sandokji et al. Task scheduling frameworks for heterogeneous computing toward exascale
JP2023544911A (ja) 並列量子コンピューティングのための方法及び装置
Ben Romdhanne et al. Coordinator-master-worker model for efficient large scale network simulation
Orlic et al. Real-time and fault tolerance in distributed control software

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