[发明专利]一种关于类PLL最短路距离查询算法的并行化加速方法有效
申请号: | 201810008095.X | 申请日: | 2018-01-04 |
公开(公告)号: | CN108363723B | 公开(公告)日: | 2021-07-23 |
发明(设计)人: | 祝远扬;李锐;邱堃;赵进;王新 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/903;G06F9/54 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;陆尤 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 关于 pll 短路 距离 查询 算法 并行 加速 方法 | ||
1.一种关于类PLL最短路距离查询算法的并行化加速方法,其特征在于,根据硬件特性,结合合理的内存共享、加锁、线程通信手段,使得原本串行特征强烈的算法实现高效的并行化,具体步骤如下:
(一)预处理阶段,根据硬件确定对应线程数目,以充分发挥硬件特性;
获取当前处理器的核心数K,读取图的结构并保存在GraphV, E中,将结点按照度数由小到大的顺序存放于集合V中;V为结点集合,以度由大到小顺序存放,E为边的集合;
(二)索引构建阶段,通过共享内存来实现并行化的搜索剪枝;
设索引LABEL是一个集合{LABEL[v], v∈V},其中LABEL[v] 是一个集合{ LABEL[v][t] =pairt, dis(v,t), t∈V };索引LABEL的构建过程,开始,根据预处理阶段所获得到的核心数K开启对应数目的线程,从所有未处理结点中挑出优先级最高的对应数目的结点v1,v2, …,vK,并将每个结点作为搜索起点,每个线程处理一个起点,进行搜索操作逐步完成索引的构建,这是一个并行化的过程;
在搜索过程中,线程间共享当前计算好了的索引LABEL,用于搜索过程的剪枝依据;在各个线程结束后,合并新增加的索引到总的索引列表LABEL中,重复执行上述搜索过程,直到所有的结点都被处理完;
(三)询问查询阶段,合并具有相同端点的询问以减少冗余计算,再并行化处理不同端点的查询;
询问查询阶段开始,先对批量询问进行分析和处理,排序,再通过类似归并的手段将所有询问列表处理成两种类型:具有共同端点的询问组与不具备共同端点的询问组;将具有共同端点的询问组记为:{(A,B1),(A,B2),(A,B3), …} ,其具有共同端点A;不具备共同端点的询问组记为:{(A1, B1), (A2, B2), (A3, B3) …} ;
对于具有共同端点的询问组,先查询共同端点A的索引,即LABEL[A],并保存,再开启对应核心数总数的线程并行化查询所有另一端B1,B2,B3,…的索引,得出最短路的距离;
对于不具有共同端点的询问组,直接开启对应数目的线程进行索引查询,即并行化查询A1与B1, A2与 B2, A3 与B3, …的索引,此时LABEL被所有线程共享,只进行读操作无需加锁。
2.根据权利要求1所述的方法,其特征在于,询问查询阶段,用于最短距离查询,其过程是根据索引构建阶段的结果,遍历两个端点的索引,找到它们所有的共同索引信息作为中间结点,每找到一个中间结点时,计算两段:起点与中间结点、中间结点与终点,的距离之和,最后在所有结果中取出最小值,就是最终答案。
3.根据权利要求2所述的方法,其特征在于,所述中间结点为路由器或者网关代理。
4.根据权利要求1所述的方法,其特征在于,所述的并行化搜索过程里的剪枝过程,关于索引LABEL的读取是所有线程共享的,整个过程以核心数为一组,一次并行后更新总索引,再进入下一轮直到所有结点被处理完。
5. 根据权利要求1所述的方法,其特征在于,对于具有共同端点的询问组,先查询共同端点A点的索引,再通过并行化查询B1, B2, B3, …的索引,这个过程中,索引LABEL是被所有线程共享的,线程数目等于核心数。
6.根据权利要求1所述的方法,其特征在于,所述通过并行化查询A1与B1, A2与 B2,A3 与B3, …的索引,这个过程中,索引LABEL是被所有线程共享的,线程数目等于核心数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810008095.X/1.html,转载请声明来源钻瓜专利网。