CN104915187A - 一种图模型计算的方法及装置 - Google Patents
一种图模型计算的方法及装置 Download PDFInfo
- Publication number
- CN104915187A CN104915187A CN201410091566.XA CN201410091566A CN104915187A CN 104915187 A CN104915187 A CN 104915187A CN 201410091566 A CN201410091566 A CN 201410091566A CN 104915187 A CN104915187 A CN 104915187A
- Authority
- CN
- China
- Prior art keywords
- cluster
- dll
- parallel
- dynamic link
- link library
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例公开了一种图模型计算的方法及装置,涉及电子信息技术领域,能够在图模型计算过程中,减少计算设备或节点之间的通信开销,提高图模型计算的计算性能。本发明的方法包括:接收图模型数据,并将所述图模型数据划分为至少两个数据组;获取集群分组配置文件,根据所述集群分组配置文件,将所述节点划分为至少两个集群,所述集群分组配置文件用于配置划分集群的方法;将所述数据组导入所述集群,通过所述集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。本发明适用于计算图模型数据的场景中。
Description
技术领域
本发明涉及电子信息技术领域,尤其涉及一种图模型计算的方法及装置。
背景技术
现阶段,图模型在各个领域中有着广泛的应用,比如:将互联网、社交网络、蛋白质交互网络等表示成图模型的数据结构,之后再对图模型进行分析和挖掘,从而实现更方便的对互联网、社交网络、蛋白质交互网络等数据进行分析和挖掘。但是,随着数据的增长,图模型中往往包含了上亿个点和上亿条边,图模型的数据规模已经超过了一台计算机的内存容量,所以在现有技术中,采用Pregel分布式并行框架或GraphLab分布式并行框架来处理图模型,这两种分布式并行框架支持细粒度并行计算方法,将图模型以分割边或分割顶点的方式,将分割出的边或顶点存放在多台计算设备上进行计算,每两台计算设备之间都需要进行通信,综合计算设备之间的通信结果,得到最后的细粒度并行计算结果。
但是,现阶段的图模型中往往包含了上亿个顶点和上亿条边,在细粒度并行计算方法中,图模型中大量的顶点和边需要大量的计算设备来存放并计算,因为每两台计算设备之间都需要进行通信,大量的计算设备之间存在的通信开销过大,降低了图模型计算的计算性能。
发明内容
本发明的实施例提供一种图模型计算的方法及装置,在图模型计算过程中,能够减少计算设备或节点之间的通信开销,提高图模型计算的计算性能。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种图模型计算的方法,用于一种分层***,所述分层***包括至少两个集群,一个集群至少包括一个节点,所述方法包括:
接收图模型数据,并将所述图模型数据划分为至少两个数据组;
获取集群分组配置文件,根据所述集群分组配置文件,将所述节点划分为至少两个集群,所述集群分组配置文件用于配置划分集群的方法;
将所述数据组导入所述集群,通过所述集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。
结合第一方面,在第一种可能的实现方式中,所述方法用于图模型计算分布式并行框架,所述图模型计算分布式并行框架包括编程接口、源源编译器和运行***;所述编程接口包括粗粒度编程接口和细粒度编程接口;所述源源编译器用于将源程序编译为所述运行***执行的指令;所述运行***用于执行所述源源编译器编译生成的指令。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述将所述图模型数据划分为至少两个数据组,包括:
从所述编程接口获取粗细粒度并行源程序,根据所述粗细粒度并行源程序,通过所述源源编译器,生成数据划分指令;
根据所述数据划分指令,通过所述运行***,将所述图模型数据划分为至少两个数据组。
结合第一方面或第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述通过所述集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果,包括:
从所述编程接口获取所述粗细粒度并行源程序,根据所述粗细粒度并行源程序,划分迭代空间;
根据所述迭代空间,通过所述源源编译器,生成并行计算指令和合并计算指令;
根据所述并行计算指令,通过所述运行***,利用所述每一个集群中的节点进行细粒度并行计算,得到所述每一个集群的细粒度并行计算结果;
根据所述合并计算指令,将所述每一个集群的细粒度并行计算结果进行合并计算,得到所述粗细粒度并行计算结果。
结合第一方面的第二种或第三种可能的实现方式,在第四种可能的实现方式中,在所述生成数据划分指令之后,包括:
执行第一同步指令,所述第一同步指令用于保证所述图模型数据被划分为数据组的完成;
在所述生成并行计算指令和合并计算指令之后,包括:
执行第二同步指令,所述第二同步指令用于保证所述每一个集群中的节点的细粒度并行计算和所述合并计算的完成。
结合第一方面或第一方面的第一种至第四种中任意一种可能的实现方式,在第五种可能的实现方式中,还包括:
获取调用的所述编程接口;
当调用的所述编程接口为所述粗粒度编程接口时,进行粗粒度并行计算;
当调用的所述编程接口为所述细粒度编程接口时,进行细粒度并行计算;
当调用的所述编程接口为所述粗粒度编程接口和所述细粒度编程接口时,进行粗细粒度并行计算。
第二方面,本发明实施例提供一种图模型计算的装置,用于一种分层***,所述分层***包括至少两个集群,一个集群至少包括一个节点,所述装置包括:
数据分组模块,用于接收图模型数据,并将所述图模型数据划分为至少两个数据组;
集群划分模块,用于获取集群分组配置文件,根据所述集群分组配置文件,将所述节点划分为至少两个集群,所述集群分组配置文件用于配置划分集群的方法;
计算模块,用于将所述数据组导入所述集群,通过所述集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。
结合第二方面,在第一种可能的实现方式中,所述装置用于图模型计算分布式并行框架,所述图模型计算分布式并行框架包括编程接口、源源编译器和运行***;所述编程接口包括粗粒度编程接口和细粒度编程接口;所述源源编译器用于将源程序编译为所述运行***执行的指令;所述运行***用于执行所述源源编译器编译生成的指令。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述数据分组模块,包括:
数据指令生成单元,用于从所述编程接口获取粗细粒度并行源程序,根据所述粗细粒度并行源程序,通过所述源源编译器,生成数据划分指令;
数据划分单元,用于根据所述数据划分指令,通过所述运行***,将所述图模型数据划分为至少两个数据组。
结合第二方面或第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述计算模块,包括:
迭代空间划分单元,用于从所述编程接口获取所述粗细粒度并行源程序,根据所述粗细粒度并行源程序,划分迭代空间;
计算指令生成单元,用于根据所述迭代空间,通过所述源源编译器,生成并行计算指令和合并计算指令;
细粒度计算单元,用于根据所述并行计算指令,通过所述运行***,利用所述每一个集群中的节点进行细粒度并行计算,得到所述每一个集群的细粒度并行计算结果;
合并计算单元,用于根据所述合并计算指令,将所述每一个集群的细粒度并行计算结果进行合并计算,得到所述粗细粒度并行计算结果。
结合第二方面的第二种或第三种可能的实现方式,在第四种可能的实现方式中,所述数据分组模块,还包括:
第一同步单元,用于执行第一同步指令,所述第一同步指令用于保证所述图模型数据被划分为数据组的完成;
所述计算模块,还包括:
第二同步单元,用于执行第二同步指令,所述第二同步指令用于保证所述每一个集群中的节点的细粒度并行计算和所述合并计算的完成。
结合第二方面或第二方面的第一种至第四种中任意一种可能的实现方式,在第五种可能的实现方式中,还包括:
接口获取模块,用于获取调用的所述编程接口;
粗粒度模块,用于当调用的所述编程接口为所述粗粒度编程接口时,进行粗粒度并行计算;
细粒度模块,用于当调用的所述编程接口为所述细粒度编程接口时,进行细粒度并行计算;
粗细粒度模块,用于当调用的所述编程接口为所述粗粒度编程接口和所述细粒度编程接口时,进行粗细粒度并行计算。
本发明实施例提供的一种图模型计算的方法及装置,能够接收图模型数据,并将图模型数据划分为至少两个数据组;根据集群分组配置文件,将节点划分为至少两个集群;将数据组导入集群,通过集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。与使用只支持细粒度并行计算方法的Pregel分布式并行框架或GraphLab分布式并行框架的现有技术相比,本方案将图模型数据分组,将分析、计算图模型数据的节点分成至少两个集群,由这个集群中的节点进行细粒度并行计算,同一个集群中的节点存在两两互相通信,不同的集群中的节点不存在通信,避免了现有技术中,所有参与细粒度并行计算的计算设备或节点都需要进行两两通信的情况,因此,本发明的技术方案减少了计算设备或节点之间的通信开销,提高了图模型计算的计算性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种分层***的结构示意图;
图2为本发明实施例提供的一种图模型计算的方法的流程图;
图2a为本发明实施例提供的一种图模型计算分布式并行框架的结构示意图;
图3为本发明实施例提供的一种图模型计算的方法的一种具体实现方式的流程图;
图4为本发明实施例提供的一种图模型计算的方法的另一种具体实现方式的流程图;
图5为本发明实施例提供的一种图模型计算的方法的又一种具体实现方式的流程图;
图6为本发明实施例提供的一种图模型计算的装置的结构示意图;
图7为本发明实施例提供的一种图模型计算的装置的一种具体实现方式的结构示意图;
图8为本发明实施例提供的一种图模型计算的装置的另一种具体实现方式的结构示意图;
图9为本发明实施例提供的一种图模型计算的装置的又一种具体实现方式的结构示意图;
图10为本发明实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供的技术方案可以应用于一种分层***,如图1所示,该分层***包括至少两个集群,一个集群包括至少一个节点,节点参与细粒度并行计算。其中,节点可以是计算机等实体计算设备,也可以是***中的处理计算的虚拟机等,集群可以是包括多个计算机或虚拟机等的工作组,一个集群可以完成一个工作任务。
本发明实施例提供了一种图模型计算的方法,用于一种分层***,该分层***包括至少两个集群,其中,一个集群包括至少一个节点,方法如图2所示,包括:
101,接收图模型数据,并将所述图模型数据划分为至少两个数据组。
其中,可以由用户设置将图模型数据划分为数据组的方法,分层***也可以根据图模型的类型,分层***在已存储的划分数据组的方法中选取合适的划分数据组方法,将接受的图模型数据划分为至少两个数据组。具体的划分数据组的方法可以由计算设备运行编程代码、执行指令实现。
102,获取集群分组配置文件,根据所述集群分组配置文件,将所述节点划分为至少两个集群。
其中,集群分组配置文件用于配置划分集群的方法,集群分组配置文件可以由用户根据实际情况编写,也可以图模型的类型,由分层***在已存储的各个类型的集群分组配置文件中选取合适的集群分组配置文件,将节点划分为至少两个集群。
需要说明的是,节点可以是计算机等实体设备,也可以是虚拟机等虚拟设备。
103,将所述数据组导入所述集群,通过所述集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。
其中,将数据组导入集群,并将数据组中的数据分配给集群中的节点,通过节点来对数据进行细粒度计算,这样每一个集群都会得到一个细粒度并行计算结果,根据得到的所有细粒度计算结果,可以得到最终的粗细粒度并行计算结果。一个集群对应一个工作任务,工作任务相当于是粗粒度并行计算。
本发明实施例提供的一种图模型计算的方法,能够接收图模型数据,并将图模型数据划分为至少两个数据组;根据集群分组配置文件,将节点划分为至少两个集群;将数据组导入集群,通过集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。与使用只支持细粒度并行计算方法的Pregel分布式并行框架或GraphLab分布式并行框架的现有技术相比,本方案将图模型数据分组,将分析、计算图模型数据的节点分成至少两个集群,由这个集群中的节点进行细粒度并行计算,同一个集群中的节点存在两两互相通信,不同的集群中的节点不存在通信,避免了现有技术中,所有参与细粒度并行计算的计算设备或节点都需要进行两两通信的情况,因此,本发明的技术方案减少了计算设备或节点之间的通信开销,提高了图模型计算的计算性能。
进一步的,在图2所示的方案的基础上,本发明实施例还提供了一种图模型计算的方法的具体方案,具体的,该方案应用于图模型计算分布式并行框架,如图2a所示,图模型计算分布式并行框架包括编程接口、源源编译器和运行***,编程接口包括粗粒度编程接口和细粒度编程接口。本方案对图2所示的101和103的执行过程进行进一步细化,其中,101可以具体实现为1011和1012,103可以具体实现为1031-1034,如图3所示,包括:
1011,接收图模型数据,从所述编程接口获取粗细粒度并行源程序,根据所述粗细粒度并行源程序,通过所述源源编译器,生成数据划分指令。
其中,编程接口包括粗粒度编程接口和细粒度编程接口,编程接口用于接收粗细粒度并行源程序。如图2a所示,粗粒度编程接口形式为Iterators:foreach(datatype item:domain),细粒度编程接口形式为Vertex:gather(),apply(),scatter()。源源编译器用于将源程序编译为运行***可以执行的指令,在本方案的本步骤中,源源编译器分析粗细粒度并行源程序中的foreach结构,根据foreach结构,找到粗细粒度并行源程序中关于数据划分的源程序部分,并根据数据划分的源程序部分,编译并生成数据划分指令。
1012,根据所述数据划分指令,通过所述运行***,将所述图模型数据划分为至少两个数据组。
其中,运行***用于执行源源编译器编译生成的指令。在本方案的本步骤中,运行***执行数据划分指令,将图模型数据划分为至少两个数据组。
1031,从所述编程接口获取所述粗细粒度并行源程序,根据所述粗细粒度并行源程序,划分迭代空间。
其中,编程接口包括粗粒度编程接口和细粒度编程接口,编程接口用于接收粗细粒度并行源程序。粗粒度编程接口形式为Iterators:foreach(datatype item:domain),细粒度编程接口形式为Vertex:gather(),apply(),scatter()。源源编译器用于将源程序编译为运行***可以执行的指令,在本方案的本步骤中,根据粗细粒度并行源程序中的foreach结构来划分迭代空间,迭代空间表示工作任务的范围,比如:图模型数据共有编号为1—100的100个顶点,划分迭代空间后,迭代空间A包括编号为1—30的顶点,迭代空间B包括编号为31—70的顶点,迭代空间C包括编号为71—100的顶点。
1032,根据所述迭代空间,通过所述源源编译器,生成并行计算指令和合并计算指令。
其中,根据利用粗细粒度并行源程序中的foreach结构划分的迭代空间,源源编译器编译生成并行计算指令和合并计算指令。
1033,根据所述并行计算指令,通过所述运行***,利用所述每一个集群中的节点进行细粒度并行计算,得到所述每一个集群的细粒度并行计算结果。
其中,运行***用于执行源源编译器编译生成的指令。在本方案的本步骤中,运行***执行并行计算指令,利用每一个集群中的节点进行细粒度计算,一个集群内的节点进行细粒度并行计算,得到一个细粒度并行计算结果。所以每一个集群可以得到一个细粒度并行计算结果。
1034,根据所述合并计算指令,将所述每一个集群的细粒度并行计算结果进行合并计算,得到所述粗细粒度并行计算结果。
其中,运行***用于执行源源编译器编译生成的指令。在本方案的本步骤中,运行***执行合并计算指令,将1033中得到的每一个集群的系粒度并行计算结果进行合并计算,相当于集群与集群进行通信,得到最终的粗细粒度并行计算结果。
需要说明的是,本方案的流程与框架结构如图2a所示,实现粗粒度并行计算的是集群,实现细粒度并行计算的是集群中的节点,其中,Master的主要作用是将数据组和工作任务分配给集群,ZooKeeper的主要作用是监控集群及集群中的节点的状态。
本发明实施例提供的一种图模型计算的方法,能够接收图模型数据,根据粗细粒度并行源程序,生成数据划分指令,将图模型数据划分为至少两个数据组;根据集群分组配置文件,将节点划分为至少两个集群;将数据组导入集群,根据粗细粒度并行源程序,划分迭代空间,并生成并行计算指令和合并计算指令,利用集群中的节点进行细粒度并行计算,根据每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。与使用只支持细粒度并行计算方法的Pregel分布式并行框架或GraphLab分布式并行框架的现有技术相比,本方案将图模型数据分组,将分析、计算图模型数据的节点分成至少两个集群,由这个集群中的节点进行细粒度并行计算,同一个集群中的节点存在两两互相通信,不同的集群中的节点不存在通信,避免了现有技术中,所有参与细粒度并行计算的计算设备或节点都需要进行两两通信的情况,因此,本发明的技术方案减少了计算设备或节点之间的通信开销,提高了图模型计算的计算性能;而且,通过源源编译器,将粗细粒度并行源程序编译为运行***可直接执行的指令,不需要人为操作,在不增加编程负担的前提下,充分利用了硬件资源。
此外,在图3所示的方案的基础上,本发明实施例还提供了一种图模型计算的方法的具体方案,增添了104和105,如图4所示,包括:
104,执行第一同步指令。
其中,第一同步指令用于保证图模型数据被划分为数据组的完成。在多份图模型数据相继输入运行***的情况下,为了防止在先输入的图模型数据划分数据组还未完成时,后输入的图模型数据就开始进行划分数据组的这种情况,执行第一同步指令,保证先输入的图模型数据划分数据组已经完成,才开始对后输入的图模型数据划分数据组。
105,执行第二同步指令。
其中,第二同步指令用于保证每一个集群中的节点的细粒度并行计算和合并计算的完成。在多份图模型数据相继输入运行***的情况下,为了防止在先输入的图模型数据在集群中的细粒度并行计算以及合并计算还未完成时,后输入的图模型数据就开始进行集群中的细粒度并行计算以及合并计算的情况,执行第二同步指令,保证先输入的图模型数据在集群中的细粒度并行计算以及合并计算已经完成,才开始对后输入的图模型数据进行集群中的细粒度并行计算以及合并计算。
本发明实施例提供的一种图模型计算的方法,能够接收图模型数据,根据粗细粒度并行源程序,生成数据划分指令,执行第一同步指令,将图模型数据划分为至少两个数据组;根据集群分组配置文件,将节点划分为至少两个集群;将数据组导入集群,根据粗细粒度并行源程序,划分迭代空间,并生成并行计算指令和合并计算指令,执行第二同步指令,利用集群中的节点进行细粒度并行计算,根据每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。与使用只支持细粒度并行计算方法的Pregel分布式并行框架或GraphLab分布式并行框架的现有技术相比,本方案将图模型数据分组,将分析、计算图模型数据的节点分成至少两个集群,由这个集群中的节点进行细粒度并行计算,同一个集群中的节点存在两两互相通信,不同的集群中的节点不存在通信,避免了现有技术中,所有参与细粒度并行计算的计算设备或节点都需要进行两两通信的情况,因此,本发明的技术方案减少了计算设备或节点之间的通信开销,提高了图模型计算的计算性能;而且,通过源源编译器,将粗细粒度并行源程序编译为运行***可直接执行的指令,不需要人为操作,在不增加编程负担的前提下,充分利用了硬件资源;执行第一同步指令和第二同步指令,可以保证不同图模型数据之间处理过程的隔离,避免了造成不同图模型数据之间处理过程混杂的情况,保证了图模型计算的正确率。
可选的,在图4所示的方案的基础上,本发明实施例还提供了一种图模型计算的方法的具体方案,可以在101或1011之前增加106-109,如图5所示,包括:
106,获取调用的所述编程接口。
其中,编程接口包括粗粒度编程接口和细粒度编程接口,可以调用其中的任意一个接口,也可以同时调用粗粒度编程接口和细粒度编程接口。
107,当调用的所述编程接口为所述粗粒度编程接口时,进行粗粒度并行计算。
108,当调用的所述编程接口为所述细粒度编程接口时,进行细粒度并行计算。
109,当调用的所述编程接口为所述粗粒度编程接口和所述细粒度编程接口时,进行粗细粒度并行计算。
其中,当调用的所述编程接口为所述粗粒度编程接口和所述细粒度编程接口时,进行图模型计算的过程可以参考图2-4所示的方案。
本发明实施例提供的一种图模型计算的方法,能够调用不同的编程接口,并根据调用的编程接口,使用不同的图模型计算法,如:粗粒度并行计算、细粒度并行计算或粗细粒度并行计算。当调用的编程接口为粗粒度编程接口和细粒度编程接口时,接收图模型数据,根据粗细粒度并行源程序,生成数据划分指令,执行第一同步指令,将图模型数据划分为至少两个数据组;根据集群分组配置文件,将节点划分为至少两个集群;将数据组导入集群,根据粗细粒度并行源程序,划分迭代空间,并生成并行计算指令和合并计算指令,执行第二同步指令,利用集群中的节点进行细粒度并行计算,根据每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。与使用只支持细粒度并行计算方法的Pregel分布式并行框架或GraphLab分布式并行框架的现有技术相比,本方案将图模型数据分组,将分析、计算图模型数据的节点分成至少两个集群,由这个集群中的节点进行细粒度并行计算,同一个集群中的节点存在两两互相通信,不同的集群中的节点不存在通信,避免了现有技术中,所有参与细粒度并行计算的计算设备或节点都需要进行两两通信的情况,因此,本发明的技术方案减少了计算设备或节点之间的通信开销,提高了图模型计算的计算性能;而且,通过源源编译器,将粗细粒度并行源程序编译为运行***可直接执行的指令,不需要人为操作,在不增加编程负担的前提下,充分利用了硬件资源;执行第一同步指令和第二同步指令,可以保证不同图模型数据之间处理过程的隔离,避免了造成不同图模型数据之间处理过程混杂的情况,保证了图模型计算的正确率;而且,运行***可以调用不同的编程接口,根据编程接口,确定图模型计算方法,本方案支持三种图模型并行计算方法,提高了图模型计算的灵活性。
本发明实施例提供一种图模型计算的装置200,装置200可以用于一种分层***,所述分层***包括至少两个集群,一个集群至少包括一个节点。如图6所示,装置200包括:
数据分组模块201,用于接收图模型数据,并将所述图模型数据划分为至少两个数据组。
集群划分模块202,用于获取集群分组配置文件,根据所述集群分组配置文件,将所述节点划分为至少两个集群。
其中,集群分组配置文件用于配置划分集群的方法。
计算模块203,用于将所述数据组导入所述集群,通过所述集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。
本发明实施例提供的一种图模型计算的装置,能够接收图模型数据,并将图模型数据划分为至少两个数据组;根据集群分组配置文件,将节点划分为至少两个集群;将数据组导入集群,通过集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。与使用只支持细粒度并行计算方法的Pregel分布式并行框架或GraphLab分布式并行框架的现有技术相比,本方案将图模型数据分组,将分析、计算图模型数据的节点分成至少两个集群,由这个集群中的节点进行细粒度并行计算,同一个集群中的节点存在两两互相通信,不同的集群中的节点不存在通信,避免了现有技术中,所有参与细粒度并行计算的计算设备或节点都需要进行两两通信的情况,因此,本发明的技术方案减少了计算设备或节点之间的通信开销,提高了图模型计算的计算性能。
优选的,装置200用于图模型计算分布式并行框架,图模型计算分布式并行框架包括编程接口、源源编译器和运行***;编程接口包括粗粒度编程接口和细粒度编程接口;源源编译器用于将源程序编译为运行***执行的指令;运行***用于执行源源编译器生成的指令。
进一步的,如图7所示,数据分组模块201,包括:
数据指令生成单元2011,用于从所述编程接口获取粗细粒度并行源程序,根据所述粗细粒度并行源程序,通过所述源源编译器,生成数据划分指令。
数据划分单元2012,用于根据所述数据划分指令,通过所述运行***,将所述图模型数据划分为至少两个数据组。
计算模块203,包括:
迭代空间划分单元2031,用于从所述编程接口获取所述粗细粒度并行源程序,根据所述粗细粒度并行源程序,划分迭代空间。
计算指令生成单元2032,用于根据所述迭代空间,通过所述源源编译器,生成并行计算指令和合并计算指令。
细粒度计算单元2033,用于根据所述并行计算指令,通过所述运行***,利用所述每一个集群中的节点进行细粒度并行计算,得到所述每一个集群的细粒度并行计算结果。
合并计算单元2034,用于根据所述合并计算指令,将所述每一个集群的细粒度并行计算结果进行合并计算,得到所述粗细粒度并行计算结果。
本发明实施例提供的一种图模型计算的装置,能够接收图模型数据,根据粗细粒度并行源程序,生成数据划分指令,将图模型数据划分为至少两个数据组;根据集群分组配置文件,将节点划分为至少两个集群;将数据组导入集群,根据粗细粒度并行源程序,划分迭代空间,并生成并行计算指令和合并计算指令,利用集群中的节点进行细粒度并行计算,根据每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。与使用只支持细粒度并行计算方法的Pregel分布式并行框架或GraphLab分布式并行框架的现有技术相比,本方案将图模型数据分组,将分析、计算图模型数据的节点分成至少两个集群,由这个集群中的节点进行细粒度并行计算,同一个集群中的节点存在两两互相通信,不同的集群中的节点不存在通信,避免了现有技术中,所有参与细粒度并行计算的计算设备或节点都需要进行两两通信的情况,因此,本发明的技术方案减少了计算设备或节点之间的通信开销,提高了图模型计算的计算性能;而且,通过源源编译器,将粗细粒度并行源程序编译为运行***可直接执行的指令,不需要人为操作,在不增加编程负担的前提下,充分利用了硬件资源。
此外,如图8所示,数据分组模块201,还包括:
第一同步单元2013,用于执行第一同步指令。
其中,第一同步指令用于保证图模型数据被划分为数据组的完成。
计算模块203,还包括:
第二同步单元2035,用于执行第二同步指令。
其中,第二同步指令用于保证每一个集群中的节点的细粒度并行计算和合并计算的完成。
本发明实施例提供的一种图模型计算的装置,能够接收图模型数据,根据粗细粒度并行源程序,生成数据划分指令,执行第一同步指令,将图模型数据划分为至少两个数据组;根据集群分组配置文件,将节点划分为至少两个集群;将数据组导入集群,根据粗细粒度并行源程序,划分迭代空间,并生成并行计算指令和合并计算指令,执行第二同步指令,利用集群中的节点进行细粒度并行计算,根据每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。与使用只支持细粒度并行计算方法的Pregel分布式并行框架或GraphLab分布式并行框架的现有技术相比,本方案将图模型数据分组,将分析、计算图模型数据的节点分成至少两个集群,由这个集群中的节点进行细粒度并行计算,同一个集群中的节点存在两两互相通信,不同的集群中的节点不存在通信,避免了现有技术中,所有参与细粒度并行计算的计算设备或节点都需要进行两两通信的情况,因此,本发明的技术方案减少了计算设备或节点之间的通信开销,提高了图模型计算的计算性能;而且,通过源源编译器,将粗细粒度并行源程序编译为运行***可直接执行的指令,不需要人为操作,在不增加编程负担的前提下,充分利用了硬件资源;执行第一同步指令和第二同步指令,可以保证不同图模型数据之间处理过程的隔离,避免了造成不同图模型数据之间处理过程混杂的情况,保证了图模型计算的正确率。
可选的,如图9所示,装置200,还包括:
接口获取模块204,用于获取调用的所述编程接口。
粗粒度模块205,用于当调用的所述编程接口为所述粗粒度编程接口时,进行粗粒度并行计算。
细粒度模块206,用于当调用的所述编程接口为所述细粒度编程接口时,进行细粒度并行计算。
粗细粒度模块207,用于当调用的所述编程接口为所述粗粒度编程接口和所述细粒度编程接口时,进行粗细粒度并行计算。
本发明实施例提供的一种图模型计算的装置,能够调用不同的编程接口,并根据调用的编程接口,使用不同的图模型计算法,如:粗粒度并行计算、细粒度并行计算或粗细粒度并行计算。当调用的编程接口为粗粒度编程接口和细粒度编程接口时,接收图模型数据,根据粗细粒度并行源程序,生成数据划分指令,执行第一同步指令,将图模型数据划分为至少两个数据组;根据集群分组配置文件,将节点划分为至少两个集群;将数据组导入集群,根据粗细粒度并行源程序,划分迭代空间,并生成并行计算指令和合并计算指令,执行第二同步指令,利用集群中的节点进行细粒度并行计算,根据每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。与使用只支持细粒度并行计算方法的Pregel分布式并行框架或GraphLab分布式并行框架的现有技术相比,本方案将图模型数据分组,将分析、计算图模型数据的节点分成至少两个集群,由这个集群中的节点进行细粒度并行计算,同一个集群中的节点存在两两互相通信,不同的集群中的节点不存在通信,避免了现有技术中,所有参与细粒度并行计算的计算设备或节点都需要进行两两通信的情况,因此,本发明的技术方案减少了计算设备或节点之间的通信开销,提高了图模型计算的计算性能;而且,通过源源编译器,将粗细粒度并行源程序编译为运行***可直接执行的指令,不需要人为操作,在不增加编程负担的前提下,充分利用了硬件资源;执行第一同步指令和第二同步指令,可以保证不同图模型数据之间处理过程的隔离,避免了造成不同图模型数据之间处理过程混杂的情况,保证了图模型计算的正确率;而且,运行***可以调用不同的编程接口,根据编程接口,确定图模型计算方法,本方案支持三种图模型并行计算方法,提高了图模型计算的灵活性。
本发明还提供一种计算设备300,计算设备300用于一种分层***,分层***包括至少两个集群,一个集群至少包括一个节点。优选的,计算设备300也可以应用于图模型计算分布式并行框架,图模型计算分布式并行框架包括编程接口、源源编译器和运行***;编程接口包括粗粒度编程接口和细粒度编程接口;源源编译器用于将源程序编译为运行***执行的指令;运行***用于执行源源编译器生成的指令。如图10所示,该计算设备300包括:至少一个处理器301,例如CPU,至少一个网络接口304或者其他用户接口303,硬盘305,内存306,至少一个通信总线302。通信总线302用于实现这些组件之间的连接通信。可选的,还包含用户接口303,包括显示器,键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触感显示屏)。硬盘305可选的可以包含至少一个位于远离前述处理器301的存储装置。
在一些实施方式中,硬盘305存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作***3051,包含各种***程序,用于实现各种基础业务以及处理基于硬件的任务。
应用程序3052,包含各种应用程序,用于实现各种应用业务。
应用程序3052中包括但不限于数据分组模块201、集群划分模块202、计算模块203、数据指令生成单元2011、数据划分单元2012、迭代空间划分单元2031、计算指令生成单元2032、细粒度计算单元2033、合并计算单元2034、第一同步单元2013、第二同步单元2035、接口获取模块204、粗粒度模块205、细粒度模块206、粗细粒度模块207。
应用程序3052中各模块的具体实现参见图6-9所示实施例中的相应模块,在此不赘述。处理器301可以从硬盘305中获取操作***3051和应用程序3052等数据,并加载至内存306中,以便于处理器301运行或执行操作***3051和应用程序3052等数据。
具体地,处理器301用于接收图模型数据,并将所述图模型数据划分为至少两个数据组;以及,用于获取集群分组配置文件,根据所述集群分组配置文件,将所述节点划分为至少两个集群,所述集群分组配置文件用于配置划分集群的方法;以及,用于将所述数据组导入所述集群,通过所述集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。
进一步的,处理器301还可以用于从所述编程接口获取粗细粒度并行源程序,根据所述粗细粒度并行源程序,通过所述源源编译器,生成数据划分指令;以及,用于根据所述数据划分指令,通过所述运行***,将所述图模型数据划分为至少两个数据组。
进一步的,处理器301还可以用于从所述编程接口获取所述粗细粒度并行源程序,根据所述粗细粒度并行源程序,划分迭代空间;以及,用于根据所述迭代空间,通过所述源源编译器,生成并行计算指令和合并计算指令;以及,用于根据所述并行计算指令,通过所述运行***,利用所述每一个集群中的节点进行细粒度并行计算,得到所述每一个集群的细粒度并行计算结果;以及,用于根据所述合并计算指令,将所述每一个集群的细粒度并行计算结果进行合并计算,得到所述粗细粒度并行计算结果。
此外,处理器301还可以用于执行第一同步指令,所述第一同步指令用于保证所述图模型数据被划分为数据组的完成;以及,用于执行第二同步指令,所述第二同步指令用于保证所述每一个集群中的节点的细粒度并行计算和所述合并计算的完成。
可选的,处理器301还可以用于获取调用的所述编程接口;以及,用于当调用的所述编程接口为所述粗粒度编程接口时,进行粗粒度并行计算;以及,用于当调用的所述编程接口为所述细粒度编程接口时,进行细粒度并行计算;以及,用于当调用的所述编程接口为所述粗粒度编程接口和所述细粒度编程接口时,进行粗细粒度并行计算。
本发明实施例提供的一种计算设备,能够调用不同的编程接口,并根据调用的编程接口,使用不同的图模型计算法,如:粗粒度并行计算、细粒度并行计算或粗细粒度并行计算。当调用的编程接口为粗粒度编程接口和细粒度编程接口时,接收图模型数据,根据粗细粒度并行源程序,生成数据划分指令,执行第一同步指令,将图模型数据划分为至少两个数据组;根据集群分组配置文件,将节点划分为至少两个集群;将数据组导入集群,根据粗细粒度并行源程序,划分迭代空间,并生成并行计算指令和合并计算指令,执行第二同步指令,利用集群中的节点进行细粒度并行计算,根据每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。与使用只支持细粒度并行计算方法的Pregel分布式并行框架或GraphLab分布式并行框架的现有技术相比,本方案将图模型数据分组,将分析、计算图模型数据的节点分成至少两个集群,由这个集群中的节点进行细粒度并行计算,同一个集群中的节点存在两两互相通信,不同的集群中的节点不存在通信,避免了现有技术中,所有参与细粒度并行计算的计算设备或节点都需要进行两两通信的情况,因此,本发明的技术方案减少了计算设备或节点之间的通信开销,提高了图模型计算的计算性能;而且,通过源源编译器,将粗细粒度并行源程序编译为运行***可直接执行的指令,不需要人为操作,在不增加编程负担的前提下,充分利用了硬件资源;执行第一同步指令和第二同步指令,可以保证不同图模型数据之间处理过程的隔离,避免了造成不同图模型数据之间处理过程混杂的情况,保证了图模型计算的正确率;而且,运行***可以调用不同的编程接口,根据编程接口,确定图模型计算方法,本方案支持三种图模型并行计算方法,提高了图模型计算的灵活性。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (12)
1.一种图模型计算的方法,其特征在于,用于一种分层***,所述分层***包括至少两个集群,一个集群至少包括一个节点,所述方法包括:
接收图模型数据,并将所述图模型数据划分为至少两个数据组;
获取集群分组配置文件,根据所述集群分组配置文件,将所述节点划分为至少两个集群,所述集群分组配置文件用于配置划分集群的方法;
将所述数据组导入所述集群,通过所述集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。
2.根据权利要求1所述的方法,其特征在于,所述方法用于图模型计算分布式并行框架,所述图模型计算分布式并行框架包括编程接口、源源编译器和运行***;所述编程接口包括粗粒度编程接口和细粒度编程接口;所述源源编译器用于将源程序编译为所述运行***执行的指令;所述运行***用于执行所述源源编译器编译生成的指令。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述图模型数据划分为至少两个数据组,包括:
从所述编程接口获取粗细粒度并行源程序,根据所述粗细粒度并行源程序,通过所述源源编译器,生成数据划分指令;
根据所述数据划分指令,通过所述运行***,将所述图模型数据划分为至少两个数据组。
4.根据权利要求1或2所述的方法,其特征在于,所述通过所述集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果,包括:
从所述编程接口获取所述粗细粒度并行源程序,根据所述粗细粒度并行源程序,划分迭代空间;
根据所述迭代空间,通过所述源源编译器,生成并行计算指令和合并计算指令;
根据所述并行计算指令,通过所述运行***,利用所述每一个集群中的节点进行细粒度并行计算,得到所述每一个集群的细粒度并行计算结果;
根据所述合并计算指令,将所述每一个集群的细粒度并行计算结果进行合并计算,得到所述粗细粒度并行计算结果。
5.根据权利要求3或4所述的方法,其特征在于,在所述生成数据划分指令之后,包括:
执行第一同步指令,所述第一同步指令用于保证所述图模型数据被划分为数据组的完成;
在所述生成并行计算指令和合并计算指令之后,包括:
执行第二同步指令,所述第二同步指令用于保证所述每一个集群中的节点的细粒度并行计算和所述合并计算的完成。
6.根据权利要求1-5中任意一项所述的方法,其特征在于,还包括:
获取调用的所述编程接口;
当调用的所述编程接口为所述粗粒度编程接口时,进行粗粒度并行计算;
当调用的所述编程接口为所述细粒度编程接口时,进行细粒度并行计算;
当调用的所述编程接口为所述粗粒度编程接口和所述细粒度编程接口时,进行粗细粒度并行计算。
7.一种图模型计算的装置,其特征在于,用于一种分层***,所述分层***包括至少两个集群,一个集群至少包括一个节点,所述装置包括:
数据分组模块,用于接收图模型数据,并将所述图模型数据划分为至少两个数据组;
集群划分模块,用于获取集群分组配置文件,根据所述集群分组配置文件,将所述节点划分为至少两个集群,所述集群分组配置文件用于配置划分集群的方法;
计算模块,用于将所述数据组导入所述集群,通过所述集群中的节点进行细粒度并行计算,利用每一个集群的细粒度并行计算结果,得到粗细粒度并行计算结果。
8.根据权利要求7所述的装置,其特征在于,所述装置用于图模型计算分布式并行框架,所述图模型计算分布式并行框架包括编程接口、源源编译器和运行***;所述编程接口包括粗粒度编程接口和细粒度编程接口;所述源源编译器用于将源程序编译为所述运行***执行的指令;所述运行***用于执行所述源源编译器编译生成的指令。
9.根据权利要求7或8所述的装置,其特征在于,所述数据分组模块,包括:
数据指令生成单元,用于从所述编程接口获取粗细粒度并行源程序,根据所述粗细粒度并行源程序,通过所述源源编译器,生成数据划分指令;
数据划分单元,用于根据所述数据划分指令,通过所述运行***,将所述图模型数据划分为至少两个数据组。
10.根据权利要求7或8所述的装置,其特征在于,所述计算模块,包括:
迭代空间划分单元,用于从所述编程接口获取所述粗细粒度并行源程序,根据所述粗细粒度并行源程序,划分迭代空间;
计算指令生成单元,用于根据所述迭代空间,通过所述源源编译器,生成并行计算指令和合并计算指令;
细粒度计算单元,用于根据所述并行计算指令,通过所述运行***,利用所述每一个集群中的节点进行细粒度并行计算,得到所述每一个集群的细粒度并行计算结果;
合并计算单元,用于根据所述合并计算指令,将所述每一个集群的细粒度并行计算结果进行合并计算,得到所述粗细粒度并行计算结果。
11.根据权利要求9或10所述的装置,其特征在于,所述数据分组模块,还包括:
第一同步单元,用于执行第一同步指令,所述第一同步指令用于保证所述图模型数据被划分为数据组的完成;
所述计算模块,还包括:
第二同步单元,用于执行第二同步指令,所述第二同步指令用于保证所述每一个集群中的节点的细粒度并行计算和所述合并计算的完成。
12.根据权利要求7-11中任意一项所述的装置,其特征在于,还包括:
接口获取模块,用于获取调用的所述编程接口;
粗粒度模块,用于当调用的所述编程接口为所述粗粒度编程接口时,进行粗粒度并行计算;
细粒度模块,用于当调用的所述编程接口为所述细粒度编程接口时,进行细粒度并行计算;
粗细粒度模块,用于当调用的所述编程接口为所述粗粒度编程接口和所述细粒度编程接口时,进行粗细粒度并行计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410091566.XA CN104915187A (zh) | 2014-03-13 | 2014-03-13 | 一种图模型计算的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410091566.XA CN104915187A (zh) | 2014-03-13 | 2014-03-13 | 一种图模型计算的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104915187A true CN104915187A (zh) | 2015-09-16 |
Family
ID=54084272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410091566.XA Pending CN104915187A (zh) | 2014-03-13 | 2014-03-13 | 一种图模型计算的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104915187A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108460458A (zh) * | 2017-01-06 | 2018-08-28 | 谷歌有限责任公司 | 在图形处理单元上执行计算图 |
CN110233767A (zh) * | 2019-07-26 | 2019-09-13 | 苏州浪潮智能科技有限公司 | 分布式集群的服务配置方法、***、装置及可读存储介质 |
CN113792170A (zh) * | 2021-11-15 | 2021-12-14 | 支付宝(杭州)信息技术有限公司 | 图数据划分方法、装置和计算机设备 |
-
2014
- 2014-03-13 CN CN201410091566.XA patent/CN104915187A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108460458A (zh) * | 2017-01-06 | 2018-08-28 | 谷歌有限责任公司 | 在图形处理单元上执行计算图 |
CN110233767A (zh) * | 2019-07-26 | 2019-09-13 | 苏州浪潮智能科技有限公司 | 分布式集群的服务配置方法、***、装置及可读存储介质 |
CN113792170A (zh) * | 2021-11-15 | 2021-12-14 | 支付宝(杭州)信息技术有限公司 | 图数据划分方法、装置和计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liu et al. | A framework for general sparse matrix–matrix multiplication on GPUs and heterogeneous processors | |
Brown et al. | Implementing molecular dynamics on hybrid high performance computers–Particle–particle particle-mesh | |
Spafford et al. | Maestro: data orchestration and tuning for opencl devices | |
Francesquini et al. | On the energy efficiency and performance of irregular application executions on multicore, NUMA and manycore platforms | |
KR20140014090A (ko) | 기민 통신 오퍼레이터 | |
CN103853618A (zh) | 基于截止日期驱动的云***代价最小化资源分配方法 | |
Pickering et al. | Directive-based GPU programming for computational fluid dynamics | |
Diamantopoulos et al. | High-level synthesizable dataflow mapreduce accelerator for fpga-coupled data centers | |
US20140257769A1 (en) | Parallel algorithm for molecular dynamics simulation | |
Penna et al. | A comprehensive performance evaluation of the BinLPT workload‐aware loop scheduler | |
Clarke et al. | Fupermod: A framework for optimal data partitioning for parallel scientific applications on dedicated heterogeneous hpc platforms | |
CN104915187A (zh) | 一种图模型计算的方法及装置 | |
Boroujerdian et al. | FARSI: An early-stage design space exploration framework to tame the domain-specific system-on-chip complexity | |
Martínez del Amor et al. | Parallel simulation of probabilistic P systems on multicore platforms | |
Berthold et al. | Implementing parallel Google map-reduce in Eden | |
Church et al. | Iaas clouds vs. clusters for hpc: A performance study | |
Pan et al. | Parallel strategies of front-tracking method for simulation of multiphase flows | |
Hückelheim et al. | Vector forward mode automatic differentiation on simd/simt architectures | |
Campora Perez et al. | An efficient low‐rank Kalman filter for modern SIMD architectures | |
Aldegheri et al. | Rapid prototyping of embedded vision systems: Embedding computer vision applications into low-power heterogeneous architectures | |
Mondragon et al. | Scheduling in-situ analytics in next-generation applications | |
US20140040907A1 (en) | Resource assignment in a hybrid system | |
Sane et al. | Scalable in situ computation of Lagrangian representations via local flow maps | |
Jordans et al. | An efficient method for energy estimation of application specific instruction-set processors | |
Iturrarán-Viveros et al. | GPU computing with OpenCL to model 2D elastic wave propagation: exploring memory usage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150916 |