CN104794095A - 分布式计算处理方法及装置 - Google Patents
分布式计算处理方法及装置 Download PDFInfo
- Publication number
- CN104794095A CN104794095A CN201410020598.0A CN201410020598A CN104794095A CN 104794095 A CN104794095 A CN 104794095A CN 201410020598 A CN201410020598 A CN 201410020598A CN 104794095 A CN104794095 A CN 104794095A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- pipeline
- cluster
- information
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 230000006854 communication Effects 0.000 claims abstract description 123
- 238000010276 construction Methods 0.000 claims abstract description 98
- 238000000034 method Methods 0.000 claims abstract description 80
- 238000004891 communication Methods 0.000 claims description 53
- 238000012545 processing Methods 0.000 claims description 18
- JGPMMRGNQUBGND-UHFFFAOYSA-N idebenone Chemical compound COC1=C(OC)C(=O)C(CCCCCCCCCCO)=C(C)C1=O JGPMMRGNQUBGND-UHFFFAOYSA-N 0.000 claims description 17
- 238000013468 resource allocation Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 abstract description 29
- 230000008569 process Effects 0.000 abstract description 26
- 238000000354 decomposition reaction Methods 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 12
- 230000001419 dependent effect Effects 0.000 description 12
- 101800000089 Movement protein P3N-PIPO Proteins 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000005538 encapsulation Methods 0.000 description 3
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 210000001072 colon Anatomy 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供一种分布式计算处理方法及装置。本发明提供的分布式计算处理方法,包括:读取分布式程序,分布式程序包括节点语法和管道语法;根据分布式程序获取节点构造信息和管道构造信息;根据节点构造信息和管道构造信息将分布式程序的节点分配给集群中执行所述节点的计算机;根据所述节点构造信息和所述管道构造信息将管道通信过程转换成兼容所述管道两端节点的应用程序编程接口API的通信过程;将所述节点编译成对应计算机上的可执行程序,分配到所述对应计算机上执行。本发明实施例解决现有技术中的分布式计算方法,任务分解的过程具有较大的随意性,导致任务分解与集群计算机软硬件配置不匹配的问题,提高了数据传输的效率。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种分布式计算处理方法及装置。
背景技术
随着计算规模的扩大和发展,目前主要以分布式计算应用于大规模、高性能的计算领域,分布式计算是指在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。
目前通常使用的基于消息传递接口(Message Passing Interface,简称为:MPI)的分布式计算方式,即是指把一个需要非常巨大的计算能力才能解决的任务分解成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果;由于分布式计算具有超强的计算能力、高速访存带宽、支持大规模数据级并行程序设计等特点,图形处理器(Graphic Processing Unit,简称为:GPU)已经成为超级计算机和高性能计算(High Performance Computing,简称为:HPC)集群的主流加速器,相应地,需要将被分解的任务分配给集群中可以实现该任务的硬件处理器对应的计算机中。
现有技术中采用的分布式计算方法,任务分解的过程具有较大的随意性,导致任务分解与集群计算机软硬件配置不匹配的问题。
发明内容
本发明实施例提供一种分布式计算处理方法及装置,以解决现有技术中采用的分布式计算方法,任务分解的过程具有较大的随意性,导致任务分解与集群计算机软硬件配置不匹配的问题。
第一方面,本发明实施例提供一种分布式计算处理方法,包括:
读取分布式程序,所述分布式程序包括节点语法和管道语法;
根据所述分布式程序获取节点构造信息和管道构造信息;
根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点分配给集群中执行所述节点的计算机;
根据所述节点构造信息和所述管道构造信息将管道通信过程转换成兼容所述管道两端节点的应用程序编程接口API的通信过程;
将所述节点编译成对应计算机上的可执行程序,分配到所述对应计算机上执行。
在第一方面的第一种可能实现方式中,所述根据所述分布式程序获取节点构造信息和管道构造信息,包括:
从所述分布式程序中识别节点声明语法管道声明语法,查找所述节点声明语法中的声明节点的关键字和所述管道声明语法中声明管道的关键字;
根据所述声明节点的关键字将节点信息添加到节点信息表中以获取节点构造信息;
根据所述节点构造信息对所述节点信息表中两个节点的管道连接进行赋值以获取管道构造信息。
根据第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点分配给集群中执行所述节点的计算机之前,还包括:
获取所述集群中计算机的配置信息;
所述根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点分配给执行所述节点的计算机,包括:
根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点按照硬件资源类型进行分类;
根据所述集群中计算机的配置信息为每台计算机生成相应的分布式程序的模板;
根据所述节点的硬件资源类型将所述节点填写到对应计算机的分布式程序的模板中。
根据第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述获取所述集群中计算机的配置信息,包括:
查询本机的配置信息并存储于集群配置列表中,所述本机为所述集群计算机中的主机;
获取所述集群中其它计算机的配置信息并存储于集群配置列表中;或者,
查询本机的配置信息并存储于集群配置列表中;
向所述集群计算机的主机发送所述本机的配置信息。
根据第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述节点构造信息包括所述节点信息表和节点源代码;则所述根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点按照硬件资源类型进行分类,包括:
根据所述节点信息表、所述节点源代码和所述管道构造信息对所述节点采用资源分配算法按照所需硬件资源类型进行分类。
根据第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述资源分配算法包括:
构建并初始化资源类型列表和资源项目列表,所述资源类型列表包括所述集群中计算机和所述计算机的资源类型,所述资源项目列表包括与所述资源类型列表中所述计算机对应的身份标识符ID、资源数量totalN和可执行节点的资源数量avaN;
选择初始节点并判断所述初始节点对应计算机的资源类型,从所述资源类型列表中选择对应所述计算机的资源项目;
检查所述初始节点对应的资源项目列表中的所述avaN不为0时,将所述资源项目列表中当前ID对应的计算机的内核分配给所述初始节点,并将所述计算机的avaN减1,在所述avaN减至0时开始分配资源项目列表中下一个计算机的资源。
根据第一方面的第二种可能的实现方式,在第六种可能的实现方式中,所述计算机的分布式程序的模板包括使用消息传递接口MPI通信方式或使用套接字Socket通信方式。
根据第一方面的第六种可能的实现方式,在第七种可能的实现方式中,所述根据所述节点构造信息和所述管道构造信息将管道通信过程转换成兼容所述管道两端节点的应用程序编程接口API的通信过程,包括:
根据所述管道两端节点所填写的模板类型和所述集群中计算机的配置信息为所述管道选择对应的通信协议和端口号;
将所述管道通信过程转换成进程间通信过程或网络通信过程。
根据第一方面、第一方面的第一种到第七种可能的实现方式的任意一种,在第八种可能的实现方式中,所述将所述节点编译成对应计算机上的可执行程序之前,还包括:
根据所述节点分配给集群中计算机的位置生成配置文件,所述配置文件用于使得与所述节点对应的可执行程序按照所述配置文件所指示的网络位置执行。
第二方面,本发明实施例提供一种分布式计算处理装置,包括:
读取模块,用于读取分布式程序,所述分布式程序包括节点语法和管道语法;
获取模块,用于根据所述读取模块读取的分布式程序获取节点构造信息和管道构造信息;
分配模块,用于根据所述获取模块获取的节点构造信息和所述管道构造信息将所述分布式程序的节点分配给集群中执行所述节点的计算机;
管道转换模块,用于根据所述获取模块获取的节点构造信息和管道构造信息将管道通信过程转换成兼容所述管道两端节点的应用程序编程接口API的通信过程;
编译执行模块,用于将所述节点编译成对应计算机上的可执行程序,分配到所述对应计算机上执行。
在第二方面的第一种可能实现方式中,所述获取模块,包括:
识别单元,用于从所述分布式程序中识别节点声明语法管道声明语法,查找所述节点声明语法中的声明节点的关键字和所述管道声明语法中声明管道的关键字;
节点获取单元,用于根据所述识别单元识别的声明节点的关键字将节点信息添加到节点信息表中以获取节点构造信息;
管道获取单元,用于根据所述节点获取单元获取的节点构造信息对所述节点信息表中两个节点的管道连接进行赋值以获取管道构造信息。
根据第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:集群收集模块,用于在所述分配模块根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点分配给集群中执行所述节点的计算机之前,获取所述集群中计算机的配置信息;
所述分配模块,包括:
节点分类单元,用于根据所述获取模块获取的节点构造信息和管道构造信息将所述分布式程序的节点按照硬件资源类型进行分类;
模板生成单元,用于根据所述集群收集模块获取的集群中计算机的配置信息为每台计算机生成相应的分布式程序的模板;
节点分配单元,用于根据所述节点的硬件资源类型将所述节点填写到对应计算机的分布式程序的模板中。
根据第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述集群收集模块,具体用于查询本机的配置信息并存储于集群配置列表中,所述本机为所述集群计算机中的主机;并获取所述集群中其它计算机的配置信息并存储于集群配置列表中;或者,查询本机的配置信息并存储于集群配置列表中;并向所述集群计算机的主机发送所述本机的配置信息。
根据第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述节点构造信息包括所述节点信息表和节点源代码;则所述节点分类单元,具体用于根据所述节点信息表、所述节点源代码和所述管道构造信息对所述节点采用资源分配算法按照所需硬件资源类型进行分类。
根据第二方面的第二种可能的实现方式,在第五种可能的实现方式中,所述计算机的分布式程序的模板包括使用消息传递接口MPI通信方式或使用套接字Socket通信方式。
根据第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述管道转换模块,具体用于根据所述管道两端节点所填写的模板类型和所述集群中计算机的配置信息为所述管道选择对应的通信协议和端口号;并将所述管道通信过程转换成进程间通信过程或网络通信过程。
根据第二方面、第二方面的第一种到第六种可能的实现方式的任意一种,在第七种可能的实现方式中,所述装置还包括:配置文件生成模块,用于在所述编译执行模块将所述节点编译成对应计算机上的可执行程序之前,根据所述节点分配给集群中计算机的位置生成配置文件,所述配置文件用于使得与所述节点对应的可执行程序按照所述配置文件所指示的网络位置执行。
本实施例所提供的分布式计算处理方法及装置,通过分布式程序获取节点构造信息和管道构造信息,根据获取的节点构造信息将该分布式程序中的节点分配给集群中可以执行该节点的计算机,并进一步将节点之间的管道通信过程转换成兼容管道两端节点的API的通信过程,进而将节点编译成对应计算机上的可执行程序,实现了分布式程序中各节点按照其硬件资源类型需求在具有相应软硬件配置的集群计算机上执行,以解决现有技术中采用的分布式计算方法,任务分解的过程具有较大的随意性,导致任务分解与集群计算机软硬件配置不匹配的问题,节点间管道的配置方式提高了数据传输的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一所提供的一种分布式计算处理方法的流程图;
图2为本发明实施例二所提供的一种分布式计算处理方法的流程图;
图3为图2所示方法中获取的节点和管道的结构示意图;
图4为图2所示方法中将节点分配到对应的集群中计算机的结构示意图;
图5为图2所示方法中对管道通信过程进行转换的结构示意图;
图6为本发明实施例所提供的一种分布式计算处理方法中命名管道的数据读取的示意图;
图7为本发明实施例三所提供的一种分布式计算处理装置的结构示意图;
图8为本发明实施例四所提供的一种分布式计算处理装置的结构示意图;
图9为本发明实施例五所提供的一种终端设备的结构示意图;
图10为本发明实施例六所提供的一种终端设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1为本发明实施例一所提供的一种分布式计算处理法的流程图。本实施例的方法适用于使用集群中的计算机处理分布式程序的情况,该方法可由终端设备或分布式计算处理装置执行,该分布式计算处理装置通常以硬件和/或软件的方法来实现,并集成在终端设备中。如图1所示,本实施例的方法可以包括:
S110,读取分布式程序,该分布式程序包括节点语法和管道语法。
分布式程序是指任务中被分解的各程序可以分布在不同计算机上,通过网络来共同完成一项任务;通常地,分布式程序被分配到各计算机上的任务是独立、并行地执行的,任务之间通过网络进行数据传输数据,所以可以将各计算机上并行执行的任务抽象成逻辑上的节点(VNODE)、该VNODE之间通过管道(Pipeline,简称为:PIPE)传输数据、分布式计算过程即通过数据驱动的方式使各个VNODE协同工作;因此,本实施例中读取的分布式程序中包括节点语法和管道语法。
S120,根据该分布式程序获取节点构造信息和管道构造信息。
在本实施例中,读取的分布式程序通常是指该程序所规定的扩展语法,即节点语法和管道语法的源代码;对该分布式程序的设计通常可以使用数据流驱动的方式对该分布式程序进行任务分解,任务被分解成若干独立的功能单元,即VNODE后,使用上述扩展语法将独立的功能单元声明成“节点”,并根据数据流分解方式中该“节点”与其他“节点”进行数据传输的过程声明对应数量和类型的“管道”,并在各节点程序设计的过程中使用管道操作符和管道名称进行数据传输;在具体实现时,该扩展语法例如可以包括:
1)、用于声明任务并行执行的关键字“VNODE”,在关键字之后用一个变量来表示节点名称,变量的命名规则例如可以同C语言变量的命名规则;
2)、在用于表示节点名称的变量之后使用一对尖括号“<”和“>”来表示节点管道声明区域;
3)、在节点管道声明区域的尖括号“<”和“>”中,使用管道声明关键字“INPUT”和“OUTPUT”来表示节点的输入输出管道声明;
4)、在节点的输入输出管道声明关键字之后用一个变量来表示管道的名称,该管道名称;
5)、在用于表示管道名称的变量之后用冒号“:”做分隔符,并在冒号之后使用一个系统类型标识符表示管道类型,在管道类型之后用分号结束一个管道的声明;
6)、在节点的输入输出管道声明关键字之后用一个变量来表示管道的名称,该管道名称,多个管道声明之间使用分号“;”作分隔符;
7)、在管道声明作用域的尖括号“<”和“>”之后使用一对大括号“{”“}”来表示节点代码的作用域,并将节点代码书写在此作用域中;
8)、节点代码作用域大括号“{”“}”内的代码只能使用管道操作符和节点声明中的管道名称和其它节点进行通信。
相应地,根据上述扩展语法的设计规则就可以从该扩展语法的源代码中提取节点构造信息和管道构造信息。
S130,根据该节点构造信息和该管道构造信息将该分布式程序的节点分配给集群中执行该节点的计算机。
现有技术提供的分布式计算方法,由于异构集群中计算机的软硬件配置通常不同,在分布式程序的设计阶段可以先设计好分布式系统各个节点的通信接口和通信方式,包括数据共享过程是进程间通信还是网络通信、通信过程是采用设备驱动程序进行通信还是采用共享内存方式进行通信,然后再设计分布式应用的运算过程,因此,分布式应用的设计过程需要考虑到数据通信过程和集群硬件配置的差异性,使得设计过程繁琐,相应地,该程序的任务分解的过程具有很大的随意性,缺乏理论依据;与现有技术不同的,本实施例所提供的分布式计算处理方法,节点的构造信息可以包括该节点的名称、该节点所声明的任务单元的函数调用情况,即,可以根据节点的函数调用情况对该节点的硬件资源需求类型进行分类,进而,将分布式程序中的所有节点分配给集群中可以执行每个节点的计算机,使得每个节点都有对应的执行该节点的计算机,并且该计算机的硬件资源是与被分配的节点的硬件资源需求相应的,即分配到计算机中的所有节点的任务都可以正常执行,以实现任务的分解过程无需考虑集群计算机的软硬件配置的要求,分解之后的任务能够自动转化成异构集群中的分布式应用程序。
S140,根据该节点构造信息和该管道构造信息将管道通信过程转换成兼容该管道两端节点的应用程序编程接口API的通信过程。
在现有技术的分布式程序中,逻辑上数据处理流程的划分,即任务分解过程与部署时物理计算机的数量是无关的,即无论计算机数量的多少,逻辑上的节点在部署到物理计算机上的时候都使用网络进行数据传输;而网络传输过程需要将数据进行分片、封装、路由等操作,当多个功能上独立的模块被部署到同一台计算机上时,模块间的数据分片、封装、路由等过程降低了数据传输的效率。本实施提供的分布式程序计算处理方法,已将分解之后的任务自动转化成异构集群中的分布式应用程序,并且根据该节点构造信息和该管道构造信息将管道通信过程转换成兼容该管道两端节点的应用程序编程接口(Application Programming Interface,简称为:API)的通信过程;举例来说,当多个逻辑上的节点部署在同一台物理计算机上时,节点间的通信过程能自动优化成进程间通信过程,由于进程间通信的过程不需要将数据封装成IP包,没有分片、添加包头、路由、解包头的过程,并且也不需要传输控制协议(Transmission Control Protocol,简称为:TCP)等可靠数据传输协议,从而达到了提高数据传输的效率的目的。
S150,将该节点编译成对应计算机上的可执行程序,分配到该对应计算机上执行。
在本实施例中,已经将任务分解的节点分配到可以执行该节点的集群计算机上,并且构建了节点间管道的通信方式;在该节点的具体执行过程中,可以根据节点的源代码将该节点编译成计算机上的可执行程序,具体地,根据该节点已分配的集群计算机的软硬件资源类型进行编译,生成的程序也是与该计算机的软硬件资源类型对应的,因此分配到对应的计算机中后该程序可以被正确执行,实现分布式计算结果。
本实施例所提供的分布式计算处理方法,通过分布式程序获取节点构造信息和管道构造信息,根据获取的节点构造信息和管道构造信息将该分布式程序中的节点分配给集群中可以执行该节点的计算机,并进一步将节点之间的管道通信过程转换成兼容管道两端节点的API的通信过程,进而将节点编译成对应计算机上的可执行程序,实现了分布式程序中各节点按照其硬件资源类型需求在具有相应软硬件配置的集群计算机上执行,以解决现有技术中采用的分布式计算方法,任务分解的过程具有较大的随意性,导致任务分解与集群计算机软硬件配置不匹配的问题,节点间管道的配置方式提高了数据传输的效率。
实施例二
图2为本发明实施例二所提供的一种分布式计算处理方法的流程图。如图2所示,本实施例的方法可以包括:
S200,读取分布式程序,该分布式程序包括节点语法和管道语法。
S210,根据该分布式程序获取节点构造信息和管道构造信息。
具体地,S200~S210的具体实现参照实施例一中的S110~S120。
以上述实施例所提供的扩展语法为例进行说明,本实施例在具体实现中,可以包括:S211,根据分布式程序识别节点声明语法管道声明语法,查找该节点声明语法中的声明节点的关键字“VNODE”和该管道声明语法中声明管道的关键字“INPUT”和“OUTPUT”;S212,根据该声明节点的关键字“VNODE”将节点信息添加到节点信息表中以获取节点构造信息;S213,根据该节点构造信息对该节点信息表中两个节点的管道连接进行赋值以获取管道构造信息;如图3所示,为图2所示方法中获取的节点和管道的结构示意图。
需要说明的是,本实施例中的节点即分布式程序中的任务,具体地,每个声明节点的关键字“VNODE”为一个任务,查找节点声明语法中的声明节点的关键字“VNODE”即是对分布式程序中各个任务的分析,并且该些任务可以并行执行。
在本实施中,首先读取分布式程序的扩展语法,即节点语法和管道语法,该语法中包括声明节点的关键字“VNODE”和声明管道的关键字“INPUT”和“OUTPUT”;举例来说,本实施例提供的节点语法和管道语法的源代码具体如表1所示:
表1
从上述表1所示源代码可以看出,共使用关键字“VNODE”声明了3个节点:即FIR、RANDOM和PRINT,其中,节点FIR具有1条传输数据类型为int的输入管道firstinput和一条传输数据类型为int的输出管道firstoutput;节点RANDOM具有一条传输数据类型为int的输出管道output1,节点PRINT具有一条传输数据类型为int的输入管道input;在本实施例中,节点内部使用管道操作SEND和RECV对管道进行数据传输操作,同时在本实施例中,使用管道连接符“<<<”对节点间的管道进行连接,在连接之后,一个节点的数据输入或输出会与另外一个节点的数据输出或输入相连接;需要说明的是,本实施例中,“reduce_kernel”是一个调用GPU核函数进行运算的GPU函数。
相应地,对上述分布式程序的源代码的获取节点构造信息和管道构造信息的具体实现方式可以包括:
1)、通过字符串查找方法找到源文件中声明节点的关键字“VNODE”;
2)、检查所找到的关键字的词法和语法结构是否正确;
3)、检查节点名称是否已经存在;
4)、在内存中的节点信息表中添加该节点的名称、管道、起始行等信息;
5)、继续查找下一个节点声明关键字;
6)、当所有节点构造完成之后,使用字符串查找方法查找源文件中的管道连接操作符“<<<”和“>>>”;
7)、检查管道连接操作符两端的节点名称和管道名称是否是节点信息表中的合法名称;
8)、在两个节点的节点信息表中的管道连接记录中进行赋值操作;
9)、继续查找源文件中的下一个管道连接操作符“<<<”和“>>>”。
本实施例提供的方法通过读取表1所示扩展语法的源代码后,添加的节点信息表如下表2~表4所示:
节点名称 | FIR |
节点INPUT数据流依赖类型链表 | firstinput[int]; |
节点INPUT数据流依赖赋值链表 | firstinput=RANDOM.output1; |
节点OUTPUT数据流依赖类型链表 | firstoutput[int]; |
节点OUTPUT数据流依赖赋值链表 | firstoutput=PRINT.input; |
节点类型 | GPU |
节点预分配主机 | |
节点模板位置 |
表2
节点名称 | RANDOM |
节点INPUT数据流依赖类型链表 | |
节点INPUT数据流依赖赋值链表 | |
节点OUTPUT数据流依赖类型链表 | output1[int]; |
节点OUTPUT数据流依赖赋值链表 | output1=FIR.firstinput; |
节点类型 | CPU |
节点预分配主机 | |
节点模板位置 |
表3
节点名称 | |
节点INPUT数据流依赖类型链表 | input[int]; |
节点INPUT数据流依赖赋值链表 | input=FIR.firstoutput; |
节点OUTPUT数据流依赖类型链表 | |
节点OUTPUT数据流依赖赋值链表 | |
节点类型 | CPU |
节点预分配主机 | |
节点模板位置 |
表4
S220,获取该集群中计算机的配置信息。
本实施例提供的分布式计算处理方法,可以将节点分配到执行该节点的集群计算机中,因此,该集群中各计算机的配置信息是在分配前已确定的,进而在分配节点先可以先获取该集群中各计算机的配置信息;需要说明的是,本发明不限制S220与S200或S210的执行顺序,本实施例以S220在S210之后执行为例进行说明。
在具体实现时,通过在集群中计算机上运行以获得主机的系统平台信息,并通过查询环境变量和运行第三方库函数以确定指定的软件环境是否安装;获取计算机配置信息的工作模式有主模式和从模式两种:主模式的获取方式包括:查询本机的配置信息并存储于集群配置列表中,该本机为该集群计算机中的主机;获取该集群中其它计算机的配置信息并存储于集群配置列表中,具体地,该主机向集群中其它计算机发送信息获取请求并接收其它计算机返回的信息获取响应,并将该信息获取响应中携带的其它计算机的配置信息存储于集群配置列表中;从模式的获取方式包括:查询本机的配置信息并存储于集群配置列表中;向该集群计算机的主机发送该本机的配置信息,具体地,该本机接收到集群中主机发送的信息获取请求,并将该本机的配置信息携带在信息获取响应中发送给主机。
举例来说,本实施例中获取的集群中计算机的配置信息如下表5所示:
表5
需要说明的是,上述表5中的“Node”为集群中以计算机为单元的物理节点,即一个计算机为一个节点,与本实施例所述的以任务单元为节点的VNODE不同,该VNODE为分布式程序在执行时的逻辑节点,“total”为该计算机节点具有的资源数量,即内核数量;“GPU”或“CPU”为该计算机节点所具备的物理资源类型,即硬件信息。
S230,根据该节点构造信息和该管道构造信息将该分布式程序的节点按照所需硬件资源类型进行分类。
在本实施例中,节点构造信息可以包括上述声明节点时添加的节点信息表和节点源代码;相应地,具体可以根据节点信息表、节点源代码和管道构造信息对该节点采用资源分配算法按照硬件资源类型进行分类,使得节点分配给适合执行的计算机,举例来说,需要使用GPU进行加速的节点会被分配到安装有GPU硬件的计算机上,不需要使用GPU硬件的节点会按管道连接关系分配到适当的计算机上。
在具体实现时,资源分配算法包括:构建并初始化资源类型列表和资源项目列表,该资源类型列表包括该集群中计算机和该计算机的资源类型,该资源项目列表包括与该资源类型列表中该计算机对应的身份标识符ID、资源数量totalN和可执行节点的资源数量avaN;选择初始节点并判断该初始节点对应计算机的资源类型,从该资源类型列表中选择对应该计算机的资源项目;检查该初始节点对应的资源项目列表中的该avaN不为0时,将该资源项目列表中当前ID对应的计算机的内核分配给该初始节点,并将该计算机的avaN减1,在该avaN减至0时开始分配资源项目列表中下一个计算机的资源。
以表1所示扩展语法的源代码和表5所示集群中计算机的配置信息为例进行说明,对分布式程序的节点按照硬件资源类型进行分类的方式具体包括:
1)、初始化CPU={n11,…,n1k}、ni=(ID,totalN,avaN),GPU={n21,…,n2l}、nj=(ID,totalN,avaN),任意选取一个任务节点作为当前节点,进入步骤2;在步骤1)中,CPU和GPU为资源类型列表,n11~n1k为资源类型为CPU的计算机节点,ni为与CPU中计算机节点对应的资源项目列表;n21~n2l为资源类型为GPU的计算机节点,nj为与GPU中计算机节点对应的资源项目列表;
2)、若当前节点的类型为GPU则进入步骤3),否则进入步骤4);
3)、检查GPU物理资源表的指针是否为空,若为空则进入步骤5);若非空则将当前节点分配给物理资源表中的计算机节点,相应的该计算机节点的avaN减1,减至0则指针指向下一台计算机,进入步骤7);
4)、检查CPU物理资源表的指针是否为空,若为空则进入步骤3);若非空则将当前节点分配给物理资源表中的计算机,相应的该计算机节点的avaN减1,减至0则指针指向下一台主机,进入步骤7);
5)、若当前节点为GPU类型,检查其管道相连的节点中是否有相同类型并已获分配的节点,若有则分配给同一台计算机并进入步骤7),否则进入步骤6);若当前节点为CPU类型,检查其管道相连的节点中是否有已获分配的节点,若有则分配给同一台计算机并进入步骤7),否则进入步骤6);
6)、若当前节点为GPU类型,则以平均分配方式分配给任意同类型计算机并进入步骤7);若当前节点为CPU类型,则以平均分配方式分配给任意计算机并进入步骤7);
7)、.取管道相连的未分配的节点作为当前节点并进入步骤2);若没有则任选一未获分配的节点作为当前节点并进入步骤2),若没有则算法结束。
本实施例对分布式程序的节点的分类结果如表6~表8所示:
节点名称 | FIR |
节点INPUT数据流依赖类型链表 | firstinput[int]; |
节点INPUT数据流依赖赋值链表 | firstinput=RANDOM.output1; |
节点OUTPUT数据流依赖类型链表 | firstoutput[int]; |
节点OUTPUT数据流依赖赋值链表 | firstoutput=PRINT.input; |
节点类型 | GPU |
节点预分配主机 | Node0 |
节点模板位置 |
表6
节点名称 | RANDOM |
节点INPUT数据流依赖类型链表 | |
节点INPUT数据流依赖赋值链表 | |
节点OUTPUT数据流依赖类型链表 | output1[int]; |
节点OUTPUT数据流依赖赋值链表 | output1=FIR.firstinput; |
节点类型 | CPU |
节点预分配主机 | Node1 |
节点模板位置 |
表7
节点名称 | |
节点INPUT数据流依赖类型链表 | input[int]; |
节点INPUT数据流依赖赋值链表 | input=FIR.firstoutput; |
节点OUTPUT数据流依赖类型链表 | |
节点OUTPUT数据流依赖赋值链表 | |
节点类型 | CPU |
节点预分配主机 | Node2 |
节点模板位置 |
表8
S240,根据该集群中计算机的配置信息为每台计算机生成相应的分布式程序的模板。
在本实施例中,该计算机的分布式程序的模板包括使用MPI通信方式或使用套接字(Socket)通信方式;生成的模板可以根据该集群中计算机是否支持MPI,选择计算机使用MPI通信方式或使用Socket通信方式,并且在生成模板时记录每个模板的文件名和节点插入位置;具体地,如果模板是MPI通信方式,则switch(myid)的每一个case都是一个节点插入位置,一个MPI通信方式的文件可以有任意多个节点插入位置;如果模板是Socket通信方式,则可以创建不同的通信模块,即Socket身份标识号码(Identity,简称为:ID),一个通信模块只有一个插入位置,当一台计算机上使用Socket通信方式且被分配多个节点时,在节点分配时会复制多份Socket通信方式,不同节点的Socket ID不同,具体根据该Socket ID进行通信;需要说明的是,本实施例中“switch”为语法名称,具体指该语法为一个条件跳转语句,“myid”是该跳转语句的取指,case则为当“myid”取不同值时该语法的执行情况。
以上述表5所示集群中计算机的配置信息为例进行说明,本实施例为该集群中计算机生成的分布式程序的模板例如表9所示的MPI通信方式和表10所示的Socket通信方式:
表9
表10
S250,根据该节点的硬件资源类型将该节点填写到对应计算机的分布式程序的模板中。
在本实施例中,已对节点按照其硬件资源类型进行分类,并将为集群中的各计算机生成对应其配置信息的分布式程序的模板,进而可以根据节点的节点信息表将节点的源代码填写到对应的计算机的分布式程序的模板中,即是将源代码中的节点分配到集群中计算机中,由于节点对硬件资源的需求不同,并且针对不同计算机所生成的模板类型和结构不同,例如支持MPI的节点会使用MPI通信方式,不支持MPI的会使用Socket通信方式,所以分布式程序中节点会被填入到不同结构的模板中,如图4所示,为图2所示方法中将节点分配到对应的集群中计算机的结构示意图,一个计算机中的节点可以是一个或一个以上。
以上述表9和表10所示的模板和表5所示集群中计算机的配置信息为例进行说明,本实施例将表1所示扩展语法的源代码中节点的分配结果具体为,节点FIR和RANDOM的分配结果如表11所示,节点PRINT的分配结果如表12所示:
表11
表12
需要说明的是,FIR的模板位置为0,RANDOM的模板位置为1,PRINT的模板位置为2,模板位置0和1为case0和case1,模板位置2为单独的Socket代码中的一个位置。
S260,根据该管道两端节点所填写的模板类型和该集群中计算机的配置信息为该管道选择对应的通信协议和端口号。
S270,将该管道通信过程转换成进程间通信过程或网络通信过程。
在本实施例中,每个模板可以包含多个节点,将节点的源代码填入到分布式程序的模板中后,可以根据管道两端节点的类型,即节点所填写的模板类型和对应的计算机的配置信息,为该管道选择对应的通信协议和端口号,进而将源代码中的节点间管道通信过程替换成进程间通信过程或网络通信过程;具体地,同一台计算机上的各个节点间的通信过程会被优化成进程间通信过程,不同计算机之间的通信过程会被转化成网络通信过程,如图5所示,为图2所示方法中对管道通信过程进行转换的结构示意图;本实施例对上述表1所示扩展语句的源代码的转化结果如下表13和表14所示:
表13
表14
需要说明的是,表13为节点FIR和RANDOM的转换结果,表14为节点PRINT的转换结果,模板位置0和1为case0和case1,模板位置2为单独的Socket代码中的一个位置。
S280,根据该节点分配给集群中计算机的位置生成配置文件,该配置文件用于使得与该节点对应的可执行程序按照该配置文件所指示的网络位置执行。
在本实施例中,执行节点前可以根据节点分配到集群计算机的位置生成配置文件,该配置文件可以保证节点在正确的网络位置执行,以上述MPI通信方式和Socket通信方式为例,可以为分配到MPI通信方式中的主控节点生成MPI任务调度配置文件;为每个安装MPI通信方式的节点生成管道启动配置文件pipeopt.c,并将Socket通信方式连接时的IP地址数量、端口号等信息写入到该pipeopt.c文件中;并且为每个分配到Socket通信方式的节点生成启动参数;本实施例中生成的配置文件如下表15~表18所示:
表15
表16
表17
表18
需要说明的是,表15为计算机节点Node0上的MPI配置文件,该Node0为主控节点,表16为计算机节点Node0上的Socket配置文件,表17为计算机节点Node1上的Socket配置文件,表18为计算机节点Node2的配置文件。
S290,将该节点编译成对应计算机上的可执行程序,分配到该对应计算机上执行。
在本实施例提供的方法中,要将分布式程序的任务节点分配到异构集群中的计算机来执行,因此,可以针对集群中计算机的配置信息将节点的源代码编译成可执行程序,或中间代码,进而分配到对应的计算机中执行编译后的程序。
在具体实现时,当计算机上的程序使用MPI通信方式进行执行的时,主控计算机上分配到MPI通信方式的节点通过MPI任务配置文件对MPI进程的调度执行进行配置,在这个过程中,MPI系统会自动优化在同一台主机上执行的节点间的数据传输过程;当计算机上的程序使用Socket通信方式时,管道创建参数通过程序参数传递给应用程序。
本实施例所提供的分布式计算处理方法,通过分布式程序获取节点构造信息和管道构造信息,根据获取的节点构造信息和管道构造信息将该分布式程序中的节点分配给集群中可以执行该节点的计算机,并进一步将节点之间的管道通信过程转换成兼容管道两端节点的API的通信过程,进而将节点编译成对应计算机上的可执行程序,实现了分布式程序中各节点按照其硬件资源类型需求在具有相应软硬件配置的集群计算机上执行,以解决现有技术中采用的分布式计算方法,任务分解的过程具有较大的随意性,导致任务分解与集群计算机软硬件配置不匹配的问题,节点间管道的配置方式提高了数据传输的效率。另外,本实施例提供了对节点的具体分配方式和管道通信过程的转换方式,实现了对有特定硬件资源需求的节点和安装有特定软件的计算机的自动适配,并根据适配后节点所处的计算机位置选择不同的方法对节点间的数据传输过程进行优化,提高了分布式计算处理方法的智能性,并相应提高了节点间数据传输的吞吐量和效率。
可选地,本实施例提供的方法中,管道可以包括命名管道(PIPO),该PIPO通常用于两个无关进程之间的通信过程;相应地,本实施还包括:PIPO在操作系统OS中创建用于数据缓存的内存区域;并且管道通信过程中的传输数据按照先入先出的顺序被存储和读取。在具体实现时,系统中任何进程都可以通过一个唯一的名字和一个系统API调用来访问该内存区域中的数据;当缓冲区被填满的时候,写入进程将被阻塞,直到缓冲区中的数据被读出;当缓冲区为空的时候,读取进程将被阻塞,直到缓冲区中有数据到来;如图6所示,为本发明实施例所提供的一种分布式计算处理方法中命名管道的数据读取的示意图。
举例来说,命名管道的应用场景可以为:当节点全部被分配到Socket通信方式时,对分配在同一计算机上的进程间通信进行优化时可以使用命名管道替换,不同计算机上的通信过程仍然使用网络数据传输过程;相应地,在节点中增加打开命名管的代码语句。
进一步地,现有技术提供的分布式计算方法,本实施例提供的分布式计算处理方法,如果要将网络中的数据传输过程改为进程间数据传输过程,则需要人工修改分布式程序的源代码,即进行人工优化,并修改程序架构;并且当集群系统的计算机数量、软硬件配置发生变化的时候,又必须再投入人力进行优化;与现有技术不同的,本实施提供的方法,可以根据集群中计算机的配置信息实现自动分配任务节点的功能,且不需要人工修改代码,实现了自动完成分布式程序的计算过程,节省了人力资源。
实施例三
图7为本发明实施例三所提供的一种分布式计算处理装置的结构示意图。如图7所示,本实施例提供的分布式计算处理装置,具体包括:读取模块11、获取模块12、分配模块13、管道转换模块14和编译执行模块15。
其中,读取模块11,用于读取分布式程序,该分布式程序包括节点语法和管道语法。
获取模块12,用于根据该读取模块11读取的分布式程序获取节点构造信息和管道构造信息。
分配模块13,用于根据该获取模块12获取的节点构造信息和管道构造信息将该分布式程序的节点分配给集群中执行该节点的计算机。
管道转换模块14,用于根据该获取模块12获取的节点构造信息和管道构造信息将管道通信过程转换成兼容该管道两端节点的应用程序编程接口API的通信过程。
编译执行模块15,用于将节点编译成对应计算机上的可执行程序,分配到对应计算机上执行。
本发明实施例提供的分布式计算处理装置用于执行本发明实施例一提供的分布式计算处理方法,具备相应的功能模块,其实现原理和技术效果类似,此处不再赘述。
实施例四
图8为本发明实施例四所提供的一种分布式计算处理装置的结构示意图。如图8所示,本实施例提供的分布式计算处理装置在图7所示装置结构的基础上,获取模块12包括:识别单元16,用于从该分布式程序中识别节点声明语法管道声明语法,查找该节点声明语法中的声明节点的关键字“VNODE”和该管道声明语法中声明管道的关键字“INPUT”和“OUTPUT”;节点获取单元17,用于根据该识别单元16识别的声明节点的关键字“VNODE”将节点信息添加到节点信息表中以获取节点构造信息;管道获取单元18,用于根据该节点获取单元17获取的节点构造信息对该节点信息表中两个节点的管道连接进行赋值以获取管道构造信息。
本实施例提供的分布式计算处理装置,还包括:集群收集模块19,用于在分配模块13根据节点构造信息和管道构造信息将该分布式程序的节点分配给集群中执行该节点的计算机之前,获取该集群中计算机的配置信息;相应地,分配模块13包括:节点分类单元20,用于根据获取模块12获取的节点构造信息和管道构造信息将该分布式程序的节点按照硬件资源类型进行分类;模板生成单元21,用于根据该集群收集模块19获取的集群中计算机的配置信息为每台计算机生成相应的分布式程序的模板;节点分配单元22,用于根据节点的硬件资源类型将该节点填写到对应计算机的分布式程序的模板中。
在具体实现时,集群收集模块19的工作模式包括主模式和从模式,当该集群收集模块19处于主模式时,具体用于查询本机的配置信息并存储于集群配置列表中,该本机为该集群计算机中的主机;并获取该集群中其它计算机的配置信息并存储于集群配置列表中;当该集群收集模块19处于从模式时,具体用于查询本机的配置信息并存储于集群配置列表中;并向该集群计算机的主机发送该本机的配置信息。
进一步地,本实施例中的节点构造信息包括该节点信息表和节点源代码;相应地,节点分类单元20,具体用于根据该节点信息表、该节点源代码和管道构造信息对该节点采用资源分配算法按照所需硬件资源类型进行分类。
可选地,本实施例提供的装置中,模板生成单元21生成的计算机的分布式程序的模板包括使用MPI通信方式或使用Socket通信方式。
本实施例在具体实现中,管道转换模块14,具体用于根据该管道两端节点所填写的模板类型和该集群中计算机的配置信息为该管道选择对应的通信协议和端口号;并将该管道通信过程转换成进程间通信过程或网络通信过程。
更进一步地,本实施例提供的装置还包括:配置文件生成模块23,用于在编译执行模块15将节点编译成对应计算机上的可执行程序之前,根据该节点分配给集群中计算机的位置生成配置文件,该配置文件用于使得与该节点对应的可执行程序按照该配置文件所指示的网络位置执行。
本发明实施例提供的分布式计算处理装置用于执行本发明实施例二提供的分布式计算处理方法,具备相应的功能模块,其实现原理和技术效果类似,此处不再赘述。
可选地,上述实施例提供的分布式计算处理装置,管道可以包括命名管道PIPO,该PIPO用于两个无关进程之间的通信过程;相应地,该装置还包括:创建模块,用于该PIPO在操作系统OS中创建用于数据缓存的内存区;数据传输模块,用于该管道通信过程中的传输数据按照先入先出的顺序被存储和读取。
实施例五
图9为本发明实施例五所提供的一种终端设备的结构示意图。如图9所示,本实施例提供终端设备,具体包括:第一处理器31、第二处理器32、第三处理器33、第四处理器34和第五处理器35。
其中,第一处理器31,用于读取分布式程序,该分布式程序包括节点语法和管道语法。
第二处理器32,用于根据第一处理器31读取的分布式程序获取节点构造信息和管道构造信息。
第三处理器33,用于根据第二处理器32获取的节点构造信息和管道构造信息将该分布式程序的节点分配给集群中执行该节点的计算机。
第四处理器34,用于根据第二处理器32获取的节点构造信息和管道构造信息将管道通信过程转换成兼容该管道两端节点的应用程序编程接口API的通信过程。
第五处理器35,用于将节点编译成对应计算机上的可执行程序,分配到对应计算机上执行。
需要说明的是,本实施例中的第一处理器31、第二处理器32、第三处理器33、第四处理器34和第五处理器35可以是单独设置的处理器,也可以是集成在一个处理器中实现上述功能。
本发明实施例提供的终端设备用于执行本发明实施例一提供的分布式计算处理方法,具备相应的实体装置,其实现原理和技术效果类似,此处不再赘述。
实施例六
图10为本发明实施例六所提供的一种终端设备的结构示意图。如图10所示,本实施例提供的终端设备在图9所示设备结构的基础上,第二处理器32,具体用于从该分布式程序中识别节点声明语法管道声明语法,查找该节点声明语法中的声明节点的关键字“VNODE”和该管道声明语法中声明管道的关键字“INPUT”和“OUTPUT”;并根据该声明节点的关键字“VNODE”将节点信息添加到节点信息表中以获取节点构造信息;进而根据节点构造信息对该节点信息表中两个节点的管道连接进行赋值以获取管道构造信息。
本实施例提供的终端设备,还包括:第六处理器36,用于在第三处理器33根据节点构造信息和管道构造信息将该分布式程序的节点分配给集群中执行该节点的计算机之前,获取该集群中计算机的配置信息;相应地,第三处理器33,具体用于根据第二处理器32获取的节点构造信息和管道构造信息将该分布式程序的节点按照硬件资源类型进行分类;并根据第六处理器36获取的集群中计算机的配置信息为每台计算机生成相应的分布式程序的模板;从而根据节点的硬件资源类型将该节点填写到对应计算机的分布式程序的模板中。
在具体实现时,第六处理器36的工作模式包括主模式和从模式,当该第六处理器36处于主模式时,具体用于查询本机的配置信息并存储于集群配置列表中,该本机为该集群计算机中的主机;并获取该集群中其它计算机的配置信息并存储于集群配置列表中;当该第六处理器36处于从模式时,具体用于查询本机的配置信息并存储于集群配置列表中;并向该集群计算机的主机发送该本机的配置信息。
进一步地,本实施例中的节点构造信息包括该节点信息表和节点源代码;相应地,第三处理器33用于根节点构造信息将该分布式程序的节点按照硬件资源类型进行分类;具体包括:用于根据该节点信息表、该节点源代码和管道构造信息对该节点采用资源分配算法按照所需硬件资源类型进行分类。
可选地,本实施例提供的终端设备中,第三处理器33生成的计算机的分布式程序的模板包括使用MPI通信方式或使用Socket通信方式。
本实施例在具体实现中,第四处理器34,具体用于根据该管道两端节点所填写的模板类型和该集群中计算机的配置信息为该管道选择对应的通信协议和端口号;并将该管道通信过程转换成进程间通信过程或网络通信过程。
更进一步地,本实施例提供的终端设备还包括:第七处理器37,用于在第五处理器35将节点编译成对应计算机上的可执行程序之前,根据该节点分配给集群中计算机的位置生成配置文件,该配置文件用于使得与该节点对应的可执行程序按照该配置文件所指示的网络位置执行。
本发明实施例提供的终端设备用于执行本发明实施例二提供的分布式计算处理方法,具备相应的实体装置,其实现原理和技术效果类似,此处不再赘述。
可选地,上述实施例提供的终端设备,管道可以包括命名管道PIPO,该PIPO用于两个无关进程之间的通信过程;相应地,该设备的处理器还用于PIPO在操作系统OS中创建用于数据缓存的内存区;并且该管道通信过程中的传输数据按照先入先出的顺序被存储和读取。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (17)
1.一种分布式计算处理方法,其特征在于,包括:
读取分布式程序,所述分布式程序包括节点语法和管道语法;
根据所述分布式程序获取节点构造信息和管道构造信息;
根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点分配给集群中执行所述节点的计算机;
根据所述节点构造信息和所述管道构造信息将管道通信过程转换成兼容所述管道两端节点的应用程序编程接口API的通信过程;
将所述节点编译成对应计算机上的可执行程序,分配到所述对应计算机上执行。
2.根据权利要求1所述的方法,其特征在于,所述根据所述分布式程序获取节点构造信息和管道构造信息,包括:
从所述分布式程序中识别节点声明语法、管道声明语法,查找所述节点声明语法中的声明节点的关键字和所述管道声明语法中声明管道的关键字;
根据所述声明节点的关键字将节点信息添加到节点信息表中以获取节点构造信息;
根据所述节点构造信息对所述节点信息表中两个节点的管道连接进行赋值以获取管道构造信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点分配给集群中执行所述节点的计算机之前,还包括:
获取所述集群中计算机的配置信息;
所述根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点分配给执行所述节点的计算机,包括:
根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点按照硬件资源类型进行分类;
根据所述集群中计算机的配置信息为每台计算机生成相应的分布式程序的模板;
根据所述节点的硬件资源类型将所述节点填写到对应计算机的分布式程序的模板中。
4.根据权利要求3所述的方法,其特征在于,所述获取所述集群中计算机的配置信息,包括:
查询本机的配置信息并存储于集群配置列表中,所述本机为所述集群计算机中的主机;
获取所述集群中其它计算机的配置信息并存储于集群配置列表中;或者,
查询本机的配置信息并存储于集群配置列表中;
向所述集群计算机的主机发送所述本机的配置信息。
5.根据权利要求4所述的方法,其特征在于,所述节点构造信息包括所述节点信息表和节点源代码;则所述根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点按照硬件资源类型进行分类,包括:
根据所述节点信息表、所述节点源代码和所述管道构造信息对所述节点采用资源分配算法按照所需硬件资源类型进行分类。
6.根据权利要求5所述的方法,其特征在于,所述资源分配算法包括:
构建并初始化资源类型列表和资源项目列表,所述资源类型列表包括所述集群中计算机和所述计算机的资源类型,所述资源项目列表包括与所述资源类型列表中所述计算机对应的身份标识符ID、资源数量totalN和可执行节点的资源数量avaN;
选择初始节点并判断所述初始节点对应计算机的资源类型,从所述资源类型列表中选择对应所述计算机的资源项目;
检查所述初始节点对应的资源项目列表中的所述avaN不为0时,将所述资源项目列表中当前ID对应的计算机的内核分配给所述初始节点,并将所述计算机的avaN减1,在所述avaN减至0时开始分配资源项目列表中下一个计算机的资源。
7.根据权利要求3所述的方法,其特征在于,所述计算机的分布式程序的模板包括使用消息传递接口MPI通信方式或使用套接字Socket通信方式。
8.根据权利要求7所述的方法,其特征在于,所述根据所述节点构造信息和所述管道构造信息将管道通信过程转换成兼容所述管道两端节点的应用程序编程接口API的通信过程,包括:
根据所述管道两端节点所填写的模板类型和所述集群中计算机的配置信息为所述管道选择对应的通信协议和端口号;
将所述管道通信过程转换成进程间通信过程或网络通信过程。
9.根据权利要求1~8中任一所述的方法,其特征在于,所述将所述节点编译成对应计算机上的可执行程序之前,还包括:
根据所述节点分配给集群中计算机的位置生成配置文件,所述配置文件用于使得与所述节点对应的可执行程序按照所述配置文件所指示的网络位置执行。
10.一种分布式计算处理装置,其特征在于,包括:
读取模块,用于读取分布式程序,所述分布式程序包括节点语法和管道语法;
获取模块,用于根据所述读取模块读取的分布式程序获取节点构造信息和管道构造信息;
分配模块,用于根据所述获取模块获取的节点构造信息和所述管道构造信息将所述分布式程序的节点分配给集群中执行所述节点的计算机;
管道转换模块,用于根据所述获取模块获取的节点构造信息和管道构造信息将管道通信过程转换成兼容所述管道两端节点的应用程序编程接口API的通信过程;
编译执行模块,用于将所述节点编译成对应计算机上的可执行程序,分配到所述对应计算机上执行。
11.根据权利要求10所述的装置,其特征在于,所述获取模块,包括:
识别单元,用于从所述分布式程序中识别节点声明语法管道声明语法,查找所述节点声明语法中的声明节点的关键字和所述管道声明语法中声明管道的关键字;
节点获取单元,用于根据所述识别单元识别的声明节点的关键字将节点信息添加到节点信息表中以获取节点构造信息;
管道获取单元,用于根据所述节点获取单元获取的节点构造信息对所述节点信息表中两个节点的管道连接进行赋值以获取管道构造信息。
12.根据权利要求11所述的装置,其特征在于,还包括:集群收集模块,用于在所述分配模块根据所述节点构造信息和所述管道构造信息将所述分布式程序的节点分配给集群中执行所述节点的计算机之前,获取所述集群中计算机的配置信息;
所述分配模块,包括:
节点分类单元,用于根据所述获取模块获取的节点构造信息和管道构造信息将所述分布式程序的节点按照硬件资源类型进行分类;
模板生成单元,用于根据所述集群收集模块获取的集群中计算机的配置信息为每台计算机生成相应的分布式程序的模板;
节点分配单元,用于根据所述节点的硬件资源类型将所述节点填写到对应计算机的分布式程序的模板中。
13.根据权利要求12所述的装置,其特征在于,所述集群收集模块,具体用于查询本机的配置信息并存储于集群配置列表中,所述本机为所述集群计算机中的主机;并获取所述集群中其它计算机的配置信息并存储于集群配置列表中;或者,查询本机的配置信息并存储于集群配置列表中;并向所述集群计算机的主机发送所述本机的配置信息。
14.根据权利要求13所述的装置,其特征在于,所述节点构造信息包括所述节点信息表和节点源代码;则所述节点分类单元,具体用于根据所述节点信息表、所述节点源代码和所述管道构造信息对所述节点采用资源分配算法按照所需硬件资源类型进行分类。
15.根据权利要求12所述的装置,其特征在于,所述计算机的分布式程序的模板包括使用消息传递接口MPI通信方式或使用套接字Socket通信方式。
16.根据权利要求15所述的装置,其特征在于,所述管道转换模块,具体用于根据所述管道两端节点所填写的模板类型和所述集群中计算机的配置信息为所述管道选择对应的通信协议和端口号;并将所述管道通信过程转换成进程间通信过程或网络通信过程。
17.根据权利要求10~16中任一所述的装置,其特征在于,还包括:配置文件生成模块,用于在所述编译执行模块将所述节点编译成对应计算机上的可执行程序之前,根据所述节点分配给集群中计算机的位置生成配置文件,所述配置文件用于使得与所述节点对应的可执行程序按照所述配置文件所指示的网络位置执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410020598.0A CN104794095B (zh) | 2014-01-16 | 2014-01-16 | 分布式计算处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410020598.0A CN104794095B (zh) | 2014-01-16 | 2014-01-16 | 分布式计算处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104794095A true CN104794095A (zh) | 2015-07-22 |
CN104794095B CN104794095B (zh) | 2018-09-07 |
Family
ID=53558896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410020598.0A Active CN104794095B (zh) | 2014-01-16 | 2014-01-16 | 分布式计算处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104794095B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933664A (zh) * | 2017-03-09 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | 一种Hadoop集群的资源调度方法及装置 |
CN107807815A (zh) * | 2017-10-19 | 2018-03-16 | 北京京东尚科信息技术有限公司 | 分布式处理任务的方法和装置 |
CN108287723A (zh) * | 2016-12-30 | 2018-07-17 | 华为技术有限公司 | 一种应用交互方法、装置、物理机及系统 |
CN109976763A (zh) * | 2019-03-25 | 2019-07-05 | 联想(北京)有限公司 | 一种代码处理方法、装置、电子设备及计算系统 |
CN110321374A (zh) * | 2018-10-23 | 2019-10-11 | 开采夫(杭州)科技有限公司 | 基于分布式网络的标准文件io操作系统及方法 |
CN110533183A (zh) * | 2019-08-30 | 2019-12-03 | 东南大学 | 一种流水线分布式深度学习中异构网络感知的模型划分与任务放置方法 |
CN113760262A (zh) * | 2021-01-21 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 任务处理方法、装置、计算机系统和计算机可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1292118A (zh) * | 1998-02-26 | 2001-04-18 | 太阳微系统公司 | 网络上的动态分布式计算的方法和设备 |
CN101075201A (zh) * | 2007-06-26 | 2007-11-21 | 北京邮电大学 | 各组件进程之间统一通信的通用消息总线的实现方法 |
US20110047084A1 (en) * | 2008-04-14 | 2011-02-24 | Antonio Manzalini | Distributed service framework |
US20110276977A1 (en) * | 2010-05-07 | 2011-11-10 | Microsoft Corporation | Distributed workflow execution |
US20120117271A1 (en) * | 2010-11-05 | 2012-05-10 | Sony Corporation | Synchronization of Data in a Distributed Computing Environment |
CN102710785A (zh) * | 2012-06-15 | 2012-10-03 | 哈尔滨工业大学 | 自助旅行系统中云服务节点架构及各服务节点间的业务协同与均衡模块及协同与均衡方法 |
CN102739567A (zh) * | 2012-07-03 | 2012-10-17 | 苏州阔地网络科技有限公司 | 一种进程间通信方法及系统 |
CN103078941A (zh) * | 2012-12-31 | 2013-05-01 | 中金数据系统有限公司 | 一种分布式计算系统的任务调度方法及系统 |
CN103412739A (zh) * | 2013-08-28 | 2013-11-27 | 电子科技大学 | 一种基于地震数据处理的数据传输方法及系统 |
-
2014
- 2014-01-16 CN CN201410020598.0A patent/CN104794095B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1292118A (zh) * | 1998-02-26 | 2001-04-18 | 太阳微系统公司 | 网络上的动态分布式计算的方法和设备 |
CN101075201A (zh) * | 2007-06-26 | 2007-11-21 | 北京邮电大学 | 各组件进程之间统一通信的通用消息总线的实现方法 |
US20110047084A1 (en) * | 2008-04-14 | 2011-02-24 | Antonio Manzalini | Distributed service framework |
US20110276977A1 (en) * | 2010-05-07 | 2011-11-10 | Microsoft Corporation | Distributed workflow execution |
US20120117271A1 (en) * | 2010-11-05 | 2012-05-10 | Sony Corporation | Synchronization of Data in a Distributed Computing Environment |
CN102710785A (zh) * | 2012-06-15 | 2012-10-03 | 哈尔滨工业大学 | 自助旅行系统中云服务节点架构及各服务节点间的业务协同与均衡模块及协同与均衡方法 |
CN102739567A (zh) * | 2012-07-03 | 2012-10-17 | 苏州阔地网络科技有限公司 | 一种进程间通信方法及系统 |
CN103078941A (zh) * | 2012-12-31 | 2013-05-01 | 中金数据系统有限公司 | 一种分布式计算系统的任务调度方法及系统 |
CN103412739A (zh) * | 2013-08-28 | 2013-11-27 | 电子科技大学 | 一种基于地震数据处理的数据传输方法及系统 |
Non-Patent Citations (1)
Title |
---|
霍洪鹏: "面向通用计算的GPU集群设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108287723A (zh) * | 2016-12-30 | 2018-07-17 | 华为技术有限公司 | 一种应用交互方法、装置、物理机及系统 |
US10866846B2 (en) | 2016-12-30 | 2020-12-15 | Huawei Technologies Co., Ltd. | Application interaction method, apparatus, and system, and physical machine |
CN108287723B (zh) * | 2016-12-30 | 2022-07-12 | 华为技术有限公司 | 一种应用交互方法、装置、物理机及系统 |
CN106933664A (zh) * | 2017-03-09 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | 一种Hadoop集群的资源调度方法及装置 |
CN106933664B (zh) * | 2017-03-09 | 2020-06-30 | 北京搜狐新媒体信息技术有限公司 | 一种Hadoop集群的资源调度方法及装置 |
CN107807815A (zh) * | 2017-10-19 | 2018-03-16 | 北京京东尚科信息技术有限公司 | 分布式处理任务的方法和装置 |
CN110321374A (zh) * | 2018-10-23 | 2019-10-11 | 开采夫(杭州)科技有限公司 | 基于分布式网络的标准文件io操作系统及方法 |
CN110321374B (zh) * | 2018-10-23 | 2022-03-25 | 开采夫(杭州)科技有限公司 | 基于分布式网络的标准文件io操作系统及方法 |
CN109976763A (zh) * | 2019-03-25 | 2019-07-05 | 联想(北京)有限公司 | 一种代码处理方法、装置、电子设备及计算系统 |
CN110533183A (zh) * | 2019-08-30 | 2019-12-03 | 东南大学 | 一种流水线分布式深度学习中异构网络感知的模型划分与任务放置方法 |
CN113760262A (zh) * | 2021-01-21 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 任务处理方法、装置、计算机系统和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104794095B (zh) | 2018-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104794095B (zh) | 分布式计算处理方法及装置 | |
CN108510082B (zh) | 对机器学习模型进行处理的方法及装置 | |
CN109426574B (zh) | 分布式计算系统,分布式计算系统中数据传输方法和装置 | |
US20180095738A1 (en) | Method, device, and system for creating a massively parallilized executable object | |
US10678444B2 (en) | Optimizing serverless computing using a distributed computing framework | |
CN111104120B (zh) | 神经网络编译方法、系统及相应异构计算平台 | |
CN111507476A (zh) | 部署机器学习模型的方法、设备和计算机程序产品 | |
TWI710913B (zh) | 跨網路執行元組圖形程式之方法 | |
Yang et al. | Launchpad: A programming model for distributed machine learning research | |
CN112235344A (zh) | 一种面向分布式机器学习的稀疏通信模型的实现方法 | |
TW201913405A (zh) | 用於元組圖形程式之子圖內最佳化之方法 | |
KR100738004B1 (ko) | 하이브리드 p2p 네트워크 지능형 분산 컴파일러 시스템및 그 방법과 상기 방법을 실현시키기 위한 프로그램을기록한 컴퓨터로 읽을 수 있는 기록매체 | |
US9880823B1 (en) | Method for translating multi modal execution dependency graph with data interdependencies to efficient application on homogenous big data processing platform | |
WO2022166480A1 (zh) | 任务调度方法、装置及系统 | |
EP4261691A1 (en) | Method and device for optimizing computational graph | |
CN112465112B (zh) | 基于nGraph的GPU后端分布式训练方法和系统 | |
CN116775041B (zh) | 基于流计算和rete算法的实时决策引擎实现方法 | |
Rakadjiev et al. | Parallel SMT solving and concurrent symbolic execution | |
TW201913427A (zh) | 用於元組圖形程式之類型推論之系統及跨越網路執行元組圖形程式之方法 | |
WO2023221626A1 (zh) | 一种内存分配的方法和装置 | |
JP2018081592A (ja) | コンパイルプログラム、コンパイル方法、およびコンパイル装置 | |
CN111221860A (zh) | 基于大数据的混合查询优化方法及装置 | |
CN115729648A (zh) | 基于有向无环图的算子调度方法、装置和系统 | |
CN114860228A (zh) | 基于Module Federation技术实现的模块中心化共享系统 | |
CN109460296B (zh) | 一种处理器的资源分配方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |