[发明专利]基于CPU和MIC协同计算的最短路径规划并行化方法有效
申请号: | 201410466606.4 | 申请日: | 2014-09-12 |
公开(公告)号: | CN104266657B | 公开(公告)日: | 2017-08-04 |
发明(设计)人: | 宋海娜;华诚;周晓辉;刘逍;江蓉;周津羽;范昭伦 | 申请(专利权)人: | 海华电子企业(中国)有限公司;西安邮电大学 |
主分类号: | G01C21/34 | 分类号: | G01C21/34 |
代理公司: | 广州市华学知识产权代理有限公司44245 | 代理人: | 黄磊,李斌 |
地址: | 510663 广东省广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 cpu mic 协同 计算 路径 规划 并行 方法 | ||
1.基于CPU和MIC协同计算的最短路径规划并行化方法,其特征在于,包括下述步骤:
S1、全网节点最短路径规划并行化设计,在N个节点构成的路网图中,将每个节点相对全网其他节点基于Dijkstra算法的最短路径规划定义为一个不可再分的单元,每个单元任务的执行都通过一个线程去完成,N个节点构成的路网图就有N个单元任务需要完成;
S2、CPU与MIC控制线程,针对每一个计算设备创建一个pthread线程,其中一个计算设备定义为节点内所有CPU硬件线程或是一块MIC卡;
S3、CPU与MIC之间任务包调度,采用动态的任务分发模式来分发CPU与MIC之间的任务包;
S4、完成所有节点计算,控制线程退出;
S5、MIC数据输出的IO隐藏,设计输出数据的IO隐藏,通过设计了两个缓冲区:Buff1/Buff2来隐藏IO通信与计算,每台MIC计算设备都有自己对应的两个缓冲区;
对于MIC0设备而言,当其将计算结果向Buff1填充时,MIC0的控制线程则会将Buff2的数据从MIC1设备的自由内存中拷贝到CPU的内存中,同理当MIC0在写Buff2时,其控制线程就将Buff1中的数据拷贝到CPU的内存中;
同时设计了输出缓冲区数据向CPU端结果存储内存区域下传完成信号,MIC在准备向某个缓冲区写入数据时会检查其是否可写,若是没有下传完成事件信号,则MIC等待该缓冲区下传完成。
2.根据权利要求1所述的基于CPU和MIC协同计算的最短路径规划并行化方法,其特征在于,步骤S1中,不论是CPU线程还是MIC线程,都将K个单元任务合成一个任务包交给CPU或MIC执行,CPU每次捕获的任务大小定义为:P*K,其中P为CPU的硬件线程数目;MIC每次捕获的任务大小为:Q*K,其中Q为MIC的硬件线程数目。
3.根据权利要求1或2所述的基于CPU和MIC协同计算的最短路径规划并行化方法,其特征在于,步骤S1中,还包括读入路网的数据,将硬盘上的路网数据读入程序空间,同时将网络数据转成邻接表形式存储。
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协同计算的最短路径规划并行化方法,其特征在于,步骤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减去P*K;当g_num小于等于零时,两类控制线程退出,对于最后一次剩余任务书小于Q*K或是P*K时,相应线程没有计算任务的就空着运行,不执行实际有效的任务。
7.根据权利要求6所述的基于CPU和MIC协同计算的最短路径规划并行化方法,其特征在于,步骤S3中,动态的任务分发模式来分发CPU与MIC之间的任务包的具体方法为:任务调度是基于创建的控制线程来实现,并通过全局变量g_num来表征所要处理的资源数目,对于计算资源的动态分配通过互斥锁来完成,当某个MIC控制线程对于全局变量g_num加锁成功时,则会首先将g_num的值存到其局部资源变量中去,让后将g_num的值减去Q*K,最后解锁;当CPU控制线程加锁成功时,则会首先将g_num的值存到其局部资源变量中去,让后将g_num的值减去P*K,最后解锁。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于海华电子企业(中国)有限公司;西安邮电大学,未经海华电子企业(中国)有限公司;西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410466606.4/1.html,转载请声明来源钻瓜专利网。