CN113065035A - 一种单机核外属性图计算方法 - Google Patents
一种单机核外属性图计算方法 Download PDFInfo
- Publication number
- CN113065035A CN113065035A CN202110334310.7A CN202110334310A CN113065035A CN 113065035 A CN113065035 A CN 113065035A CN 202110334310 A CN202110334310 A CN 202110334310A CN 113065035 A CN113065035 A CN 113065035A
- Authority
- CN
- China
- Prior art keywords
- block
- vertex
- attribute
- edge
- graph
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/906—Clustering; Classification
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种单机核外属性图计算方法。本发明构建属性图;将属性图的顶点集以外层不对称网格分图策略算法分簇;对得到的每个边集合以内层不对称网格分图策略算法细化分簇;按序重组得到的细粒度边集合;重组得到的边集合;构建拓扑数组和边的属性的数组;构建顶点的属性数组;根据用户给定的属性条件限制标记满足限制的拓扑子图;根据用户给定的计算任务流式遍历拓扑图。本发明优化了图算法对底层存储系统的利用,保留了单机核外图计算系统的优势,且无需对同一属性图的不同图计算任务重新分图。
Description
技术领域
本发明属于计算机科学技术领域,尤其涉及一种单机核外属性图计算方法。
背景技术
随着现实生活中图数据(如:社交网络、用户-物品网络、路网、交易网络等等)的快速增长,用户需要从这些图数据中挖掘具有潜在价值的信息的高效计算系统。由于现实场景下的图往往包含上十亿级的顶点和边,近年来,大规模图计算已成为研究领域中的热点问题。
大规模图计算系统主要可分为两类,即分布式系统和单机系统。分布式系统通常是处理大规模数据的自然的选择,目前已有许多分布式图计算系统的相关研究。由于分布式系统需要将图分布在集群的若干台机器上,故分布式系统需要把大规模图切分为若干子图,即“分图”(partitioning),并将这些子图分别分布到不同机器上。图的分散分布使得分布式系统执行图算法任务时不可避免地在机器间进行大量消息交换与合并。雪上加霜的是,现实世界中许多图的偏斜度分布(skewed degree distribution)、高密度(highdensity)和大直径(large diameter)等特征导致分布式系统产生诸如负载不平衡(loadimbalance),同步开销(synchronization overhead)和容错开销(fault toleranceoverhead)等问题。单机系统则能够有效避免机器间通信带来的问题。单机图计算系统又可细分为单机核内(in-memory)图计算系统和单机核外(out-of-core)图计算系统。单机核内图计算系统将图数据完全存放在内存中,其能够处理的图数据规模受内存大小的限制,而单机核外图计算系统则同时利用了机器的内存与外存存储和处理图数据,因此具有更佳的可扩展性。同时,相较于分布式系统,单机核外图计算系统仅允许内存和本地外存之间进行数据交换,从而大大降低了通信开销。
由于单机核外图计算系统涉及内外存之间的数据交换,引入分图策略能够更加有效组织数据,提升系统性能,因此现有单机核外图计算系统研究将分图策略作为主要问题之一考虑。“对称网格”分图策略是现有主流技术方案之一,其将顶点ID划分为若干个区间,根据边的源顶点ID所在区间确定该边所在网格的“行”,根据边的目的顶点ID所在区间确定该边所在网格的“列”,在计算过程中通过以“行”或“列”为导向的网格加载方式控制需要加载的顶点数据,被加载的网格会同时加载其所在“行”对应的顶点区间的所有顶点的相关变量和所在“列”对应的顶点区间的所有顶点的相关变量,其中“行”顶点数据涉及外存的“读”,而“列”顶点数据涉及外存的“写”。但是,计算机外存读写速度不一致的硬件特性使得“对称网格”分区策略中的“行”和“列”数据加载速度不一致,“行”读数据远快于“列”写数据,导致计算资源和时间的浪费。因此,如何设计分图策略使得单机核外图计算系统的性能尽可能提升是单机核外图计算系统研究与应用中的关键问题之一。
此外,在现有的单机核外图计算系统的研究中,尽管许多现实场景中的图都具有大量的属性数据,但这些单机核外图计算系统都未考虑具有属性的图的图计算问题。例如,针对网络图(web graph),用户需要计算生成时间在指定范围内的网页排名(PageRank),以便用户了解这段时间内的热门网页。但现有的仅考虑拓扑图计算的单机核外系统无法执行此类任务。一种简单的解决方案是利用数据库查询引擎来选择满足时间条件的边和顶点,即从原始图数据中提取符合条件的子图,然后再导入到单机核外图计算系统处理该子图。但是,该解决方案的一个主要问题是,提取的子图由于拓扑结构的变化需要在外存上重新分图,这意味着单机核外图计算系统需要针对每个特定条件限制的属性图计算任务进行分图处理,这对时间和计算资源来说都是极大的浪费。因此,如何高效地计算属性图是单机核外属性图计算系统研究与应用中的关键问题。
发明内容
本发明针对现有技术方案的不足,提供一种单机核外属性图计算系统,可分为预处理阶段和计算阶段,其在预处理阶段使用“双层不对称网格”分图策略分图,并基于列式存储方式存储分图后的属性图数据,同时分图后的网格使用双向重组策略合并,在计算阶段则基于标记-流式处理(labeling-and-streaming)两阶段计算模型计算用户定义的属性图计算任务。
本发明的技术方案为一种单机核外属性图计算方法,具体步骤如下:
步骤1:构建属性图,所述属性图由多个顶点、多条边、顶点对应的多个属性,以及边对应的多个属性构成;
步骤2:将属性图的多个顶点通过外层不对称网格分图策略算法进行分簇,得到顶点簇以及每对顶点簇对应的边集合;
步骤3:将步骤2中通过外层不对称网格分图策略算法得到的Ps×Pt个边集合Block再次细化分簇,对每个Block通过内层不对称网格分图策略算法得到粒度更小的顶点簇以及每对细粒度顶点簇对应的细粒度边集合;
步骤4:对每个经过步骤3处理的Block(x,y)所得到的细粒度边集合Block(xa,yb)按源顶点簇优先的顺序重组,会得到一个细粒度边集合有序的一维数组Block’(x,y);
步骤5:对所有一维数组Block’(x,y)(x∈[1,Ps],y∈[1,Pt])按目的顶点簇优先的顺序重组,得到一个一维数组Block’(x,y)间有序的属性图二维数组Grid;
步骤6:通过步骤5得到的属性图二维数组Grid构建出1个拓扑数组Column(E)和q个边的属性的数组Column(AE(b)),b∈[1,q];
步骤7:对顶点的属性数据AV构建出m个顶点的属性一维数组Column(AV(a)),a∈[1,m];
步骤8:根据用户给定的属性条件限制,依次顺序遍历需要的在步骤7得到的顶点属性数组,在内存中得到一个顶点标记数组,再依次顺序遍历需要的在步骤6得到的边属性数组并结合顶点标记数组,最终得到在内存中的顶点标记数组和边标记数组;
步骤9:根据用户给定的计算任务,顺序读步骤6得到的拓扑数组,对读入的每条边通过步骤8得到的顶点标记数组和边标记数组判断该边是否需要进行计算,若需要则按用户定义的计算任务处理;遍历完拓扑数组中的每条边后,根据用户定义的计算任务判断是否满足计算任务结束条件,是则结束,用户发起新的计算任务时直接进入步骤8,否则重复步骤9。
作为优选,步骤1中所述的属性图,可概括为顶点和边都具有属性的拓扑图,具体定义为:
G=(V,E,AV,AE)
V={vi|i∈[1,|V|]}
其中,V表示属性图中顶点的集合,vi表示属性图中第i个顶点;
E={ei,j=<vi,vj>|vi∈V,vj∈V}表示属性图中边的集合,ei,j=<vi,vj>表示属性图中第i个顶点到第j个顶点的有向连边,i∈[1,|V|],j∈[1,|V|];任意无向边ei,j ′=(vi,vj)在E中将被表示为ei,j=<vi,vj>和eji=<vj,vi>两条对向的有向边;
AV表示属性图中顶点的一组属性值的集合,m表示顶点的属性的数量,AV={AV(a,i)|a∈[1,m],i∈[1,|V|]},AV(a,i)表示第i个顶点的第a个属性值,AV(a)表示顶点的第a个属性值;对于任意顶点v∈V,v有且仅有m个顶点属性及对应的m个属性值;
AE表示属性图中连边的一组属性值的集合,q表示边的属性的数量,AE={AE(b,i,j)|ei,j∈E,i∈[1,|V|],j∈[1,|V|],b∈[1,q]},AE(b,i,j)表示连边ei,j的第b个属性值,AE(b)表示边的第b个属性值;对于任意边e∈E,e有且仅有q个边属性及对应的q个属性值;
|V|为集合V的势,表示属性图顶点的数量;
|E|为集合E的势,表示属性图连边的数量;
作为优选,步骤2所述顶点簇集合包括:源顶点簇集合、目的顶点簇集合;
所述源顶点簇的集合定义为VS,所述源顶点簇集合内的源顶点簇的数目为Ps,VS(x)表示源顶点簇集合内的第x个源顶点簇,x∈[1,Ps];
所述目的顶点簇的集合定义为VT,所述目的顶点簇集合内的目的顶点簇的数目为Pt,VT(y)表示目的顶点簇集合内的第y个目的顶点簇,y∈[1,Pt];
Ps和Pt均为正整数,Ps≥Pt;
步骤2所述源顶点簇定义为:
步骤2所述目的顶点簇定义为:
对于属性图中第i个顶点即vi∈V(i∈[1,|V|]):
vi所在的源顶点簇VS为第i/(|V|/Ps)个,即VS(i/(|V|/Ps));
vi所在的目的顶点簇为第i/(|V|/Pt)个,即VT(i/(|V|/Pt));
根据外层不对称网格分图策略分图后,步骤1所定义的图的边集E将被划分出Ps×Pt个边的子集,定义为Block(x,y),Block(x,y)表示源顶点簇VS(x)和目的顶点簇VT(y)对应的边集合,其符号定义为:
Block(x,y)={ei,j|vi∈VS(x),vj∈VT(y)},x∈[1,Ps],y∈[1,Pt]
|Block(x,y)|为集合Block(x,y)的势,表示顶点簇VS(x)和VT(y)对应的边集合中连边的数量;
作为优选,步骤3所述内层不对称网格分图策略算法的应用对象是步骤2得到的每对顶点簇对应的边集合中超过一定大小记为Csize的边集合,即满足|Block(x,y)|>Csize的Block(x,y);
步骤3所述的对边集合再次细化分簇具体为:
对每个|Block(x,y)|>Csize的边集合Block(x,y),通过内层不对称网格分图策略算法将得到Ps’个细粒度源顶点簇VS(xa,Block(x,y))(x∈[1,Ps],a∈[1,Ps’],Pt’个细粒度目的顶点簇VT(yb,Block(x,y))(y∈[1,Pt],b∈[1,Pt’],以及每对细粒度顶点簇对应的细粒度边集合Block(xa,yb);
步骤3所述细粒度源顶点簇定义为:
步骤3所述细粒度目的顶点簇定义为:
步骤3所述细粒度边集合定义为:
Block(xa,yb)={ei,j|vi∈VS(xa,Block(x,y)),vj∈VT(yb,Block(x,y))},Block(xa,yb)为源顶点簇VS(xa,Block(x,y))和目的顶点簇VT(yb,Block(x,y))对应的边集合;
Ps’和Pt’均为正整数,且满足Ps’×Pt’=|Block(x,y)|/Csize(|Block(x,y)|/Csize的结果为小数时向上取整),一般应用情况下Ps’≤Pt’;
进一步地,若边集合Block(x,y)满足|Block(x,y)|>Csize且Block(x,z)满足|Block(x,z)|>Csize,同时|Block(x,y)|/Csize≠|Block(x,z)|/Csize,那么对Block(x,y)和Block(x,z)分别细化分簇得到的细粒度边子集个数不同,即不同Block的Ps’和Pt’取值相互独立;
作为优选,步骤4所述的对Block(x,y)的细粒度边集合Block(xa,yb)按源顶点簇优先的顺序重组,具体为:Block(x1,y1),Block(x1,y2),…Block(x1,yPt’),Block(x2,y1),…Block(xPs’,yPt’),所得到的一维数组Block’(x,y)为按步骤4所述的按源顶点簇优先的顺序重组Block(x,y)的Ps’×Pt’个细粒度边集合后的结果,Block’(x,y)=[Block(x1,y1),Block(x1,y2),…Block(x1,yPt’),Block(x2,y1),…Block(xPs’,yPt’)],一维数组长度为Ps’×Pt’;
作为优选,步骤5所述的对一维数组Block’(x,y)(x∈[1,Ps],y∈[1,Pt])按目的顶点簇优先的顺序重组,具体为:
””’
Block(1,1),Block(2,1),…Block(Ps,1),Block(x2,y1),…Block(Ps,Pt),所得到的属性图二维数组Grid即为以步骤5所述的按源顶点簇优先的顺序重组所有Block’(x,y)(x∈[1,Ps],y∈[1,Pt])后的结果,Grid=[Block’(1,1),Block’(2,1),…Block’(Ps,1),Block’(x2,y1),…Block’(Ps,Pt)],Grid数组的长度为Ps×Pt;
对于没有执行步骤3和步骤4的Block(x,y),(|Block(x,y)|≤Csize),Block(x,y)=Block’(x,y);
由于Grid数组的每一个元素Block’(x,y)都是一个一维数组,故这Ps×Pt个一维数组重组后的到一个长度为Ps×Pt的二维数组Grid;
作为优选,步骤6具体为:
其中,Column(E)=E,Column(E)中边的顺序与步骤5得到的属性图二维数组中的边的顺序一致;
Column(AE(b))={(k,AE(b,i,j))|ei,j∈E,i∈[1,N],j∈[1,N],k∈[1,|E|]};
Column(AE(b))中的数据条目为边位移k-属性值AE(b,i,j)的键-值对,边位移k表示为ei,j在拓扑数组Column(E)中处于第k条边,k∈[1,|E|],Column(AE(b))中的键-值对的数目为|E|,b∈[1,q];
作为优选,步骤7具体为:
Column(AV(a))={(i,AV(a,i))|i∈[1,|V|]},
Column(AV(a))中的数组元素为键-值对,顶点i-属性值AV(a,i),顶点i的定义参见步骤1,i∈[1,|V|],Column(AV(a))中的键-值对的数目为|V|,a∈[1,m];
作为优选,步骤8所述用户给定的属性条件限制定义为:若干个顶点属性即0到m个和若干个边属性即0到q个的逻辑运算组合式,逻辑运算组合式的结果仅通过0-1真假值即可表示;
用户给定的属性条件限制为UserQuery;
顺序遍历的含义为对任意一个顶点属性数组或边属性数组,从数组头部顺序读取即相对于随机读至数组尾部即中途不读取其他数组,并且对读入的数组元素按用户给定的属性条件限制做逻辑判断,符合或不符合属性限制条件的点或边将在顶点标记数组或边标记数组中记录;
顶点标记数组定义为一个大小为|V|的布尔值数组VertexArray,VertexArray[i]表示顶点vi的属性条件判断结果,VertexArray[i]=0为vi不满足属性条件,VertexArray[i]=1为vi满足属性条件,VertexArray[i]的结果通过顺序遍历需要的在步骤7得到的顶点属性数组即可得到;
边标记数组定义为一个大小为|E|的布尔值数组EdgeArray,EdgeArray[k]表示边位移(offset)为k的边eij的属性条件判断结果,EdgeArray[k]=0为eij或vi或vj不满足UserQuery,EdgeArray[k]=1为eij、vi和vj均满足UserQuery;
当UserQuery涉及的顶点属性数目和边属性数目均大于0时,程序需要先顺序遍历若干个涉及的顶点属性数组,再顺序遍历若干个涉及的边属性数组,EdgeArray[k]=1的条件是eij、vi和vj均满足UserQuery;
当UserQuery涉及的顶点属性数目为0,边属性数目大于0时,程序需要只顺序遍历若干个涉及的边属性数组,EdgeArray[k]=1的条件是eij满足UserQuery;
当UserQuery涉及的顶点属性数目大于0,边属性数目为0时,程序需要只顺序遍历若干个涉及的顶点属性数组,EdgeArray[k]=1的条件是eij所对应的vi和vj均满足UserQuery;
当UserQuery涉及的顶点属性数目和边属性数目均为0时,程序默认任意EdgeArray[k]=1,k∈[1,|E|];
对同一属性图,步骤1-7只需执行一次。预处理阶段即步骤1-7完成后,系统持续处于计算阶段即步骤8-9,能够持续处理用户给出的相同和不同的图计算任务,系统对每一个有属性条件限制的图计算任务需要完整执行一次计算阶段。
本发明利用计算机“外存-内存-缓存”三层数据存储系统读写速度不一致的特性,通过“双层不对称网格”分图策略和分图后网格块重组实现了“外存-内存”外网格列优先遍历,“内存-缓存”内网格行优先遍历的调度策略,同时借助列式存储文件格式使属性图计算过程中属性的读取效率最大化,并且通过标记-流式处理两阶段计算模型使得单机核外图计算系统能够执行有属性条件限制的图计算任务,并且保证了属性图计算任务的执行效率。
附图说明
图1:是本发明所述单机核外属性图计算系统总流程。
图2:是本发明实施例的属性图G经过步骤2外层不对称网格分图策略分图后得到的源顶点簇、目的顶点簇和对应边集合的结果示意图。
图3:是本发明实施例以Block(150,6)为例说明经过步骤3内层不对称网格分图算法细分后得到的细粒度源顶点簇、目的顶点簇和对应边集合的结果示意图。
图4:是本发明实施例以Block(150,6)为例说明步骤4按源顶点簇优先的顺序重组细粒度边集合Block(150a,6b)得到的Block’(150,6)的示意图。
图5:是本发明实施例说明步骤5的按目的顶点簇优先的顺序重组Block’(x,y)得到Grid的结果示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例对本发明技术方案进行具体描述。
本发明主要基于外存的顺序访问速度远高于随机访问速度的特性,考虑单机图计算问题中的属性图计算问题,提出的一种单机核外属性图计算系统。本方法充分考虑了不同存储介质的不同访问方式访问速度不同的特性和属性图计算任务中属性的作用,通过“双层不对称网格”分图策略组织图数据,列式存储方式存储拓扑图的属性数据,以及使用标记-流式处理两阶段属性图计算模型,尽可能减少随机访问并充分利用了不同存储介质的读写特性,以此提升计算效率。通过本发明,能使单机核外图计算系统能够处理具有属性条件限制的复杂图计算任务,并保证了计算效率。
下面结合图1至图5介绍本发明的具体实施方式:
本发明所述的单机核外属性图计算系统的总流程如图1所示。
步骤1:构建属性图,所述属性图由多个顶点、多条边、顶点对应的多个属性,以及边对应的多个属性构成;
实施例以含有1560000个顶点、23450000条边、50个顶点的属性和80个边的属性的属性图G为例对本发明的流程进行一个具体的阐述,该属性图具体定义如下:
G=(V,E,AV,AE)
V={vi|i∈[1,1560000]}
E={ei,j=<vi,vj>|vi∈V,vj∈V}
AV={AV(a,i)|a∈[1,50],i∈[1,1560000]}
AE={AE(b,i,j)|ei,j∈E,i∈[1,1560000],j∈[1,1560000],b∈[1,80]}
其中,V表示属性图G中1560000个顶点的集合,E表示属性图G中23450000条连边的集合,AV表示属性图G中1560000个顶点的50个属性的属性值的集合,AE表示属性图G中23450000条连边的80个属性值的集合;
v100表示属性图中第100个顶点;
e2,3=<v2,v3>表示属性图中第2个顶点到第3个顶点的有向连边;无向边e2,3 ′=(v2,v3)在E中将被表示为e2,3=<v2,v3>和e3,2=<v3,v2>两条对向的有向边;
AV(3,100)表示第100个顶点的第3个属性的属性值,AV(3)表示顶点的第3个属性值;
AE(3,2,100)表示连边e2,100的第3个属性值,AE(3)表示边的第3个属性值;
在本实施例中,|V|=1560000,|V|表示属性图顶点的数量;|E|=23450000,|E|表示属性图连边的数量;
步骤2:将属性图的多个顶点通过外层不对称网格分图策略算法进行分簇,得到顶点簇以及每对顶点簇对应的边集合;
步骤2所述顶点簇集合包括:源顶点簇集合、目的顶点簇集合;
所述源顶点簇的集合定义为VS,所述源顶点簇集合内的源顶点簇的数目为Ps,本实施例中令Ps=156,VS(x)表示源顶点簇集合内的第x个源顶点簇,x∈[1,156];
所述目的顶点簇的集合定义为VT,所述目的顶点簇集合内的目的顶点簇的数目为Pt,本实施例中令Pt=30,VT(y)表示目的顶点簇集合内的第y个目的顶点簇,y∈[1,30];
本实施例中步骤2所述源顶点簇定义为:
本实施例中步骤2所述目的顶点簇定义为:
以x=150举例,则VS(150)={vi|i∈(1490000,1500000]}
以y=6举例,则VT(6)={vi|i∈(260000,312000]}
以属性图G中第312000个顶点,即v312000,举例:
v312000所在的源顶点簇VS为第31个,即VS(31);
v312000所在的目的顶点簇为第6个,即VT(6);
在本实施例中,经过步骤2所述的外层不对称网格分图策略分图后,步骤1所定义的图的边集E将被划分出156×30个边的子集,如图2所示,每个边的子集的符号定义为Block(x,y),Block(x,y)表示源顶点簇VS(x)和目的顶点簇VT(y)对应的边集合,具体定义为:
Block(x,y)={ei,j|vi∈VS(x),vj∈VT(y),x∈[1,156],y∈[1,30]}
以x=150,y=6举例,则Block(150,6)={ei,j|vi∈VS(150),vj∈VT(6)}={ei,j|i∈(1490000,1500000],j∈(260000,312000]};
|Block(x,y)|为集合Block(x,y)的势,表示顶点簇VS(x)和VT(y)对应的边集合中连边的数量,如图2所示;
步骤3:将步骤2中通过外层不对称网格分图策略算法得到的156×30个边集合Block再次细化分簇,对每个Block通过内层不对称网格分图策略算法得到粒度更小的顶点簇以及每对细粒度顶点簇对应的细粒度边集合;
内层不对称网格分图策略算法的应用对象是步骤2得到的每对顶点簇对应的边集合中超过一定大小(记为Csize)的边集合,即满足|Block(x,y)|>Csize的Block(x,y);
在本实施例中,令Csize=10000,以Block(150,6)、Block(10,3)和Block(31,6)举例,设|Block(150,6)|=51350,|Block(10,3)|=25450,|Block(31,6)|=3500,那么Block(150,6)和Block(10,3)需要执行步骤3和步骤4,Block(31,6)直接进入步骤5
本实施例中,以Block(150,6)为例说明步骤3所述的对边集合再次细化分簇,具体为:
因为|Block(150,6)|/Csize=6,令Block(150,6)对应的Ps’=2,Pt’=3(还可以令Ps’=1,Pt’=6,取值由用户决定,下文不赘述);
由于Block(150,6)对应的Ps’=2,Pt’=3,Block(150,6)通过内层不对称网格分图策略算法将得到2个细粒度源顶点簇VS(150a,Block(150,6))(其中a∈[1,2],和3个细粒度目的顶点簇VT(6b,Block(150,6))以及每对细粒度顶点簇对应的细粒度边集合Block(150a,6b),如图3所示;
如图3所示,VS(1502,Block(150,6))表示VS(150)针对Block(150,6)划分的第2个细粒度源顶点簇,本实施例中VS(1501,Block(150,6))={vi|i∈(1490000,1495000]},VS(1502,Block(150,6))={vi|i∈(1495000,1500000]};
VT(61,Block(150,6))表示VT(6)针对Block(150,6)划分的第1个细粒度源顶点簇,VT(61,Block(150,6))={vj|j∈(260000,277334]},VT(62,Block(150,6))={vj|j∈(277334,294668]},VT(63,Block(150,6))={vj|j∈(294668,3120000]};
Block(150a,6b)为源顶点簇VS(150a,Block(150,6))和目的顶点簇VT(6b,Block(150,6))对应的边集合,Block(150a,6b)={ei,j|vi∈VS(150a,Block(150,6)),vj∈VT(6b,Block(150,6)),a∈[1,2],b∈[1,3]},;
以a=2,b=3为例,Block(1502,63)为源顶点簇VS(1502,Block(150,6))和目的顶点簇VT(63,Block(150,6))对应的边集合,Block(1502,63)={ei,j|vi∈VS(1502,Block(150,6)),vj∈VT(63,Block(150,6))}={ei,j|i∈(1495000,1500000],j∈(294668,3120000]};
另外,|Block(10,3)|/Csize=3,则令Block(10,3)对应的Ps’=1,Pt’=3;此处说明Block(150,6)对应的Ps’和Pt’与Block(10,3)对应的Ps’和Pt’是相互独立的。
步骤4:对每个经过步骤3处理的Block(x,y)所得到的细粒度边集合Block(xa,yb)按源顶点簇优先的顺序重组,会得到一个细粒度边集合有序的一维数组Block’(x,y);
继续以Block(150,6)为例进行解释,Block(150,6)通过步骤3得到Block(1501,61),Block(1502,61),Block(1501,62),Block(1502,62),Block(1501,63),Block(1502,63)等6个细粒度边集合,步骤4对这6个细粒度边集合按源顶点簇优先的顺序重组得到Block’(150,6),即Block’(150,6)=[Block(1501,61),Block(1501,62),Block(1501,63),Block(1502,61),Block(1502,62),Block(1502,63)],如图4所示;
步骤5:对所有一维数组Block’(x,y)(x∈[1,156],y∈[1,30])按目的顶点簇优先的顺序重组,得到一个一维数组Block’(x,y)间有序的属性图二维数组Grid;
对于没有执行步骤3和步骤4的Block(x,y),(|Block(x,y)|≤Csize),Block(x,y)=Block’(x,y),如步骤3提到的Block(31,6)有Block(31,6)=Block’(31,6);
经过前述的步骤1-4,得到156×30个Block’(x,y)(x∈[1,156],y∈[1,30]),步骤5对这156×30个一维数组Block’(x,y)按目的顶点簇优先的顺序重组得到Grid=[Block’(1,1),Block’(2,1),…Block’(156,1),Block’(1,2),Block’(2,2),…Block’(156,30)],如图5所示;
步骤6:通过步骤5得到的属性图二维数组Grid构建出1个拓扑数组Column(E)和q个边的属性的数组Column(AE(b)),b∈[1,80];
其中,Column(E)=E,Column(E)中边的顺序与步骤5得到的属性图数据集合中的边的顺序一致;Column(AE(b))={(k,AE(b,i,j))|ei,j∈E,i∈[1,1560000],j∈[1,1560000],k∈[1,23450000]},Column(AE(b))中的数组元素的个数为23450000,b∈[1,80];
以b=15为例,Column(AE(15))={(k,AE(15,i,j))|ei,j∈E,i∈[1,1560000],j∈[1,1560000],k∈[1,23450000]},Column(AE(15))中的数据条目为边位移k-属性值AE(15,i,j)的键-值对,若e35,60在拓扑数据集合Column(E)中处于第500条边,则e35,60在Column(AE(15))中对应的属性元素记录为(500,AE(15,35,60));Column(AE(15))总共包含23450000个数组元素(k,AE(15,i,j)),k∈[1,23450000];
步骤7:对顶点的属性数据AV构建出m个顶点的属性一维数组Column(AV(a)),Column(AV(a))={(i,AV(a,i))|i∈[1,1560000]},a∈[1,50];
Column(AV(a))中的数组元素为顶点i-属性值AV(a,i)的键-值对,顶点i的定义参见步骤1,i∈[1,1560000],Column(AV(a))中的键-值对的数目为1560000,a∈[1,50];
在本实施例中,给定一个有属性条件限制的图计算任务,具体为:计算第13个顶点到第1549876个顶点的最短路径,顶点的属性条件限制为:第1个属性的属性值>100且第25个属性的属性值≠0的顶点,边的属性限制条件为:第4个属性的属性值≥0或第67个属性的属性值=1的顶点。将该计算任务通过符号表示,为:计算v13到v1549876的最短路径,参与计算的顶点集TaskV={vi|AV(1,i)>100AND AV(25,i)≠0,vi∈V,i∈[1,1560000]},参与计算的边集TaskE={ei,j|AE(4,i,j)≥0OR AE(67,i,j)=1,ei,j∈E,i∈[1,1560000],j∈[1,1560000]}。默认v13和v1549876参与计算。
步骤8:符合属性条件限制的拓扑子图标记——根据用户给定的属性条件限制,依次顺序遍历需要的在步骤7得到的顶点属性数组,在内存中得到一个顶点标记数组,再依次顺序遍历需要的在步骤6得到的边属性数组并结合顶点标记数组,最终得到在内存中的顶点标记数组和边标记数组;
本实施例中具体的实施过程说明如下:
1.首先初始化顶点标记数组VertexArray[1560000]和边标记数组EdgeArray[23450000],这两个数组大小分别为1560000比特和23450000比特;
2.因为给定的实施例的计算任务中有顶点的属性条件限制,所以标记过程首先进行顶点标记。先遍历步骤7得到的Column(AV(1)),对任意i∈[1,1560000],若AV(1,i)>100,VertexArray[i]=1,否则VertexArray[i]=0;再遍历步骤7得到的Column(AV(25)),对任意i∈[1,1560000],若VertexArray[i]=1,则判断AV(25,i)≠0是否为真,若为真则VertexArray[i]=1不变,若为假则VertexArray[i]=0;默认v13和v1549876参与计算,故令VertexArray[13]=1,VertexArray[1549876]=1;
3.接下来对边进行标记。先遍历步骤6得到的Column(AE(4)),对任意k∈[1,23450000],如果(k,AE(4,i,j))中对应的AE(4,i,j)≥0,则EdgeArray[k]=1,否则EdgeArray[k]=0;再遍历步骤6得到的Column(AE(67)),对任意k∈[1,23450000],如果(k,AE(67,i,j))中对应的AE(67,i,j)=1,则EdgeArray[k]=1,否则不改变EdgeArray[k]的现有值;
步骤9:根据用户给定的计算任务,顺序读步骤6得到的拓扑数组,对读入的每条边通过步骤8得到的顶点标记数组和边标记数组判断该边是否需要进行计算,若需要则按用户定义的计算任务处理;遍历完拓扑数组中的每条边后,根据用户定义的计算任务判断是否满足计算任务结束条件,是则结束,否则重复步骤9。
实施例具体的实施过程说明如下:
1.设置一个活跃顶点数组ActiveArray[1560000],ActiveArray[13]=1;
2.第一次迭代:遍历步骤6得到的Column(E),目前只有ActiveArray[13]状态为活跃,所以当遍历到e13,j,j∈[1,1560000]时,获得e13,j在Column(E)的边位移k,k∈[1,23450000],
然后查询步骤8得到的顶点标记数组VertexArray,如果VertexArray[j]=0则遍历Column(E)中的下一条边ei,j,如果VertexArray[j]=1,再查询步骤8得到的边标记数组EdgeArray,如果EdgeArray[k]=1,则令ActiveArray[j]=1并遍历Column(E)中的下一条边ei,j,如果EdgeArray[k]=0,则遍历Column(E)中的下一条边ei,j;
遍历完Column(E)时令ActiveArray[13]=0;
假设Column(E)中有e13,16和e13,14532,同时VertexArray[16]=1、VertexArray[14532]=1且对应的EdgeArray[k]=1,所以有ActiveArray[16]=1和ActiveArray[14532]=1;
3.第二次迭代:遍历步骤6得到的Column(E),目前有ActiveArray[16]和ActiveArray[14532]状态为活跃,所以当遍历到e16,j和e14532,j时,获得e16,j和e14532,j在Column(E)的边位移k,k∈[1,23450000],
然后查询步骤8得到的顶点标记数组VertexArray,如果VertexArray[j]=0则遍历Column(E)中的下一条边ei,j,如果VertexArray[j]=1,再查询步骤8得到的边标记数组EdgeArray,如果EdgeArray[k]=1,则令ActiveArray[j]=1并遍历Column(E)中的下一条边ei,j,如果EdgeArray[k]=0,则遍历Column(E)中的下一条边ei,j;
遍历完Column(E)时令ActiveArray[16]=0,ActiveArray[14532]=0;
假设Column(E)中有e16,100、e14532,16540和e14532,1549876,同时VertexArray[100]=1、VertexArray[16540]=1、VertexArray[1549876]=1且对应的EdgeArray[k]=1,所以有ActiveArray[100]=1,ActiveArray[16540]=1,ActiveArray[1549876]=1,因为v1549876就是要到达的顶点,所以达到步骤2结束条件,本实施例给定的有属性条件限制的图计算任务完成。计算结果为v13到v1549876的最短路径长度为2,路径为v13到v14532到v1549876。
具体实施时,本领域技术人员可采用计算机软件方式支持实现流程。
本发明提供了本领域技术人员能够实现的技术方案。以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变换或变型,因此所有等同的技术方案,都落入本发明的保护范围。
Claims (9)
1.一种单机核外属性图计算方法,其特征在于,包括以下步骤:
步骤1:构建属性图,所述属性图由多个顶点、多条边、顶点对应的多个属性,以及边对应的多个属性构成;
步骤2:将属性图的多个顶点通过外层不对称网格分图策略算法进行分簇,得到顶点簇以及每对顶点簇对应的边集合;
步骤3:将步骤2中通过外层不对称网格分图策略算法得到的Ps×Pt个边集合Block再次细化分簇,对每个Block通过内层不对称网格分图策略算法得到粒度更小的顶点簇以及每对细粒度顶点簇对应的细粒度边集合;
步骤4:对每个经过步骤3处理的Block(x,y)所得到的细粒度边集合Block(xa,yb)按源顶点簇优先的顺序重组,会得到一个细粒度边集合有序的一维数组Block’(x,y);
步骤5:对所有一维数组Block’(x,y)(x∈[1,Ps],y∈[1,Pt])按目的顶点簇优先的顺序重组,得到一个一维数组Block’(x,y)间有序的属性图二维数组Grid;
步骤6:通过步骤5得到的属性图二维数组Grid构建出1个拓扑数组Column(E)和q个边的属性的数组Column(AE(b)),b∈[1,q];
步骤7:对顶点的属性数据AV构建出m个顶点的属性一维数组Column(AV(a)),a∈[1,m];
步骤8:根据用户给定的属性条件限制,依次顺序遍历需要的在步骤7得到的顶点属性数组,在内存中得到一个顶点标记数组,再依次顺序遍历需要的在步骤6得到的边属性数组并结合顶点标记数组,最终得到在内存中的顶点标记数组和边标记数组;
步骤9:根据用户给定的计算任务,顺序读步骤6得到的拓扑数组,对读入的每条边通过步骤8得到的顶点标记数组和边标记数组判断该边是否需要进行计算,若需要则按用户定义的计算任务处理;遍历完拓扑数组中的每条边后,根据用户定义的计算任务判断是否满足计算任务结束条件,是则结束,用户发起新的计算任务时直接进入步骤8,否则重复步骤9。
2.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤1中所述的属性图,可概括为顶点和边都具有属性的拓扑图,具体定义为:
G=(V,E,AV,AE)
V={vi|i∈[1,|V|]}
其中,V表示属性图中顶点的集合,vi表示属性图中第i个顶点;
E={ei,j=<vi,vj>|vi∈V,vj∈V}表示属性图中边的集合,ei,j=<vi,vj>表示属性图中第i个顶点到第j个顶点的有向连边,i∈[1,|V|],j∈[1,|V|];任意无向边ei,j′=(vi,vj)在E中将被表示为ei,j=<vi,vj>和eji=<vj,vi>两条对向的有向边;
AV表示属性图中顶点的一组属性值的集合,m表示顶点的属性的数量,AV={AV(a,i)|a∈[1,m],i∈[1,|V|]},AV(a,i)表示第i个顶点的第a个属性值,AV(a)表示顶点的第a个属性值;对于任意顶点v∈V,v有且仅有m个顶点属性及对应的m个属性值;
AE表示属性图中连边的一组属性值的集合,q表示边的属性的数量,AE={AE(b,i,j)|ei,j∈E,i∈[1,|V|],j∈[1,|V|],b∈[1,q]},AE(b,i,j)表示连边ei,j的第b个属性值,AE(b)表示边的第b个属性值;对于任意边e∈E,e有且仅有q个边属性及对应的q个属性值;
|V|为集合V的势,表示属性图顶点的数量;
|E|为集合E的势,表示属性图连边的数量。
3.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤2所述顶点簇集合包括:源顶点簇集合、目的顶点簇集合;
所述源顶点簇的集合定义为VS,所述源顶点簇集合内的源顶点簇的数目为Ps,VS(x)表示源顶点簇集合内的第x个源顶点簇,x∈[1,Ps];
所述目的顶点簇的集合定义为VT,所述目的顶点簇集合内的目的顶点簇的数目为Pt,VT(y)表示目的顶点簇集合内的第y个目的顶点簇,y∈[1,Pt];
Ps和Pt均为正整数,Ps≥Pt;
步骤2所述源顶点簇定义为:
步骤2所述目的顶点簇定义为:
对于属性图中第i个顶点即vi∈V(i∈[1,|V|]):
vi所在的源顶点簇VS为第i/(|V|/Ps)个,即VS(i/(|V|/Ps));
vi所在的目的顶点簇为第i/(|V|/Pt)个,即VT(i/(|V|/Pt));
根据外层不对称网格分图策略分图后,步骤1所定义的图的边集E将被划分出Ps×Pt个边的子集,定义为Block(x,y),Block(x,y)表示源顶点簇VS(x)和目的顶点簇VT(y)对应的边集合,其符号定义为:
Block(x,y)={ei,j|vi∈VS(x),vj∈VT(y)},x∈[1,Ps],y∈[1,Pt]
|Block(x,y)|为集合Block(x,y)的势,表示顶点簇VS(x)和VT(y)对应的边集合Block(x,y)中连边的数量。
4.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤3所述内层不对称网格分图策略算法的应用对象是步骤2得到的每对顶点簇对应的边集合中超过一定大小记为Csize的边集合,即满足|Block(x,y)|>Csize的Block(x,y);
步骤3所述的对边集合再次细化分簇具体为:
对每个|Block(x,y)|>Csize的边集合Block(x,y),通过内层不对称网格分图策略算法将得到Ps’个细粒度源顶点簇VS(xa,Block(x,y))(x∈[1,Ps],a∈[1,Ps’],Pt’个细粒度目的顶点簇VT(yb,Block(x,y))(y∈[1,Pt],b∈[1,Pt’],以及每对细粒度顶点簇对应的细粒度边集合Block(xa,yb);
步骤3所述细粒度源顶点簇定义为:
步骤3所述细粒度目的顶点簇定义为:
步骤3所述细粒度边集合定义为:
Block(xa,yb)={ei,j|vi∈VS(xa,Block(x,y)),vj∈VT(yb,Block(x,y))},Block(xa,yb)为源顶点簇VS(xa,Block(x,y))和目的顶点簇VT(yb,Block(x,y))对应的边集合;
Ps’和Pt’均为正整数,且满足Ps’×Pt’=|Block(x,y)|/Csize(|Block(x,y)|/Csize的结果为小数时向上取整),一般应用情况下Ps’≤Pt’;
若边集合Block(x,y)满足|Block(x,y)|>Csize且Block(x,z)满足|Block(x,z)|>Csize,同时|Block(x,y)|/Csize≠|Block(x,z)|/Csize,那么对Block(x,y)和Block(x,z)分别细化分簇得到的细粒度边子集个数不同,即不同Block的Ps’和Pt’取值相互独立。
5.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤4所述的对Block(x,y)的细粒度边集合Block(xa,yb)按源顶点簇优先的顺序重组,具体为:Block(x1,y1),Block(x1,y2),…Block(x1,yPt’),Block(x2,y1),…Block(xPs’,yPt’),所得到的一维数组Block’(x,y)为按步骤4所述的按源顶点簇优先的顺序重组Block(x,y)的Ps’×Pt’个细粒度边集合后的结果,Block’(x,y)=[Block(x1,y1),Block(x1,y2),…Block(x1,yPt’),Block(x2,y1),…Block(xPs’,yPt’)],一维数组长度为Ps’×Pt’。
6.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤5所述的对一维数组Block’(x,y)(x∈[1,Ps],y∈[1,Pt])按目的顶点簇优先的顺序重组,具体为:
Block’(1,1),Block’(2,1),…Block’(Ps,1),Block’(x2,y1),…Block’(Ps,Pt),所得到的属性图二维数组Grid即为以步骤5所述的按源顶点簇优先的顺序重组所有Block’(x,y)(x∈[1,Ps],y∈[1,Pt])后的结果,Grid=[Block’(1,1),Block’(2,1),…Block’(Ps,1),Block’(x2,y1),…Block’(Ps,Pt)],Grid数组的长度为Ps×Pt;
对于没有执行步骤3和步骤4的Block(x,y),(|Block(x,y)|≤Csize),Block(x,y)=Block’(x,y);
由于Grid数组的每一个元素Block’(x,y)都是一个一维数组,故这Ps×Pt个一维数组重组后的到一个长度为Ps×Pt的二维数组Grid。
7.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤6具体为:
其中,Column(E)=E,Column(E)中边的顺序与步骤5得到的属性图二维数组中的边的顺序一致;
Column(AE(b))={(k,AE(b,i,j))|ei,j∈E,i∈[1,N],j∈[1,N],k∈[1,|E|]};
Column(AE(b))中的数据条目为边位移k-属性值AE(b,i,j)的键-值对,边位移k表示为ei,j在拓扑数组Column(E)中处于第k条边,k∈[1,|E|],Column(AE(b))中的键-值对的数目为|E|,b∈[1,q]。
8.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤7具体为:
Column(AV(a))={(i,AV(a,i))|i∈[1,|V|]},
Column(AV(a))中的数组元素为键-值对,顶点i-属性值AV(a,i),顶点i的定义参见步骤1,i∈[1,|V|],Column(AV(a))中的键-值对的数目为|V|,a∈[1,m]。
9.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤8所述用户给定的属性条件限制定义为:若干个顶点属性即0到m个和若干个边属性即0到q个的逻辑运算组合式,逻辑运算组合式的结果仅通过0-1真假值即可表示;
用户给定的属性条件限制为UserQuery;
顺序遍历的含义为对任意一个顶点属性数组或边属性数组,从数组头部顺序读取即相对于随机读至数组尾部即中途不读取其他数组,并且对读入的数组元素按用户给定的属性条件限制做逻辑判断,符合或不符合属性限制条件的点或边将在顶点标记数组或边标记数组中记录;
顶点标记数组定义为一个大小为|V|的布尔值数组VertexArray,VertexArray[i]表示顶点vi的属性条件判断结果,VertexArray[i]=0为vi不满足属性条件,VertexArray[i]=1为vi满足属性条件,VertexArray[i]的结果通过顺序遍历需要的在步骤7得到的顶点属性数组即可得到;
边标记数组定义为一个大小为|E|的布尔值数组EdgeArray,EdgeArray[k]表示边位移(offset)为k的边eij的属性条件判断结果,EdgeArray[k]=0为eij或vi或vj不满足UserQuery,EdgeArray[k]=1为eij、vi和vj均满足UserQuery;
当UserQuery涉及的顶点属性数目和边属性数目均大于0时,程序需要先顺序遍历若干个涉及的顶点属性数组,再顺序遍历若干个涉及的边属性数组,EdgeArray[k]=1的条件是eij、vi和vj均满足UserQuery;
当UserQuery涉及的顶点属性数目为0,边属性数目大于0时,程序需要只顺序遍历若干个涉及的边属性数组,EdgeArray[k]=1的条件是eij满足UserQuery;
当UserQuery涉及的顶点属性数目大于0,边属性数目为0时,程序需要只顺序遍历若干个涉及的顶点属性数组,EdgeArray[k]=1的条件是eij所对应的vi和vj均满足UserQuery;
当UserQuery涉及的顶点属性数目和边属性数目均为0时,程序默认任意EdgeArray[k]=1,k∈[1,|E|]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110334310.7A CN113065035A (zh) | 2021-03-29 | 2021-03-29 | 一种单机核外属性图计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110334310.7A CN113065035A (zh) | 2021-03-29 | 2021-03-29 | 一种单机核外属性图计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113065035A true CN113065035A (zh) | 2021-07-02 |
Family
ID=76564436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110334310.7A Pending CN113065035A (zh) | 2021-03-29 | 2021-03-29 | 一种单机核外属性图计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113065035A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114637756A (zh) * | 2021-10-20 | 2022-06-17 | 支付宝(杭州)信息技术有限公司 | 分布式数据处理方法、装置及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646079A (zh) * | 2013-12-13 | 2014-03-19 | 武汉大学 | 一种用于图数据库搜索的分布式索引及其并行生成方法 |
US20160253389A1 (en) * | 2015-02-27 | 2016-09-01 | Linkedln Corporation | Joins and aggregations on massive graphs using large-scale graph processing |
CN107122248A (zh) * | 2017-05-02 | 2017-09-01 | 华中科技大学 | 一种存储优化的分布式图处理方法 |
CN109522102A (zh) * | 2018-09-11 | 2019-03-26 | 华中科技大学 | 一种基于i/o调度的多任务外存模式图处理方法 |
CN110058945A (zh) * | 2019-04-22 | 2019-07-26 | 河南工业大学 | 基于割点分割机制的大规模图并行计算最大流的加速算法 |
WO2019241021A1 (en) * | 2018-06-15 | 2019-12-19 | Futurewei Technologies, Inc. | System for handling concurrent property graph queries |
CN111274457A (zh) * | 2020-02-03 | 2020-06-12 | 中国人民解放军国防科技大学 | 一种网络图分割方法及存储介质 |
-
2021
- 2021-03-29 CN CN202110334310.7A patent/CN113065035A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646079A (zh) * | 2013-12-13 | 2014-03-19 | 武汉大学 | 一种用于图数据库搜索的分布式索引及其并行生成方法 |
US20160253389A1 (en) * | 2015-02-27 | 2016-09-01 | Linkedln Corporation | Joins and aggregations on massive graphs using large-scale graph processing |
CN107122248A (zh) * | 2017-05-02 | 2017-09-01 | 华中科技大学 | 一种存储优化的分布式图处理方法 |
WO2019241021A1 (en) * | 2018-06-15 | 2019-12-19 | Futurewei Technologies, Inc. | System for handling concurrent property graph queries |
CN109522102A (zh) * | 2018-09-11 | 2019-03-26 | 华中科技大学 | 一种基于i/o调度的多任务外存模式图处理方法 |
CN110058945A (zh) * | 2019-04-22 | 2019-07-26 | 河南工业大学 | 基于割点分割机制的大规模图并行计算最大流的加速算法 |
CN111274457A (zh) * | 2020-02-03 | 2020-06-12 | 中国人民解放军国防科技大学 | 一种网络图分割方法及存储介质 |
Non-Patent Citations (3)
Title |
---|
CHENG S, ZHANG G, SHU J, ET AL: "Asyncstripe: I/o efficient asynchronous graph computing on a single server", 2016 INTERNATIONAL CONFERENCE ON HARDWARE/SOFTWARE CODESIGN AND SYSTEM SYNTHESIS (CODES+ISSS) * |
KUMAR P, HUANG H H.: "G-store: high-performance graph store for trillion-edge processing", SC \'16: PROCEEDINGS OF THE INTERNATIONAL CONFERENCE FOR HIGH PERFORMANCE COMPUTING, NETWORKING, STORAGE AND ANALYSIS * |
王靖等: "面向图计算的内存系统优化技术综述", 中国科学:信息科学, vol. 49, no. 3 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114637756A (zh) * | 2021-10-20 | 2022-06-17 | 支付宝(杭州)信息技术有限公司 | 分布式数据处理方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8400458B2 (en) | Method and system for blocking data on a GPU | |
US20220147795A1 (en) | Neural network tiling method, prediction method, and related apparatus | |
CN109522428B (zh) | 一种基于索引定位的图计算系统的外存访问方法 | |
CN114399227A (zh) | 一种基于数字孪生的生产调度方法、装置及计算机设备 | |
CN115168281B (zh) | 一种基于禁忌搜索算法的神经网络片上映射方法和装置 | |
CN112231961A (zh) | 大规模有限元网格数据存储索引方法 | |
CN113449153A (zh) | 索引构建方法、装置、计算机设备和存储介质 | |
Han et al. | A novel ReRAM-based processing-in-memory architecture for graph computing | |
Souravlas et al. | Hybrid CPU-GPU community detection in weighted networks | |
CN111429974A (zh) | 超级计算机平台上的分子动力学模拟短程力并行优化方法 | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
CN113065035A (zh) | 一种单机核外属性图计算方法 | |
Chen et al. | Rubik: A hierarchical architecture for efficient graph learning | |
Han et al. | Parallel DBSCAN algorithm using a data partitioning strategy with spark implementation | |
CN108182243B (zh) | 一种基于Spark的分布式进化算法岛模型并行化方法 | |
Kumari et al. | Scalable parallel algorithms for shared nearest neighbor clustering | |
CN116089414B (zh) | 基于海量数据场景的时序数据库写入性能优化方法及装置 | |
Elmeiligy et al. | An efficient parallel indexing structure for multi-dimensional big data using spark | |
Yang et al. | EDGES: An efficient distributed graph embedding system on GPU clusters | |
CN112817982B (zh) | 一种基于lsm树的动态幂律图存储方法 | |
Agrawal et al. | High performance big data clustering | |
CN114117150A (zh) | 一种基于gpu的图分析算法通用优化方法 | |
CN116185377A (zh) | 计算图的优化方法、计算装置及相关产品 | |
CN113900808A (zh) | 一种基于任意多面体非结构网格的mpi并行数据结构 | |
CN116185378A (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 |