CN117251380B - 一种面向单调流式图的优先级异步调度方法及*** - Google Patents
一种面向单调流式图的优先级异步调度方法及*** Download PDFInfo
- Publication number
- CN117251380B CN117251380B CN202311492620.7A CN202311492620A CN117251380B CN 117251380 B CN117251380 B CN 117251380B CN 202311492620 A CN202311492620 A CN 202311492620A CN 117251380 B CN117251380 B CN 117251380B
- Authority
- CN
- China
- Prior art keywords
- node
- graph
- neighbor
- update
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000004891 communication Methods 0.000 claims abstract description 78
- 238000004364 calculation method Methods 0.000 claims abstract description 55
- 238000013507 mapping Methods 0.000 claims abstract description 37
- 238000000547 structure data Methods 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 117
- 230000009191 jumping Effects 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 13
- 230000003247 decreasing effect Effects 0.000 claims description 9
- 125000004122 cyclic group Chemical group 0.000 claims description 8
- 238000005192 partition Methods 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 4
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 4
- 238000004422 calculation algorithm Methods 0.000 description 53
- 238000010586 diagram Methods 0.000 description 11
- 238000004458 analytical method Methods 0.000 description 9
- 238000005457 optimization Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 206010000117 Abnormal behaviour Diseases 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000003012 network analysis Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 235000008429 bread Nutrition 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003921 oil Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向单调流式图的优先级异步调度方法及***,本发明方法包括设置单调函数Func和选择函数Sel,初始化n个全局通信队列globalQueue和映射表chunk_info;读取图的更新信息;判断图是否存在更新,若存在更新则对图结构数据进行更新;将图划分为n个子图并记录到映射表chunk_info中;将更新信息记录到对应的全局通信队列globalQueue,创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算,当所有线程执行完毕后返回继续判断图是否存在更新。本发明旨在针对单调流式图进行优化调度以减少其冗余计算,同时在冗余率、性能开销与并行性间达到最优的效果。
Description
技术领域
本发明涉及计算机领域的图计算调度技术,具体涉及一种面向单调流式图的优先级异步调度方法及***。
背景技术
图作为一种可以表示复杂数据关系的数据表示在现实中广泛存在,图计算作为分析手段已被应用于多个领域,如:在社交网络领域,图节点通常表示为用户,而边通常表示为用户间的互动关系,例如转发、评论、点赞等,通过对社交网络进行分析计算来获取如节点的中心性指标、网络的社区结构、热门话题等信息;在疫情防控领域,图节点可以表示人群中的个体,边则可以表示个点之间的接触或传播关系,通过对疫情传播网络进行分析计算来获取如关键节点、社区结构、传播路径等信息;在金融监测领域,图的节点通常表示金融市场中的个体,例如公司、银行、投资者等,而边则通常表示这些个体之间的关系,例如贷款关系、股权关系、交易关系等,通过对金融风险网络进行分析计算来获得关键节点、社区结构、市场连通性和稳定性等指标;在网络安全领域,图的节点通常表示为主机、IP地址、用户等,边可以表示通信、访问、关系等,通过对网络进行分析计算可以得到异常行为、攻击者、攻击路径等信息。而在现实中这些图的结构通常随着时间不断变化,此类型的图称为流式图,流式图通常表现出变化大和变化快的特点,如对于推特来说,每秒有超过6000条信息被删除和增加,这就需要实时对社交网络指标进行分析计算,对图计算的性能提出了更高的要求,为了改善流式图计算的实时性,近年来有许多研究提出使用增量计算的方式来减少计算量,进而提高计算的实时性。
在流式图计算中会存在大量的冗余计算,以单源最短路径(SSSP)算法为例进行说明,图1为示例图,原点为v0,新增了两条边(虚线所示)分别为v0~v4和v0~v5。图2为增量计算流程,虚线框内的节点值需要被更新,新增边v0~v4后,首先边的目的节点v4依据边的原节点和权重计算得到新的值,v4的新值沿着图拓扑结构传递到其后续节点(v5、v6、v7、v8、v9);对于新增边v0~v5的计算也按照类似的方法进行,节点值的更新顺序为v6、v7、v8、v9。由于两个更新序列有很大重叠但是没有对齐导致多个节点被更新了两次,进而产生了大量的冗余计算。此例中总的更新次数为11,而冗余更新数为5,冗余更新比例为45%。
图3所示为使用增量计算时SSSP算法在已知的不同图数据(包括com-amazon、com-dblp、soc-LiveJournall、wiki-Talk和wili-topcats)上冗余更新的比例,其中横坐标为图数据集,纵坐标表示冗余更新的比例,图中分别展示了更新批次大小分别为10k和50k的结果,首先可以发现在不同图的计算上都存在不同程度的冗余,其中在com-amazon上的冗余更新比例高达75%;其次随着更新批次大小的增加,冗余更新比例也在不同程度有所增加,即图结构变化越频繁,冗余计算的比例也就越高,其余算法也表现出了与SSSP相似的冗余更新特征。
有许多研究通过减少冗余更新来提高性能,然而本实施例发现他们对于一类具有单调性的算法优化不足。此类单调流式图的计算可以用式(1)表示:
,(1)
其中,为节点值,/>为边e的源节点的值,/>为边e的权重;函数为单调函数,可以为单调递增(/>)、单调递减();/>函数为/>函数(取最小值)或/>函数(取最大值)。现有方法没有通过有效利用其特性来消除冗余计算,因而还存在较多的冗余计算。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种面向单调流式图的优先级异步调度方法及***,本发明旨在针对单调流式图进行优化调度以减少其冗余计算,同时在冗余率、性能开销与并行性间达到最优的效果。
为了解决上述技术问题,本发明采用的技术方案为:
一种面向单调流式图的优先级异步调度方法,包括:
S101,设置单调函数Func和选择函数Sel,其中单调函数Func为单调递增函数或者单调递减函数,选择函数Sel为取最大值函数或取最小值函数;初始化n个全局通信队列globalQueue以用于n个线程间的通信,初始化映射表chunk_info用于记录划分子图在线程上的映射关系;
S102,读取图的更新信息;
S103,判断图是否存在更新,若不存在更新,则结束并退出;否则跳转步骤S104;
S104,对图结构数据进行更新;
S105,将图划分为n个子图并记录到映射表chunk_info中;
S106,将更新信息记录到对应的全局通信队列globalQueue中,创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算,当所有线程都执行完毕后,跳转步骤S102。
可选地,步骤S106中创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算时,任意线程执行图计算包括:
S201,初始化用于记录节点更新顺序信息的顺序数组bins以及索引bin_index,获取本线程的编号id,初始化线程的结束标识flag;
S202,根据本线程的编号id判断本线程的全局通信队列globalQueue[id]是否为空,如果全局通信队列globalQueue[id]为空则置结束标识flag为true,判断其余线程的结束标识flag为true是否成立,若不成立,则跳转步骤S202,若成立则线程结束并退出;如果全局通信队列globalQueue[id]非空,则置结束标识flag为false,跳转步骤S203;
S203,读取全局通信队列globalQueue[id]中队首元素(val, dest),其中val为节点的值,dest为目标节点号;
S204,针对读取的队首元素(val, dest)进行本地更新;
S205,依据确定的调度顺序来对索引bin_index进行更新,若更新后的索引bin_index有效,则跳转步骤S206;否则,跳转步骤S202;
S206,判断索引bin_index在顺序数组bins中索引的元素bins[bin_index]是否为空,若为空则跳转步骤S205;否则,获取顺序数组bins中的节点v及其所有的邻居节点构成的邻居节点集合neighbors;初始化循环变量i等于0;
S207,判断循环变量i小于邻居节点集合neighbors的数量是否成立,若不成立,则判定邻居节点集合neighbors遍历完毕,跳转步骤S205;否则,跳转步骤S208;
S208,根据循环变量i获取邻居节点集合neighbors中对应的邻居节点n及其边e;利用单调函数Func执行Func(v.val,e.weight)对所有邻居节点执行节点更新得到新的节点值newV,其中v.val为任意邻居节点v的值,e.weight为边e的权重;通过邻居节点n在映射表chunk_info中的元素chunk_info[n]、本线程的编号id相等是否成立,若成立则判定邻居节点n点在本子图中,对邻居节点n和新的节点值newV执行本地更新UpdateLocal,否则对邻居节点n和新的节点值newV执行远程更新UpdateRemote,跳转步骤S207。
可选地,步骤S208中对邻居节点n和新的节点值newV执行本地更新UpdateLocal包括:
S301,获取传入的新的节点值newV和目标节点号dest,并根据目标节点号dest获取目标更新节点的节点原值oldV;
S302,通过选择函数Sel执行Sel (newV, oldV)不等于节点原值oldV是否成立来判断目标更新节点是否需要更新,若成立则将新的节点值newV赋值给目标更新节点,同时将目标节点号dest存到顺序数组bins中以供后续调度更新,否则不更新,结束。
可选地,步骤S302中将目标节点号dest存到顺序数组bins中时,存到顺序数组bins中的索引位置为newV mod Delta,其中mod为模运算,Delta为预设的模运算参数。
可选地,步骤S208中对邻居节点n和新的节点值newV执行远程更新UpdateRemote包括:
S401,获取传入的新的节点值newV和目标节点号dest;
S402,将目标节点号dest及其对应的新的节点值newV存到目标节点号dest的子图dest.chunk作为索引所对应的全局通信队列globalQueue[dest.chunk]中。
可选地,步骤S207中跳转步骤S208之后、步骤S208之前还包括选择函数Sel的类型,若选择函数Sel为取最小值函数,则将邻居节点集合neighbors按照邻居节点的节点值从小到大排序,使得优先处理节点值最小的邻居节点;否则,将邻居节点集合neighbors按照邻居节点的节点值从大到小排序,使得优先处理节点值最大的邻居节点。
此外,本发明还提供一种面向单调流式图的优先级异步调度***,包括:
初始化程序单元,用于设置单调函数Func和选择函数Sel,其中单调函数Func为单调递增函数或者单调递减函数,选择函数Sel为取最大值函数或取最小值函数;初始化n个全局通信队列globalQueue以用于n个线程间的通信,初始化映射表chunk_info用于记录划分子图在线程上的映射关系;
图读取程序单元,用于读取图的更新信息;
图更新判断程序单元,用于判断图是否存在更新,若不存在更新,则结束并退出;否则跳转执行图数据更新程序单元;
图数据更新程序单元,对图结构数据进行更新;
子图划分程序单元,用于将图划分为n个子图并记录到映射表chunk_info中;
图计算执行管理程序单元,用于将更新信息记录到对应的全局通信队列globalQueue中,创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算,当所有线程都执行完毕后,跳转执行图读取程序单元
可选地,所述图计算执行管理程序单元中启动的线程执行图计算包括:
线程初始化程序单元,用于初始化用于记录节点更新顺序信息的顺序数组bins以及索引bin_index,获取本线程的编号id,初始化线程的结束标识flag;
全局通信队列判断程序单元,用于根据本线程的编号id判断本线程的全局通信队列globalQueue[id]是否为空,如果全局通信队列globalQueue[id]为空则置结束标识flag为true,判断其余线程的结束标识flag为true是否成立,若不成立,则继续检查本线程的全局通信队列globalQueue[id]是否为空,若成立则线程结束并退出;如果全局通信队列globalQueue[id]非空,则置结束标识flag为false,跳转执行队首元素读取程序单元;
队首元素读取程序单元,用于读取全局通信队列globalQueue[id]中队首元素(val, dest),其中val为节点的值,dest为目标节点号;
队首元素更新程序单元,用于针对读取的队首元素(val, dest)进行本地更新;
索引更新程序单元,用于依据确定的调度顺序来对索引bin_index进行更新,若更新后的索引bin_index有效,则执行邻居节点收集程序单元;否则执行全局通信队列判断程序单元;
邻居节点收集程序单元,用于判断索引bin_index在顺序数组bins中索引的元素bins[bin_index]是否为空,若为空则执行索引更新程序单元;否则,获取顺序数组bins中的节点v及其所有的邻居节点构成的邻居节点集合neighbors;初始化循环变量i等于0;
循环判断程序单元,用于判断循环变量i小于邻居节点集合neighbors的数量是否成立,若不成立,则判定邻居节点集合neighbors遍历完毕,跳转执行索引更新程序单元;否则,执行邻居节点遍历程序单元;
邻居节点遍历程序单元,用于根据循环变量i获取邻居节点集合neighbors中对应的邻居节点n及其边e;利用单调函数Func执行Func(v.val,e.weight)对所有邻居节点执行节点更新得到新的节点值newV,其中v.val为任意邻居节点v的值,e.weight为边e的权重;通过邻居节点n在映射表chunk_info中的元素chunk_info[n]、本线程的编号id相等是否成立,若成立则判定邻居节点n点在本子图中,对邻居节点n和新的节点值newV执行本地更新UpdateLocal,否则对邻居节点n和新的节点值newV执行远程更新UpdateRemote,执行循环判断程序单元。
此外,本发明还提供一种面向单调流式图的优先级异步调度***,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述面向单调流式图的优先级异步调度方法。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述面向单调流式图的优先级异步调度方法。
和现有技术相比,本发明主要具有下述优点:本发明方法包括设置单调函数Func和选择函数Sel,初始化n个全局通信队列globalQueue和映射表chunk_info;读取图的更新信息;判断图是否存在更新,若存在更新则对图结构数据进行更新;将图划分为n个子图并记录到映射表chunk_info中;将更新信息记录到对应的全局通信队列globalQueue中,创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算,当所有线程都执行完毕后,返回继续判断图是否存在更新。本发明能够在保证并行性和降低额外开销的前提下针对单调流式图进行优化调度以减少其冗余计算,同时在冗余率、性能开销与并行性间达到最优的效果。
附图说明
图1为流式图计算的示例。
图2为流式图计算中的增量计算示意图。
图3为增量计算中冗余更新比重示意图。
图4为本发明实施例方法的基本流程示意图。
图5为本发明实施例中线程执行图计算的流程示意图。
图6为本发明实施例中执行本地更新UpdateLocal的流程示意图。
图7为本发明实施例中执行远程更新UpdateRemote的流程示意图。
图8为本发明实施例中作为对比的SSSP算法的归一化执行时间实验结果。
图9为本发明实施例中作为对比的SSSP算法的归一化更新比率实验结果。
图10为本发明实施例中作为对比的BFS算法的归一化执行时间实验结果。
图11为本发明实施例中作为对比的BFS算法的归一化更新比率实验结果。
图12为本发明实施例中作为对比的MC算法的归一化执行时间实验结果。
图13为本发明实施例中作为对比的MC算法的归一化更新比率实验结果。
图14为本发明实施例中作为对比的SSWP算法归一化执行时间的实验结果。
图15为本发明实施例中作为对比的SSWP算法的归一化更新比率实验结果。
具体实施方式
实施例一:
下文将以社交网络领域的单调流式图的计算为例,对本发明面向单调流式图的优先级异步调度方法及***进行进一步的详细说明。本实施例中,社交网络领域的单调流式图中的图节点为用户,边为用户间的互动关系,互动关系包括转发、评论、点赞等,单调流式图的计算用于获取节点的中心性指标、网络的社区结构、热门话题等信息中的至少一种。需要说明的是,本实施例方法仅仅涉及单调流式图的计算的调度,而不依赖于单调流式图的计算的具体细节,而且获取节点的中心性指标、网络的社区结构、热门话题等信息也是现有公知的单调流式图的计算方法,故在此不再赘述。
如图4所示,本实施例面向单调流式图的优先级异步调度方法包括:
S101,设置单调函数Func和选择函数Sel,其中单调函数Func为单调递增函数或者单调递减函数,选择函数Sel为取最大值函数或取最小值函数;初始化n个全局通信队列globalQueue以用于n个线程间的通信,初始化映射表chunk_info用于记录划分子图在线程上的映射关系;
S102,读取图的更新信息;
S103,判断图是否存在更新,若不存在更新,则结束并退出;否则跳转步骤S104;
S104,对图结构数据进行更新;
S105,将图划分为n个子图并记录到映射表chunk_info中;
S106,将更新信息记录到对应的全局通信队列globalQueue中,创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算,当所有线程都执行完毕后,跳转步骤S102。
本实施例中将面向单调流式图的优先级异步调度方法具体实现为一个异步执行框架ParPrio来优化算法性能。
如图5所示,本实施例步骤S106中创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算时,任意线程执行图计算包括:
S201,初始化用于记录节点更新顺序信息的顺序数组bins以及索引bin_index,获取本线程的编号id,初始化线程的结束标识flag;
S202,根据本线程的编号id判断本线程的全局通信队列globalQueue[id]是否为空,如果全局通信队列globalQueue[id]为空则置结束标识flag为true,判断其余线程的结束标识flag为true是否成立,若不成立,则跳转步骤S202,若成立则线程结束并退出;如果全局通信队列globalQueue[id]非空,则置结束标识flag为false,跳转步骤S203;
S203,读取全局通信队列globalQueue[id]中队首元素(val, dest),其中val为节点的值,dest为目标节点号;
S204,针对读取的队首元素(val, dest)进行本地更新;
S205,依据确定的调度顺序来对索引bin_index进行更新,若更新后的索引bin_index有效,则跳转步骤S206;否则,跳转步骤S202;
S206,判断索引bin_index在顺序数组bins中索引的元素bins[bin_index]是否为空,若为空则跳转步骤S205;否则,获取顺序数组bins中的节点v及其所有的邻居节点构成的邻居节点集合neighbors;初始化循环变量i等于0;
S207,判断循环变量i小于邻居节点集合neighbors的数量是否成立,若不成立,则判定邻居节点集合neighbors遍历完毕,跳转步骤S205;否则,跳转步骤S208;
S208,根据循环变量i获取邻居节点集合neighbors中对应的邻居节点n及其边e;利用单调函数Func执行Func(v.val,e.weight)对所有邻居节点执行节点更新得到新的节点值newV,其中v.val为任意邻居节点v的值,e.weight为边e的权重;通过邻居节点n在映射表chunk_info中的元素chunk_info[n]、本线程的编号id相等是否成立,若成立则判定邻居节点n点在本子图中,对邻居节点n和新的节点值newV执行本地更新UpdateLocal,否则对邻居节点n和新的节点值newV执行远程更新UpdateRemote,跳转步骤S207。
如图6所示,本实施例步骤S208中对邻居节点n和新的节点值newV执行本地更新UpdateLocal包括:
S301,获取传入的新的节点值newV和目标节点号dest,并根据目标节点号dest获取目标更新节点的节点原值oldV;
S302,通过选择函数Sel执行Sel (newV, oldV)不等于节点原值oldV是否成立来判断目标更新节点是否需要更新,若成立则将新的节点值newV赋值给目标更新节点,同时将目标节点号dest存到顺序数组bins中以供后续调度更新,否则不更新,结束。
本实施例步骤S302中将目标节点号dest存到顺序数组bins中时,存到顺序数组bins中的索引位置为newV mod Delta,其中mod为模运算,Delta为预设的模运算参数。
如图7所示,本实施例步骤S208中对邻居节点n和新的节点值newV执行远程更新UpdateRemote包括:
S401,获取传入的新的节点值newV和目标节点号dest;
S402,将目标节点号dest及其对应的新的节点值newV存到目标节点号dest的子图dest.chunk作为索引所对应的全局通信队列globalQueue[dest.chunk]中。
表1所示为可以使用式(1)进行表示的单调算法,如BFS(Bread First Search)算法,SSSP(Single-Source Shortest Path)算法,SSWP(Single-Source Widest Path)算法、MC(Max Computation)算法等。
表1:不同算法特性和优化策略;
BFS算法对图进行遍历以获取图中所有节点距离原点的深度,因此选择/>操作来得到此节点到原点的最小深度,可用于社交网络分析中的好友关系、社区发现问题,用于人工智能中的状态空间搜索和网络链接分析等领域。SSSP算法是用于寻找图中单源最短路径的算法,因此/>选择/>操作来得到此节点距离原点的最短距离,在网络路由方面,通过对拓扑结构进行分析来找到一个节点到其他节点的最短路径,从而实现高效网络路由和数据传输;在社交网络分析中,通过此算法找到从一个节点到其他节点的最短路径从而实现社交网络的关系分析和影响力评估。SSWP算法是一种用于求解单源最宽路径的算法,因此/>选择/>操作来得到节点到原点的最宽路径,在网络通信中最宽路径指网络中的最大带宽路径,可用于寻找两个节点之间的最大带宽路径,在交通规划中,最宽路径指道路的最大通行能力,可用于寻找两地之间的最大通行能力路径。MC算法查找图中最大的节点值,因此/>选择/>操作来得到图中最大的节点值,在社交网络分析中可用于查找网络中最活跃用户或最受欢迎的帖子。作为一种可选的实施方式,为了减少冗余计算,本实施例中针对面向单调流式图的优先级异步调度提出了优化策略,当本实施例方法对应的/>选择/>操作时,首先更新节点值最小的点,否则首先更新节点值最大的点,这样便可以完全消除冗余计算,进而更快实现收敛,具体地,本实施例中步骤S207中跳转步骤S208之后、步骤S208之前还包括选择函数Sel的类型,若选择函数Sel为取最小值函数,则将邻居节点集合neighbors按照邻居节点的节点值从小到大排序,使得优先处理节点值最小的邻居节点;否则,将邻居节点集合neighbors按照邻居节点的节点值从大到小排序,使得优先处理节点值最大的邻居节点。表2所示为本实施例方法(Ours)和现有方法在冗余率、性能开销和并行性间的对比。
表2:本实施例方法(Ours)和现有方法的性能对比表;
表2中,Baseline(基线)基于ligra方法并将其引入到流式图计算中,使用基于Push的同步更新方式,具有较高的并行度和较低的性能开销,由于其未考虑迭代间的冗余更新,因此具有较高的冗余更新率;Dijkstra方法为了降低SSSP算法的计算复杂度而提出,通过优先传播具有最短路径的节点更新来消除冗余,但是由于算法固有的特性无法实现并行性,其次由于每次需要找到具有最短路径的节点因此具有一定的性能开销;Δ-stepping方法为了弥补Dijkstra方法在并行性上的不足而提出,通过对节点进行分组进而在降低冗余率和提高并行性间实现权衡,由于其使用桶进行分组因而不会引入额外的性能开销;Maiter方法使用异步更新策略,在保证并行性的基础上降低了同步开销,为了减少冗余更新提出了基于变化值的调度策略,即优先调度变化最大的节点,在一定程度上可以减少冗余更新,同样此调度方式会引入一定的性能开销;TDGraph方法通过将图划分并映射到不同处理器上可以实现较好的并行性,为了减少冗余更新,首先通过遍历图的拓扑结构来追踪受影响的节点,之后依据追踪结果来调度合适的节点进行更新,由于需要事先的预处理操作因而引入一定的性能开销,此外对于存在环的图其仅能在一定程度上减少冗余更新。可以看到现有的设计无法同时在冗余率、性能开销与并行性间达到最优的效果,而本实施例方法(本方法)相比于现有方法可以同时在这几方面达到较优的结果。
本实施例使用Intel i7 12700H处理器和Ubuntu14.04操作***对异步执行框架ParPrio进行评估,为了对异步执行框架ParPrio的单线程性能进行评估,本实施例也实现了单线程版的异步执行框架ParPrio,命名为SerPrio。为了评估所提框架的有效性,本实施例使用了几种框架进行对比,实验配置如表3所示,由于Δ-stepping方法只是针对SSSP算法提出,本实施例对其进行了扩展以使其应用于其他算法。同时测试算法和数据集分别如表1和表4所示,使用的更新批量大小为50k。
表3:实验配置;
表4:数据集;
图8~图15所示为基于不同算法和数据集各框架的实验结果对比(包括归一化执行时间和归一化更新比率),更新批次大小为50k。图8和图9所示为针对SSSP算法的实验结果对比,其中图8为SSSP算法的归一化执行时间,时间越少性能越高;图9为SSSP算法的归一化更新比率,归一化更新比率越低计算量越小,可以发现归一化执行时间与计算量密切相关,此外异步执行框架ParPrio和SerPrio的更新数量相当,说明无论是并行还是串行所提框架都具有好的表现,异步执行框架ParPrio更新数量较Δ-Stepping和Maiter分别减少了29.16%和45.99%,性能进而分别提升了2.54倍和1.50倍。图10和图11所示为针对BFS算法的实验对比结果,其中图10为BFS算法的归一化执行时间,图11为BFS算法的归一化更新比率,可以发现相较于SSSP算法,BFS算法的冗余计算量较小,进而相对可提升的空间较小,实验结果表明异步执行框架ParPrio更新数量较Maiter减少了5.83%,但较Δ-Stepping算法稍有增加,但是异步执行框架ParPrio性能较它们分别提升了1.23倍和0.48倍,这是由于Δ-Stepping算法为了减小计算量而牺牲了并行性,导致性能变差。图12和图13所示为针对MC算法的实验对比结果,其中图12为MC算法的归一化执行时间,图13为MC算法的归一化更新比率,可以发现base配置的计算冗余大,异步执行框架ParPrio更新数量较Δ-Stepping和Maiter分别减少了59.50%和26.87%,性能进而分别提升了2.87倍和1.02倍。图14和图15所示为针对SSWP算法的实验对比结果,其中图14为SSWP算法的归一化执行时间,图15为SSWP算法的归一化更新比率,异步执行框架ParPrio更新数量较Δ-Stepping和Maiter分别减少了26.96%和4.16%,性能进而分别提升了1.54倍和0.63倍。
针对在动态图计算中存在大量的冗余计算,冗余计算严重影响动态图计算的性能,进而影响响应的实时性,研究发现具有单调性的图算法还有进一步提升空间,先前的研究不足以解决此问题,本实施例面向单调流式图的优先级异步调度方法旨在通过降低此类算法存在的冗余计算。为了解决上述问题,本实施例面向单调流式图的优先级异步调度方法通过基于优先级的调度优化方法,可以完全消除此类算法中的冗余计算,针对并行场景提出了异步执行与调度优化相结合的框架ParPrio,能够实现较快收敛,可以很好与调度优化策略配合加快收敛,在保证并行性的前提下最大程度减少了冗余计算。而且,考虑到此类计算的收敛方向具有单调性,本实施例面向单调流式图的优先级异步调度方法通过控制节点更新顺序沿着收敛方向,进而最大程度减少冗余计算。经过验证,在多种图算法和数据集上与多种框架进行对比表明,本实施例面向单调流式图的优先级异步调度方法在性能上均优于Δ-Stepping(1.23-2.87倍)和Maiter(0.48-1.50倍)。
此外,本实施例还提供一种面向单调流式图的优先级异步调度***,包括:
初始化程序单元,用于设置单调函数Func和选择函数Sel,其中单调函数Func为单调递增函数或者单调递减函数,选择函数Sel为取最大值函数或取最小值函数;初始化n个全局通信队列globalQueue以用于n个线程间的通信,初始化映射表chunk_info用于记录划分子图在线程上的映射关系;
图读取程序单元,用于读取图的更新信息;
图更新判断程序单元,用于判断图是否存在更新,若不存在更新,则结束并退出;否则跳转执行图数据更新程序单元;
图数据更新程序单元,对图结构数据进行更新;
子图划分程序单元,用于将图划分为n个子图并记录到映射表chunk_info中;
图计算执行管理程序单元,用于将更新信息记录到对应的全局通信队列globalQueue中,创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算,当所有线程都执行完毕后,跳转执行图读取程序单元
本实施例中,图计算执行管理程序单元中启动的线程执行图计算包括:
线程初始化程序单元,用于初始化用于记录节点更新顺序信息的顺序数组bins以及索引bin_index,获取本线程的编号id,初始化线程的结束标识flag;
全局通信队列判断程序单元,用于根据本线程的编号id判断本线程的全局通信队列globalQueue[id]是否为空,如果全局通信队列globalQueue[id]为空则置结束标识flag为true,判断其余线程的结束标识flag为true是否成立,若不成立,则继续检查本线程的全局通信队列globalQueue[id]是否为空,若成立则线程结束并退出;如果全局通信队列globalQueue[id]非空,则置结束标识flag为false,跳转执行队首元素读取程序单元;
队首元素读取程序单元,用于读取全局通信队列globalQueue[id]中队首元素(val, dest),其中val为节点的值,dest为目标节点号;
队首元素更新程序单元,用于针对读取的队首元素(val, dest)进行本地更新;
索引更新程序单元,用于依据确定的调度顺序来对索引bin_index进行更新,若更新后的索引bin_index有效,则执行邻居节点收集程序单元;否则执行全局通信队列判断程序单元;
邻居节点收集程序单元,用于判断索引bin_index在顺序数组bins中索引的元素bins[bin_index]是否为空,若为空则执行索引更新程序单元;否则,获取顺序数组bins中的节点v及其所有的邻居节点构成的邻居节点集合neighbors;初始化循环变量i等于0;
循环判断程序单元,用于判断循环变量i小于邻居节点集合neighbors的数量是否成立,若不成立,则判定邻居节点集合neighbors遍历完毕,跳转执行索引更新程序单元;否则,执行邻居节点遍历程序单元;
邻居节点遍历程序单元,用于根据循环变量i获取邻居节点集合neighbors中对应的邻居节点n及其边e;利用单调函数Func执行Func(v.val,e.weight)对所有邻居节点执行节点更新得到新的节点值newV,其中v.val为任意邻居节点v的值,e.weight为边e的权重;通过邻居节点n在映射表chunk_info中的元素chunk_info[n]、本线程的编号id相等是否成立,若成立则判定邻居节点n点在本子图中,对邻居节点n和新的节点值newV执行本地更新UpdateLocal,否则对邻居节点n和新的节点值newV执行远程更新UpdateRemote,执行循环判断程序单元。
此外,本实施例还提供一种面向单调流式图的优先级异步调度***,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述面向单调流式图的优先级异步调度方法。此外,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述面向单调流式图的优先级异步调度方法。
实施例二:
本实施例与实施例一基本相同,主要区别为涉及的应用领域不同。
本实施例中涉及的领域为金融监测领域,图的节点表示金融市场中的个体,例如公司、银行、投资者等,而边则通常表示这些个体之间的关系,例如贷款关系、股权关系、交易关系等,通过对金融风险网络进行分析计算来获得关键节点、社区结构、市场连通性和稳定性等指标中的至少一种。需要说明的是,获得关键节点、社区结构、市场连通性和稳定性等指标是现有公知的计算方法,故在此不再赘述。
此外,本实施例还提供一种面向单调流式图的优先级异步调度***,包括:
初始化程序单元,用于设置单调函数Func和选择函数Sel,其中单调函数Func为单调递增函数或者单调递减函数,选择函数Sel为取最大值函数或取最小值函数;初始化n个全局通信队列globalQueue以用于n个线程间的通信,初始化映射表chunk_info用于记录划分子图在线程上的映射关系;
图读取程序单元,用于读取图的更新信息;
图更新判断程序单元,用于判断图是否存在更新,若不存在更新,则结束并退出;否则跳转执行图数据更新程序单元;
图数据更新程序单元,对图结构数据进行更新;
子图划分程序单元,用于将图划分为n个子图并记录到映射表chunk_info中;
图计算执行管理程序单元,用于将更新信息记录到对应的全局通信队列globalQueue中,创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算,当所有线程都执行完毕后,跳转执行图读取程序单元
本实施例中,图计算执行管理程序单元中启动的线程执行图计算包括:
线程初始化程序单元,用于初始化用于记录节点更新顺序信息的顺序数组bins以及索引bin_index,获取本线程的编号id,初始化线程的结束标识flag;
全局通信队列判断程序单元,用于根据本线程的编号id判断本线程的全局通信队列globalQueue[id]是否为空,如果全局通信队列globalQueue[id]为空则置结束标识flag为true,判断其余线程的结束标识flag为true是否成立,若不成立,则继续检查本线程的全局通信队列globalQueue[id]是否为空,若成立则线程结束并退出;如果全局通信队列globalQueue[id]非空,则置结束标识flag为false,跳转执行队首元素读取程序单元;
队首元素读取程序单元,用于读取全局通信队列globalQueue[id]中队首元素(val, dest),其中val为节点的值,dest为目标节点号;
队首元素更新程序单元,用于针对读取的队首元素(val, dest)进行本地更新;
索引更新程序单元,用于依据确定的调度顺序来对索引bin_index进行更新,若更新后的索引bin_index有效,则执行邻居节点收集程序单元;否则执行全局通信队列判断程序单元;
邻居节点收集程序单元,用于判断索引bin_index在顺序数组bins中索引的元素bins[bin_index]是否为空,若为空则执行索引更新程序单元;否则,获取顺序数组bins中的节点v及其所有的邻居节点构成的邻居节点集合neighbors;初始化循环变量i等于0;
循环判断程序单元,用于判断循环变量i小于邻居节点集合neighbors的数量是否成立,若不成立,则判定邻居节点集合neighbors遍历完毕,跳转执行索引更新程序单元;否则,执行邻居节点遍历程序单元;
邻居节点遍历程序单元,用于根据循环变量i获取邻居节点集合neighbors中对应的邻居节点n及其边e;利用单调函数Func执行Func(v.val,e.weight)对所有邻居节点执行节点更新得到新的节点值newV,其中v.val为任意邻居节点v的值,e.weight为边e的权重;通过邻居节点n在映射表chunk_info中的元素chunk_info[n]、本线程的编号id相等是否成立,若成立则判定邻居节点n点在本子图中,对邻居节点n和新的节点值newV执行本地更新UpdateLocal,否则对邻居节点n和新的节点值newV执行远程更新UpdateRemote,执行循环判断程序单元。
此外,本实施例还提供一种面向单调流式图的优先级异步调度***,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述面向单调流式图的优先级异步调度方法。此外,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述面向单调流式图的优先级异步调度方法。
实施例三:
本实施例与实施例一基本相同,主要区别为涉及的应用领域不同。
本实施例中涉及的领域为网络安全领域,图的节点表示为主机、IP地址或用户等,边可以表示为通信、访问或关系等,通过对网络进行分析计算可以得到异常行为、攻击者、攻击路径等信息。需要说明的是,对网络进行分析计算可以得到异常行为、攻击者、攻击路径等信息是现有公知的计算方法,故在此不再赘述。
此外,本实施例还提供一种面向单调流式图的优先级异步调度***,包括:
初始化程序单元,用于设置单调函数Func和选择函数Sel,其中单调函数Func为单调递增函数或者单调递减函数,选择函数Sel为取最大值函数或取最小值函数;初始化n个全局通信队列globalQueue以用于n个线程间的通信,初始化映射表chunk_info用于记录划分子图在线程上的映射关系;
图读取程序单元,用于读取图的更新信息;
图更新判断程序单元,用于判断图是否存在更新,若不存在更新,则结束并退出;否则跳转执行图数据更新程序单元;
图数据更新程序单元,对图结构数据进行更新;
子图划分程序单元,用于将图划分为n个子图并记录到映射表chunk_info中;
图计算执行管理程序单元,用于将更新信息记录到对应的全局通信队列globalQueue中,创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算,当所有线程都执行完毕后,跳转执行图读取程序单元
本实施例中,图计算执行管理程序单元中启动的线程执行图计算包括:
线程初始化程序单元,用于初始化用于记录节点更新顺序信息的顺序数组bins以及索引bin_index,获取本线程的编号id,初始化线程的结束标识flag;
全局通信队列判断程序单元,用于根据本线程的编号id判断本线程的全局通信队列globalQueue[id]是否为空,如果全局通信队列globalQueue[id]为空则置结束标识flag为true,判断其余线程的结束标识flag为true是否成立,若不成立,则继续检查本线程的全局通信队列globalQueue[id]是否为空,若成立则线程结束并退出;如果全局通信队列globalQueue[id]非空,则置结束标识flag为false,跳转执行队首元素读取程序单元;
队首元素读取程序单元,用于读取全局通信队列globalQueue[id]中队首元素(val, dest),其中val为节点的值,dest为目标节点号;
队首元素更新程序单元,用于针对读取的队首元素(val, dest)进行本地更新;
索引更新程序单元,用于依据确定的调度顺序来对索引bin_index进行更新,若更新后的索引bin_index有效,则执行邻居节点收集程序单元;否则执行全局通信队列判断程序单元;
邻居节点收集程序单元,用于判断索引bin_index在顺序数组bins中索引的元素bins[bin_index]是否为空,若为空则执行索引更新程序单元;否则,获取顺序数组bins中的节点v及其所有的邻居节点构成的邻居节点集合neighbors;初始化循环变量i等于0;
循环判断程序单元,用于判断循环变量i小于邻居节点集合neighbors的数量是否成立,若不成立,则判定邻居节点集合neighbors遍历完毕,跳转执行索引更新程序单元;否则,执行邻居节点遍历程序单元;
邻居节点遍历程序单元,用于根据循环变量i获取邻居节点集合neighbors中对应的邻居节点n及其边e;利用单调函数Func执行Func(v.val,e.weight)对所有邻居节点执行节点更新得到新的节点值newV,其中v.val为任意邻居节点v的值,e.weight为边e的权重;通过邻居节点n在映射表chunk_info中的元素chunk_info[n]、本线程的编号id相等是否成立,若成立则判定邻居节点n点在本子图中,对邻居节点n和新的节点值newV执行本地更新UpdateLocal,否则对邻居节点n和新的节点值newV执行远程更新UpdateRemote,执行循环判断程序单元。
此外,本实施例还提供一种面向单调流式图的优先级异步调度***,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述面向单调流式图的优先级异步调度方法。此外,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述面向单调流式图的优先级异步调度方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种面向单调流式图的优先级异步调度方法,其特征在于,包括:
S101,设置单调函数Func和选择函数Sel,其中单调函数Func为单调递增函数或者单调递减函数,选择函数Sel为取最大值函数或取最小值函数;初始化n个全局通信队列globalQueue以用于n个线程间的通信,初始化映射表chunk_info用于记录划分子图在线程上的映射关系;
S102,读取图的更新信息;
S103,判断图是否存在更新,若不存在更新,则结束并退出;否则跳转步骤S104;
S104,对图结构数据进行更新;
S105,将图划分为n个子图并记录到映射表chunk_info中;
S106,将更新信息记录到对应的全局通信队列globalQueue中,创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算,当所有线程都执行完毕后,跳转步骤S102;
步骤S106中创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算时,任意线程执行图计算包括:
S201,初始化用于记录节点更新顺序信息的顺序数组bins以及索引bin_index,获取本线程的编号id,初始化线程的结束标识flag;
S202,根据本线程的编号id判断本线程的全局通信队列globalQueue[id]是否为空,如果全局通信队列globalQueue[id]为空则置结束标识flag为true,判断其余线程的结束标识flag为true是否成立,若不成立,则跳转步骤S202,若成立则线程结束并退出;如果全局通信队列globalQueue[id]非空,则置结束标识flag为false,跳转步骤S203;
S203,读取全局通信队列globalQueue[id]中队首元素,该队首元素由val和dest构成,其中val为节点的值,dest为目标节点号;
S204,针对读取的由val和dest构成的队首元素进行本地更新;
S205,依据确定的调度顺序来对索引bin_index进行更新,若更新后的索引bin_index有效,则跳转步骤S206;否则,跳转步骤S202;
S206,判断索引bin_index在顺序数组bins中索引的元素bins[bin_index]是否为空,若为空则跳转步骤S205;否则,获取顺序数组bins中的节点v及其所有的邻居节点构成的邻居节点集合neighbors;初始化循环变量i等于0;
S207,判断循环变量i小于邻居节点集合neighbors的数量是否成立,若不成立,则判定邻居节点集合neighbors遍历完毕,跳转步骤S205;否则,跳转步骤S208;
S208,根据循环变量i获取邻居节点集合neighbors中对应的邻居节点n及其边e;利用单调函数Func执行Func(n.val,e.weight)对所有邻居节点执行节点更新得到新的节点值newV,其中n.val为任意邻居节点n的值,e.weight为边e的权重;通过邻居节点n在映射表chunk_info中的元素chunk_info[n]、本线程的编号id相等是否成立,若成立则判定邻居节点n点在本子图中,对邻居节点n和新的节点值newV执行本地更新UpdateLocal,否则对邻居节点n和新的节点值newV执行远程更新UpdateRemote,跳转步骤S207。
2.根据权利要求1所述的面向单调流式图的优先级异步调度方法,其特征在于,步骤S208中对邻居节点n和新的节点值newV执行本地更新UpdateLocal包括:
S301,获取传入的新的节点值newV和目标节点号dest,并根据目标节点号dest获取目标更新节点的节点原值oldV;
S302,通过选择函数Sel执行Sel (newV, oldV)不等于节点原值oldV是否成立来判断目标更新节点是否需要更新,若成立则将新的节点值newV赋值给目标更新节点,同时将目标节点号dest存到顺序数组bins中以供后续调度更新,否则不更新,结束。
3. 根据权利要求2所述的面向单调流式图的优先级异步调度方法,其特征在于,步骤S302中将目标节点号dest存到顺序数组bins中时,存到顺序数组bins中的索引位置为newVmod Delta,其中mod为模运算,Delta为预设的模运算参数。
4.根据权利要求1所述的面向单调流式图的优先级异步调度方法,其特征在于,步骤S208中对邻居节点n和新的节点值newV执行远程更新UpdateRemote包括:
S401,获取传入的新的节点值newV和目标节点号dest;
S402,将目标节点号dest及其对应的新的节点值newV存到目标节点号dest的子图dest.chunk作为索引所对应的全局通信队列globalQueue[dest.chunk]中。
5.根据权利要求1所述的面向单调流式图的优先级异步调度方法,其特征在于,步骤S207中跳转步骤S208之后、步骤S208之前还包括选择函数Sel的类型,若选择函数Sel为取最小值函数,则将邻居节点集合neighbors按照邻居节点的节点值从小到大排序,使得优先处理节点值最小的邻居节点;否则,将邻居节点集合neighbors按照邻居节点的节点值从大到小排序,使得优先处理节点值最大的邻居节点。
6.一种面向单调流式图的优先级异步调度***,其特征在于,包括:
初始化程序单元,用于设置单调函数Func和选择函数Sel,其中单调函数Func为单调递增函数或者单调递减函数,选择函数Sel为取最大值函数或取最小值函数;初始化n个全局通信队列globalQueue以用于n个线程间的通信,初始化映射表chunk_info用于记录划分子图在线程上的映射关系;
图读取程序单元,用于读取图的更新信息;
图更新判断程序单元,用于判断图是否存在更新,若不存在更新,则结束并退出;否则跳转执行图数据更新程序单元;
图数据更新程序单元,对图结构数据进行更新;
子图划分程序单元,用于将图划分为n个子图并记录到映射表chunk_info中;
图计算执行管理程序单元,用于将更新信息记录到对应的全局通信队列globalQueue中,创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算,当所有线程都执行完毕后,跳转执行图读取程序单元;所述创建并启动n个线程来结合单调函数Func和选择函数Sel执行图计算时,任意线程执行图计算包括:S201,初始化用于记录节点更新顺序信息的顺序数组bins以及索引bin_index,获取本线程的编号id,初始化线程的结束标识flag;S202,根据本线程的编号id判断本线程的全局通信队列globalQueue[id]是否为空,如果全局通信队列globalQueue[id]为空则置结束标识flag为true,判断其余线程的结束标识flag为true是否成立,若不成立,则跳转步骤S202,若成立则线程结束并退出;如果全局通信队列globalQueue[id]非空,则置结束标识flag为false,跳转步骤S203;S203,读取全局通信队列globalQueue[id]中队首元素,该队首元素由val和dest构成,其中val为节点的值,dest为目标节点号;S204,针对读取的由val和dest构成的队首元素进行本地更新;S205,依据确定的调度顺序来对索引bin_index进行更新,若更新后的索引bin_index有效,则跳转步骤S206;否则,跳转步骤S202;S206,判断索引bin_index在顺序数组bins中索引的元素bins[bin_index]是否为空,若为空则跳转步骤S205;否则,获取顺序数组bins中的节点v及其所有的邻居节点构成的邻居节点集合neighbors;初始化循环变量i等于0;S207,判断循环变量i小于邻居节点集合neighbors的数量是否成立,若不成立,则判定邻居节点集合neighbors遍历完毕,跳转步骤S205;否则,跳转步骤S208;S208,根据循环变量i获取邻居节点集合neighbors中对应的邻居节点n及其边e;利用单调函数Func执行Func(n.val,e.weight)对所有邻居节点执行节点更新得到新的节点值newV,其中n.val为任意邻居节点n的值,e.weight为边e的权重;通过邻居节点n在映射表chunk_info中的元素chunk_info[n]、本线程的编号id相等是否成立,若成立则判定邻居节点n点在本子图中,对邻居节点n和新的节点值newV执行本地更新UpdateLocal,否则对邻居节点n和新的节点值newV执行远程更新UpdateRemote,跳转步骤S207。
7.一种面向单调流式图的优先级异步调度***,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~5中任意一项所述面向单调流式图的优先级异步调度方法。
8.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~5中任意一项所述面向单调流式图的优先级异步调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311492620.7A CN117251380B (zh) | 2023-11-10 | 2023-11-10 | 一种面向单调流式图的优先级异步调度方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311492620.7A CN117251380B (zh) | 2023-11-10 | 2023-11-10 | 一种面向单调流式图的优先级异步调度方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117251380A CN117251380A (zh) | 2023-12-19 |
CN117251380B true CN117251380B (zh) | 2024-03-19 |
Family
ID=89133519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311492620.7A Active CN117251380B (zh) | 2023-11-10 | 2023-11-10 | 一种面向单调流式图的优先级异步调度方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117251380B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2949867A1 (en) * | 2015-08-20 | 2017-02-20 | Takayuki Hirai | Route generation program, route generation method and route generation apparatus |
US9609031B1 (en) * | 2013-12-17 | 2017-03-28 | Amazon Technologies, Inc. | Propagating state information to network nodes |
WO2017214461A1 (en) * | 2016-06-08 | 2017-12-14 | The Broad Institute, Inc. | Linear genome assembly from three dimensional genome structure |
CN107479968A (zh) * | 2017-07-28 | 2017-12-15 | 华中科技大学 | 一种面向动态图增量计算的均衡负载方法及*** |
CN109408046A (zh) * | 2018-09-05 | 2019-03-01 | 河海大学 | 一种基于图的最短路Web服务组合方法 |
CN109818866A (zh) * | 2019-03-22 | 2019-05-28 | 武汉大学 | 一种能量意识和多维参数感知的服务质量保障路由方法 |
CN111104224A (zh) * | 2019-12-20 | 2020-05-05 | 华中科技大学 | 一种基于fpga的动态图处理方法 |
CN111581443A (zh) * | 2020-04-16 | 2020-08-25 | 南方科技大学 | 分布式图计算方法、终端、***及存储介质 |
WO2020206705A1 (zh) * | 2019-04-10 | 2020-10-15 | 山东科技大学 | 一种基于集群节点负载状态预测的作业调度方法 |
CN114817648A (zh) * | 2022-05-12 | 2022-07-29 | 华中科技大学 | 一种高能效协同图计算方法及装置 |
CN115756803A (zh) * | 2022-11-30 | 2023-03-07 | 电子科技大学 | 面向异构计算***的任务调度方法、装置、设备及介质 |
CN115858128A (zh) * | 2022-12-23 | 2023-03-28 | 金品计算机科技(天津)有限公司 | 一种基于异构多核处理器任务调度方法 |
CN116304252A (zh) * | 2023-01-04 | 2023-06-23 | 南京理工大学 | 一种基于图结构聚类的通信网络防诈骗方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6424933B1 (en) * | 2000-03-17 | 2002-07-23 | Vicinity Corporation | System and method for non-uniform scaled mapping |
-
2023
- 2023-11-10 CN CN202311492620.7A patent/CN117251380B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9609031B1 (en) * | 2013-12-17 | 2017-03-28 | Amazon Technologies, Inc. | Propagating state information to network nodes |
CA2949867A1 (en) * | 2015-08-20 | 2017-02-20 | Takayuki Hirai | Route generation program, route generation method and route generation apparatus |
WO2017214461A1 (en) * | 2016-06-08 | 2017-12-14 | The Broad Institute, Inc. | Linear genome assembly from three dimensional genome structure |
CN107479968A (zh) * | 2017-07-28 | 2017-12-15 | 华中科技大学 | 一种面向动态图增量计算的均衡负载方法及*** |
CN109408046A (zh) * | 2018-09-05 | 2019-03-01 | 河海大学 | 一种基于图的最短路Web服务组合方法 |
CN109818866A (zh) * | 2019-03-22 | 2019-05-28 | 武汉大学 | 一种能量意识和多维参数感知的服务质量保障路由方法 |
WO2020206705A1 (zh) * | 2019-04-10 | 2020-10-15 | 山东科技大学 | 一种基于集群节点负载状态预测的作业调度方法 |
CN111104224A (zh) * | 2019-12-20 | 2020-05-05 | 华中科技大学 | 一种基于fpga的动态图处理方法 |
CN111581443A (zh) * | 2020-04-16 | 2020-08-25 | 南方科技大学 | 分布式图计算方法、终端、***及存储介质 |
CN114817648A (zh) * | 2022-05-12 | 2022-07-29 | 华中科技大学 | 一种高能效协同图计算方法及装置 |
CN115756803A (zh) * | 2022-11-30 | 2023-03-07 | 电子科技大学 | 面向异构计算***的任务调度方法、装置、设备及介质 |
CN115858128A (zh) * | 2022-12-23 | 2023-03-28 | 金品计算机科技(天津)有限公司 | 一种基于异构多核处理器任务调度方法 |
CN116304252A (zh) * | 2023-01-04 | 2023-06-23 | 南京理工大学 | 一种基于图结构聚类的通信网络防诈骗方法 |
Non-Patent Citations (2)
Title |
---|
An effective framework for asynchronous incremental graph processing;Xinqiao Lv等;《Home Frontiers of Computer Science Article》;第539-551页 * |
面向GPU平台的复杂网络core分解方法研究;张珩;崔强;侯朋朋;武延军;赵琛;;软件学报(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117251380A (zh) | 2023-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108900476B (zh) | 基于Spark与隔离森林的并行网络流量异常检测方法 | |
EP1227630A2 (en) | Method, system and computer program product for classifying packet flows with a bit mask | |
CN109522428B (zh) | 一种基于索引定位的图计算***的外存访问方法 | |
WO2017016220A1 (en) | Connectivity-aware virtual network embedding | |
US20080218518A1 (en) | Balancing collections of vertices in a network | |
CN110659284A (zh) | 基于树图结构的区块定序方法及***、数据处理终端 | |
Zeng et al. | Utilizing partial policies for identifying equivalence of behavioral models | |
Zhang et al. | HotGraph: Efficient asynchronous processing for real-world graphs | |
Nguyen et al. | Rethinking virtual link mapping in network virtualization | |
EP2884453A1 (en) | A computer implemented method, a system and computer program product for partitioning a graph representative of a communication network | |
CN117251380B (zh) | 一种面向单调流式图的优先级异步调度方法及*** | |
CN116894469B (zh) | 端边云计算环境中的dnn协同推理加速方法、设备及介质 | |
Laszka et al. | Linear loss function for the network blocking game: An efficient model for measuring network robustness and link criticality | |
Mirsadeghi et al. | PTRAM: A parallel topology-and routing-aware mapping framework for large-scale HPC systems | |
CN109063089B (zh) | 一种基于社区结构的子图匹配方法及装置 | |
Campbell | Autonomous Network Defense Using Multi-Agent Reinforcement Learning and Self-Play | |
Oh et al. | Android botnet categorization and family detection based on behavioural and signature data | |
Gayathri et al. | ex-FTCD: A novel mapreduce model for distributed multi source shortest path problem | |
CN115412328A (zh) | 基于机器学习的攻击路径溯源和攻击源头检测方法 | |
CN115955323A (zh) | 一种网络安全态势感知方法、装置及电子设备 | |
Boryczka et al. | Efficient DPSO neighbourhood for dynamic traveling salesman problem | |
Muthunagai et al. | TDOPS: Time series based deduplication and optimal data placement strategy for IIoT in cloud environment | |
Fajardo-Delgado et al. | Randomized self-stabilizing leader election in preference-based anonymous trees | |
Ngo et al. | Optimizing Cyber Response Time on Temporal Active Directory Networks Using Decoys | |
Zemali et al. | CS-ABC: a cooperative system based on artificial bee colony to resolve the DNA fragment assembly problem |
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 |