[发明专利]一种基于GPU/CPU混合架构的流程序多粒度划分与调度方法有效
申请号: | 201510429763.2 | 申请日: | 2015-07-21 |
公开(公告)号: | CN104965761B | 公开(公告)日: | 2018-11-02 |
发明(设计)人: | 于俊清;陈文斌;何云峰;管涛;唐九飞 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 廖盈春 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 gpu cpu 混合 架构 流程 粒度 划分 调度 方法 | ||
1.一种基于GPU/CPU混合架构的流程序多粒度划分与调度方法,其特征在于,包括:
步骤1引入扩大因子,将计算任务actor稳态执行次数整体扩大;
步骤2根据actor是否具有可并行性以及相应通信开销的大小将其分配到GPU端或CPU端上去运行;
步骤3根据actor连续迭代执行是否存在数据依赖性,将其水平分裂到各GPU端;
步骤4选择合适的CPU核数量,将CPU端任务均衡分配给各CPU核;
步骤5对SDF图进行拓扑排序以满足数据的读写规则,依次遍历拓扑排序中的各actor,确定各actor被流水调度执行时的阶段号;
步骤6根据各actor的通信特点,采用不同存储结构和不同访问类型进行数据流程序的存储访问优化;
步骤7根据各actor的计算特点,压缩计算相同的actor的目标代码。
2.如权利要求1所述的方法,其特征在于,所述步骤1包括以下子步骤:
(1-1)利用下式求得CPU端允许的扩大倍数N1的上限:
N1≤MCPU/MCPUSumneeded
其中,MCPU表示主存可用空间的大小;MCPUSumneeded表示CPU端所有任务未扩大前所需的存储空间总和;
(1-2)利用下式求得GPU端允许的扩大因子N2的上限:
N2≤MGPU/MGPUSumneeded
其中,MGPU表示GPU可用的存储空间;MGPUSumneeded表示GPU端所有任务未扩大前所需的存储空间总和;
(1-3)根据GPU缓冲区分配机制,利用下式求得N2的限制条件:
N2≤MGPUMaxbuffer/MGPUMaxneeded
其中,MGPUMaxbuffer表示GPU每次允许分配缓冲区的最大值;MGPUMaxneeded表示GPU端所有任务未扩大前各需存储空间的最大值;
(1-4)根据N1和N2的限制条件,选择合适的扩大因子。
3.如权利要求1所述的方法,其特征在于,所述步骤2包括以下子步骤:
(2-1)依次判断SDF图中各actor的状态,将状态为stateful的actor划分到CPU端,状态为stateless的actor划分到GPU端,其中,状态为stateful的actor表示该actor连续两次迭代运算之间存在数据依赖,两次迭代运算不可并行执行,状态为stateless的actor表示多次迭代运算之间互相独立,可并行执行;
(2-2)针对划分到GPU端的状态为stateless的actor,依次判断其父子结点,如果其父结点状态为stateful,并且其子结点的状态为stateful,那么将该状态为stateless的结点分配到CPU端,剩余的状态为stateless的结点则分配到GPU端。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510429763.2/1.html,转载请声明来源钻瓜专利网。