《基于CPU和MIC协同计算的最短路径规划并行化方法.pdf》由会员分享,可在线阅读,更多相关《基于CPU和MIC协同计算的最短路径规划并行化方法.pdf(10页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104266657 A (43)申请公布日 2015.01.07 CN 104266657 A (21)申请号 201410466606.4 (22)申请日 2014.09.12 G01C 21/34(2006.01) (71)申请人 海华电子企业 ( 中国 ) 有限公司 地址 510663 广东省广州市萝岗开发区科学 城南翔二路 23 号 申请人 西安邮电大学 (72)发明人 宋海娜 华诚 周晓辉 刘逍 江蓉 周津羽 范昭伦 (74)专利代理机构 广州市华学知识产权代理有 限公司 44245 代理人 黄磊 李斌 (54) 发明名称 基于 CPU 和 MIC 协同计算。
2、的最短路径规划并 行化方法 (57) 摘要 本发明公开了一种基于 CPU 和 MIC 协同计 算的最短路径规划并行化方法, 包括下述步骤 : S1、 全网节点最短路径规划并行化设计 ; S2、 CPU 与 MIC 控制线程, 针对每一个计算设备创建一个 pthread 线程 ; S3、 CPU 与 MIC 之间任务包调度, 采 用动态的任务分发模式来分发 CPU 与 MIC 之间的 任务包 ; S4、 完成所有节点计算, 控制线程退出。 本发明充分利用了 CPU 与 MIC 协作的优势, 同时 利用 CPU 与 MIC 的多线程并行计算来加速大型路 网的全网节点路径规划过程。同时本发明提出了 。
3、CPU与MIC之间计算任务的动态分配方式, 通过动 态任务分配的方式, 使相应的程序能最佳适应不 同计算能力配比的 CPU/MIC 设备, 使之能以最佳 的比例分配计算任务, 达到最佳协作的效率。 (51)Int.Cl. 权利要求书 2 页 说明书 5 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书5页 附图2页 (10)申请公布号 CN 104266657 A CN 104266657 A 1/2 页 2 1. 基于 CPU 和 MIC 协同计算的最短路径规划并行化方法, 其特征在于, 包括下述步骤 : S1、 全网节点最短路径规划并行化。
4、设计, 在 N 个节点构成的路网图中, 将每个节点相对 全网其他节点基于 Dijkstra 算法的最短路径规划定义为一个不可再分的单元, 每个单元 任务的执行都通过一个线程去完成, N 个节点构成的路网图就有 N 个单元任务需要完成 ; S2、 CPU 与 MIC 控制线程, 针对每一个计算设备创建一个 pthread 线程, 其中一个计算 设备定义为节点内所有 CPU 硬件线程或是一块 MIC 卡 ; S3、 CPU 与 MIC 之间任务包调度, 采用动态的任务分发模式来分发 CPU 与 MIC 之间的任 务包 ; S4、 完成所有节点计算, 控制线程退出。 2. 根据权利要求 1 所述的基。
5、于 CPU 和 MIC 协同计算的最短路径规划并行化方法, 其特 征在于, 步骤 S1 中, 不论是 CPU 线程还是 MIC 线程, 都将 K 个单元任务合成一个任务包交给 CPU 或 MIC 执行, CPU 每次捕获的任务大小定义为 : P*K, 其中 P 为 CPU 的硬件线程数目 ; MIC 每次捕获的任务大小为 : Q*K, 其中 Q 为 MIC 的硬件线程数目。 3. 根据权利要求 1 或 2 所述的基于 CPU 和 MIC 协同计算的最短路径规划并行化方法, 其特征在于, 步骤 S1 中, 还包括读入路网的数据, 将硬盘上的路网数据读入程序空间, 同时 将网络数据转成邻接表形式存。
6、储。 4. 根据权利要求 1 所述的基于 CPU 和 MIC 协同计算的最短路径规划并行化方法, 其特 征在于, 步骤 S2 中, 若有 N 块 MIC 卡则创建 N+1 个 pthread 线程, 0 到 N-1 线程一一对应控 制 N 块 MIC 设备的计算任务分发与回收, 第 N 线程控制 CPU 计算任务分发与回收 ; 在每个 pthread 线程内部使用 OpenMP 来多线程化, 根据程序执行所在设备的不同分别调用 CPU 版 或是 MIC 版的 OpenMP 动态链接库。 5. 根据权利要求 1 所述的基于 CPU 和 MIC 协同计算的最短路径规划并行化方法, 其特 征在于, 。
7、步骤 S3 中, 利用全局变量 g_num 来表征所有单元任务的数目, 设 N 个节点构成的路 网, g_num 初始化值就为 N, 每个计算设备的控制线程负责为其计算设备捕获计算任务, 控 制线程分为两类 : MIC 控制线程和 CPU 控制线程。 6. 根据权利要求 5 所述的基于 CPU 和 MIC 协同计算的最短路径规划并行化方法, 其特 征在于, 控制线程对于计算任务的捕获通过加锁的方式实现 : MIC 线程每次加锁成功则截 取 Q*K 大小的计算任务, 全局变量 g_num 的相应自减 Q*K 的大小, CPU 线程每次枷锁成功则 截取 P*K 大小的任务, 相应的 g_num 减。
8、去 P*K ; 当 g_num 小于等于零时, 两类控制线程退出, 对于最后一次剩余任务书小于Q*K或是P*K时, 相应线程没有计算任务的就空着运行, 不执 行实际有效的任务。 7. 根据权利要求 6 所述的基于 CPU 和 MIC 协同计算的最短路径规划并行化方法, 其特 征在于, 步骤 S3 中, 动态的任务分发模式来分发 CPU 与 MIC 之间的任务包的具体方法为 : 任务调度是基于创建的控制线程来实现, 并通过全局变量 g_num 来表征所要处理的资源数 目, 对于计算资源的动态分配通过互斥锁来完成, 当某个 MIC 控制线程对于全局变量 g_num 加锁成功时, 则会首先将g_nu。
9、m的值存到其局部资源变量中去, 让后将g_num的值减去Q*K, 最后解锁 ; 当 CPU 控制线程加锁成功时, 则会首先将 g_num 的值存到其局部资源变量中去, 让后将 g_num 的值减去 P*K, 最后解锁。 8. 根据权利要求 1 所述的基于 CPU 和 MIC 协同计算的最短路径规划并行化方法, 其特 权 利 要 求 书 CN 104266657 A 2 2/2 页 3 征在于, 还包括步骤S5 : MIC数据输出的IO隐藏, 设计输出数据的IO隐藏, 通过设计了两个 缓冲区 : Buff1/Buff2 来隐藏 IO 通信与计算, 每台 MIC 计算设备都有自己对应的两个缓冲 区。
10、。 9. 根据权利要求 8 所述的基于 CPU 和 MIC 协同计算的最短路径规划并行化方法, 其特 征在于, 在步骤 S5 中, 对于 MIC0 设备而言, 当其将计算结果向 Buff1 填充时, MIC0 的控制 线程则会将 Buff2 的数据从 MIC1 设备的自由内存中拷贝到 CPU 的内存中, 同理当 MIC0 在 写 Buff2 时, 其控制线程就将 Buff1 中的数据拷贝到 CPU 的内存中。 10.根据权利要求9所述的基于CPU和MIC协同计算的最短路径规划并行化方法, 其特 征在于, 设计了输出缓冲区数据向 CPU 端结果存储内存区域下传完成信号, MIC 在准备向某 个缓。
11、冲区写入数据时会检查其是否可写, 若是没有下传完成事件信号, 则 MIC 等待该缓冲 区下传完成。 权 利 要 求 书 CN 104266657 A 3 1/5 页 4 基于 CPU 和 MIC 协同计算的最短路径规划并行化方法 技术领域 0001 本发明涉及路径规划研究领域, 特别涉及一种基于 CPU 和 MIC 协同计算的最短路 径规划并行化方法。 背景技术 0002 随着国内城市化的发展, 城市道路纵横交错, 路网也变得非常的复杂, 对于在城市 出行的人们来说, 如何能快速获取路程起点和终点的最短路径成为其迫切的需求。同时由 于通信技术、 全球定位技术以及路网数据信息化的不断发展, 为人。
12、们的出行电子化导航提 供了基本的必要条件。目前地图导航行业使用的最短路径规划算法多是基于 Dijkstra 或 是其改进版, 相应的时间复杂度为 O(N2) 或者 O(NlogN)。当规划的节点数 N 增长到成千上 万时, 同时还要相应有大量的路径规划请求, 实时的线上规划变得不可实施了。 所以一般最 短路径规划多采用线下的规划预处理出所有节点之间的最短路径, 当有用户请求时直接查 询相应的最短路径。 0003 在线下最短路径预处理过程中, 当路网数据之中新增或者删减一个节点或者一 条线路时, 都要重新计算全网的最短路径列表。以四维地图出品 2013 年的广州市地图为 例, 其路口数目达到了 。
13、90000, 道路数目达到了 120000。根据我们实际测试每次更新全网 节点的最小路径数据单线程计算大约需要 5 天的时间, 同时对于该数量规模的全网节点之 间的最短路径结果大小约为 72GB。针对路径规划的时间效率的问题, 王亚文等 一种动态 搜索区域的最短路径规划算法, 计算机应用研究, 2007 从限制每次动态规划的区域入手, 通过缩小路径规划的范围来实现。不过该种方法只能针对线上实时的路径规划实施。对 于线下的全网路径规划, 不能通过限制区域实现。同样刘晓军等 ( 海量道路数据下的最短 路径规划效率, 计算机系统应用, 2010) 也是通过估价函数快速过滤无效点和路段, 折线简 化等。
14、方法来实现线上实时路径规划。根据专利文献检索, 公开号为 CN102175252 A 的中国 专利提出了基于分级道路网数据的分布式多级道路的动态联合路径规划方法。公开号为 CN 103278168 A 的中国专利提出了通过数据挖掘技术, 利用新闻、 微博、 实时上报交通信 息以及历史规律信息挖掘出交通热点, 进而执行交通热点规避的路径规划。公开号为 CN 101944095 A的中国专利提出了一种优化的Dijkstra方法来实现简化相应的计算。 综合上 述资料, 可以看出针对线下全网节点的路径规划并行计算方法尚未有相关资料公开, 尤其 是针对大型路网尚未有利用 CPU 和 MIC 协同计算的相。
15、关资料公开。 0004 MIC 是由 Intel 公司于 2012 年 12 月发布的基于 x86 架构的协处理器, 其由 57 61 颗物理处理核心构成, 每个物理核心虚拟出 4 个硬件线程, 卡载内存大小为 6GB 8GB, 双精度计算峰值计算能力达到1TFlops。 其在并行计算方面相比CPU更有优势, 根据公开号 为 CN 103018776 A 的中国专利将 MIC 应用于地震成像领域, 其在 PSTM 算法表现达到了相 比单线程约 76 倍的加速比。公开号为 CN 102930473 A 的中国专利将 MIC 应用于期权的定 价, 针对倒向随机微分方程的求解, 获得了 19 倍的加。
16、速比。综上成果, 说明 MIC 在针对并行 计算相比 CPU 而言拥有非常大的优势。同时其采用了与 CPU 相同的 x86 架构, 相比 GPU 大 说 明 书 CN 104266657 A 4 2/5 页 5 大提升了编程的效率。同时 MIC 所支持的 offload、 native 等工作模式也为高性能计算应 用提供了一条更加方便的协处理器利用方式。 发明内容 0005 本发明鉴于现有的最短路径规划线下预处理时间效率低, 不能及时响应城市快速 扩张以及城市交通意外等带来的路网链接规律的变化, 同时对于大型路网来说全网节点之 间的最短路径计算结果非常大, 提出一种适用于大型路网的基于 CPU。
17、 和 MIC 协同计算的最 短路径规划并行化方法。 0006 本发明的目的通过以下的技术方案实现 : 0007 基于 CPU 和 MIC 协同计算的最短路径规划并行化方法, 包括下述步骤 : 0008 S1、 全网节点最短路径规划并行化设计, 在 N 个节点构成的路网图中, 将每个节点 相对全网其他节点基于 Dijkstra 算法的最短路径规划定义为一个不可再分的单元, 每个 单元任务的执行都通过一个线程去完成, N 个节点构成的路网图就有 N 个单元任务需要完 成 ; 0009 S2、 CPU 与 MIC 控制线程, 针对每一个计算设备创建一个 pthread 线程, 其中一个 计算设备定义。
18、为节点内所有 CPU 硬件线程或是一块 MIC 卡 ; 0010 S3、 CPU 与 MIC 之间任务包调度, 采用动态的任务分发模式来分发 CPU 与 MIC 之间 的任务包 ; 0011 S4、 完成所有节点计算, 控制线程退出。 0012 优选的, 步骤 S1 中, 不论是 CPU 线程还是 MIC 线程, 都将 K 个单元任务合成一个任 务包交给 CPU 或 MIC 执行, CPU 每次捕获的任务大小定义为 : P*K, 其中 P 为 CPU 的硬件线程 数目 ; MIC 每次捕获的任务大小为 : Q*K, 其中 Q 为 MIC 的硬件线程数目。 0013 优选的, 步骤 S1 中, 。
19、还包括读入路网的数据, 将硬盘上的路网数据读入程序空间, 同时将网络数据转成邻接表形式存储。 0014 优选的, 步骤 S2 中, 若有 N 块 MIC 卡则创建 N+1 个 pthread 线程, 0 到 N-1 线程 一一对应控制 N 块 MIC 设备的计算任务分发与回收, 第 N 线程控制 CPU 计算任务分发与回 收 ; 在每个 pthread 线程内部使用 OpenMP 来多线程化, 根据程序执行所在设备的不同分别 调用 CPU 版或是 MIC 版的 OpenMP 动态链接库。 0015 优选的, 步骤 S3 中, 利用全局变量 g_num 来表征所有单元任务的数目, 设 N 个节点。
20、 构成的路网, g_num 初始化值就为 N, 每个计算设备的控制线程负责为其计算设备捕获计算 任务, 控制线程分为两类 : MIC 控制线程和 CPU 控制线程。 0016 优选的, 控制线程对于计算任务的捕获通过加锁的方式实现 : MIC 线程每次加锁 成功则截取 Q*K 大小的计算任务, 全局变量 g_num 的相应自减 Q*K 的大小, CPU 线程每次枷 锁成功则截取 P*K 大小的任务, 相应的 g_num 减去 P*K ; 当 g_num 小于等于零时, 两类控制 线程退出, 对于最后一次剩余任务书小于Q*K或是P*K时, 相应线程没有计算任务的就空着 运行, 不执行实际有效的任。
21、务。 0017 优选的, 步骤 S3 中, 动态的任务分发模式来分发 CPU 与 MIC 之间的任务包的具体 方法为 : 任务调度是基于创建的控制线程来实现, 并通过全局变量 g_num 来表征所要处理 的资源数目, 对于计算资源的动态分配通过互斥锁来完成, 当某个 MIC 控制线程对于全局 说 明 书 CN 104266657 A 5 3/5 页 6 变量 g_num 加锁成功时, 则会首先将 g_num 的值存到其局部资源变量中去, 让后将 g_num 的 值减去 Q*K, 最后解锁 ; 当 CPU 控制线程加锁成功时, 则会首先将 g_num 的值存到其局部资 源变量中去, 让后将 g_。
22、num 的值减去 P*K, 最后解锁。 0018 优选的, 还包括步骤S5 : MIC数据输出的IO隐藏, 设计输出数据的IO隐藏, 通过设 计了两个缓冲区 : Buff1/Buff2 来隐藏 IO 通信与计算, 每台 MIC 计算设备都有自己对应的 两个缓冲区。 0019 优选的, 在步骤 S5 中, 对于 MIC0 设备而言, 当其将计算结果向 Buff1 填充时, MIC0 的控制线程则会将 Buff2 的数据从 MIC1 设备的自由内存中拷贝到 CPU 的内存中, 同理当 MIC0 在写 Buff2 时, 其控制线程就将 Buff1 中的数据拷贝到 CPU 的内存中。 0020 优选的。
23、, 设计了输出缓冲区数据向 CPU 端结果存储内存区域下传完成信号, MIC 在 准备向某个缓冲区写入数据时会检查其是否可写, 若是没有下传完成事件信号, 则 MIC 等 待该缓冲区下传完成。 0021 本发明与现有技术相比, 具有如下优点和有益效果 : 0022 1、 本发明充分利用了 CPU 与 MIC 协作的优势, 同时利用 CPU 与 MIC 的多线程并行 计算来加速大型路网的全网节点路径规划过程。 0023 2、 本发明提出了 CPU 与 MIC 之间计算任务的动态分配方式, 通过动态任务分配的 方式, 使相应的程序能最佳适应不同计算能力配比的 CPU/MIC 设备, 使之能以最佳的。
24、比例 分配计算任务, 达到最佳协作的效率。 0024 3、 本发明考虑到输出数据量相比输入数据量要大 1000 倍, 提出了输出结果异步 计算的方案, 使得 MIC 上输入数据的计算与其计算结果的输出之间形成异步, 进一步的优 化 CPU 与 MIC 之间的协同工作效率。 附图说明 0025 图 1 是本发明 CPU 与 MIC 协同计算整体流程图 ; 0026 图 2 是本发明 CPU 与 MIC 之间动态最短路径计算任务划分示意图 ; 0027 图 3 是本发明 MIC 的 IO 隐藏示意图。 具体实施方式 0028 下面结合实施例及附图对本发明作进一步详细的描述, 但本发明的实施方式不限。
25、 于此。 0029 实施例 0030 本发明是以 Dijkstra 最短路径规划算法为基础进行提出的, 下面就 Dijkstra 的 全网节点的路径规划加以说明 : 0031 1)Dijkstra 每次计算解决的路网中某个节点 A 到其他节点的最短路径。 0032 2) 对于全网 N 个节点之间的最短路径规划需要调用 N 次的 Dijkstra 计算。 0033 3) 由于现实路网中有道路单行限制, 使得每个节点到其他节点的最短路径需要重 新计算, 而不能直接利用之前的已经优化过的结果来降低相应的计算量。 0034 本发明主要包含如下三个方面 : 1、 同时利用 CPU 与 MIC 的多线程并。
26、行计算来加速 大型路网的全网节点最短路径规划过程。2、 CPU 与 MIC 之间计算任务动态分配, CPU 与 MIC 说 明 书 CN 104266657 A 6 4/5 页 7 之间根据其硬件线程数来定制化的分配特定量的计算任务, 同时该动态分配框架还能自适 应的不同MIC卡数目的节点配置环境。 3、 MIC数据输出IO隐藏。 通过创建双缓冲区Buff1/ Buff2来实现异步计算。 该设计为每个MIC卡都创建了双缓冲区, 从而可以自适应的实现每 个 MIC 数据输出的 IO 隐藏。 0035 通过利用 offload 工作模式将 MIC 与 CPU 协同起来工作, 同时借助 pthrea。
27、d 与 OpenMP 实现计算设备的调度与设备内的并行化计算。程序执行流程如图 1 所示, 具体流程 执行解释如下 : 0036 1、 读入路网数据, 该模块将硬盘上的路网数据读入程序空间, 同时将路网数据转 成邻接表形式存储。 0037 2、 创建CPU/MIC控制线程, 此处利用pthread多线程库创建相应的控制线程, 以单 节点上的有两块 MIC 卡为例, 此时要创建的控制线程数为 3, 其中 0 号与 1 号线程分别对应 于 MIC0 与 MIC1 计算设备, 2 号线程则对应于节点内所有 CPU 构成的计算设备。 0038 3、 调度任务, 调度模块主要是基于上面创建的控制线程来实。
28、现, 此处会通过全局 变量 g_num 来表征所要处理的资源数目, 对于计算资源的动态分配通过互斥锁来实现。当 某个 MIC 控制线程对于全局变量 g_num 加锁成功时, 则会首先将 g_num 的值存到其局部资 源变量中去, 让后将 g_num 的值减去 Q*K, 最后解锁 ; 当 CPU 控制线程加锁成功时, 则会首先 将 g_num 的值存到其局部资源变量中去, 让后将 g_num 的值减去 P*K, 最后解锁, 如图 2 所 示。其中 P/Q 的值, 以所选取的测试节点为例, P 取 30, Q 取 224, 当 MIC 控制线程捕获到相 应量的计算资源时, 会通过同步的offloa。
29、d上传数据到对应的MIC设备上, 而对于计算结果 的下传则是通过异步的 offload 实现 IO 与计算的异步。通过控制线程之间的互斥锁, 实现 最短路径规划计算任务的动态自适应分配。 0039 4、 完成所有节点计算, 控制线程退出, 当 g_num 的值小于等于零时, 则表示所有节 点之间的最短路径规划计算完成。 0040 本实施例中, 在实现 MIC 的 IO 隐藏时, 主要利用双缓冲区的思路来实现最短路径 规划的 MICIO 隐藏。由于最短路径规划的特点是输入数据比较小, 输出数据比较大, 所以主 要在输出数据过程中使用IO隐藏的设计, 如图3所示。 在图3中, 当MIC0设备正在向。
30、Buff1 中写入数据时, 此时MIC0的控制线程则同时将之前已经计算完成的Buff2中的数据向最终 结果的内存区域拷贝。等到下一个周期, 则是 MIC0 向 Buff2 中写入数据, 同时 MIC0 的控制 线程则将上周期写入的 Buff1 中的数据向最终结果的内存区域拷贝。为了确保每次 MIC 写 入某个缓冲区时, 不会出现该缓冲区同时还在下传数据的情况。本实施例中设计了输出缓 冲区数据向 CPU 端结果存储内存区域下传完成信号, MIC 在准备向某个缓冲区写入数据时 会检查其是否可写, 若是没有下传完成事件信号, 则 MIC 等待该缓冲区下传完成。 0041 性能测试 : 0042 测试。
31、数据 : 90452 节点、 126757 条边广州市的路网数据。在 CPU 上利用单线程计算 需要 350973.42s, 在一个有 CPU+3MIC 节点利用 CPU+MIC 多线程运行时间为 987.11s, 加速 比 355.55 倍。 0043 测试软硬件环境 : 0044 说 明 书 CN 104266657 A 7 5/5 页 8 0045 0046 上述实施例为本发明较佳的实施方式, 但本发明的实施方式并不受上述实施例的 限制, 其他的任何未背离本发明的精神实质与原理下所作的改变、 修饰、 替代、 组合、 简化, 均应为等效的置换方式, 都包含在本发明的保护范围之内。 说 明 书 CN 104266657 A 8 1/2 页 9 图 1 说 明 书 附 图 CN 104266657 A 9 2/2 页 10 图 2 图 3 说 明 书 附 图 CN 104266657 A 10 。