[发明专利]一种基于任务窃取的任务调度方法及系统有效
申请号: | 201710290460.6 | 申请日: | 2017-04-28 |
公开(公告)号: | CN107220111B | 公开(公告)日: | 2019-08-09 |
发明(设计)人: | 金海;李陈希;廖小飞;石翔 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 李智;曹葆青 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于任务窃取的任务调度方法及系统,该方法的实现包括:构造任务依赖图,将依赖节点作为回调函数注册至被依赖节点的回调容器中;为线程池中各线程分配一个无锁双端队列并置空,将根节点按照轮询方式放入各线程的无锁双端队列底部;若线程的无锁双端队列不为空,则从无锁双端队列底部取出节点并执行;若线程的无锁双端队列为空,则从其他线程的无锁双端队列顶部窃取节点,并将窃取的节点压入该线程的无锁双端队列底部,取出窃取的节点进行执行;在所有节点任务执行完成后,将任务依赖图中各节点的入度恢复到原始值,并结束对主线程的阻塞。本发明针对大型任务级并行应用程序,可以有效提高传统任务级并行应用程序的性能。 | ||
搜索关键词: | 一种 基于 任务 窃取 调度 方法 系统 | ||
【主权项】:
1.一种基于任务窃取的任务调度方法,其特征在于,包括:(1)将整体计算任务描述为由子任务节点与子任务节点间依赖边组成的任务依赖图,将依赖节点作为回调函数注册至被依赖节点的回调容器中;(2)获取所述任务依赖图中的根节点与叶子节点,为所有叶子节点添加一个虚拟依赖汇节点,所述虚拟依赖汇节点用于阻塞主线程;(3)为线程池中各线程分配一个无锁双端队列并置空,将所有根节点按照轮询方式放入各线程的无锁双端队列底部;(4)对于每个线程,若线程的无锁双端队列不为空,则从线程的无锁双端队列底部取出节点并执行节点中包含的任务,在任务执行结束后,执行节点中回调容器中的所有回调;若线程的无锁双端队列为空,则该线程尝试从其他线程的无锁双端队列顶部窃取节点,若窃取成功则将窃取的节点压入该线程的无锁双端队列底部,执行窃取节点中的任务以及窃取节点中回调容器中的所有回调;(5)在任务依赖图中所有节点中的任务均执行完成后,将任务依赖图中的各节点的入度恢复到原始值,并结束对主线程的阻塞。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710290460.6/,转载请声明来源钻瓜专利网。
- 上一篇:塔式炉后煤仓布置结构
- 下一篇:临河可折叠停车场