一种利用数据拓扑信息的优先级分组调度方法及系统的制作方法

文档序号:9765845阅读:519来源:国知局
一种利用数据拓扑信息的优先级分组调度方法及系统的制作方法
【技术领域】
[0001] 本发明设及计算机及用户级的任务调度领域,特别设及一种利用数据拓扑信息的 优先级分组调度方法及系统。
【背景技术】
[0002] 现代的微处理器结构中存在难W逾越的内存墙,如何优化程序中的数据局部性, 提高其在处理器上的缓存性能,是应用优化的重要课题。
[0003] 结构网格方法的背景如下:在热扩散、电磁场和流体力学等领域中存在着大量的 非线性方程求解,仅有极少数问题可W得到解析解或者摄动解,结构网格方法是解决运类 问题的最重要的数值方法之一,其典型步骤为:离散化求解域,将连续的求解域化为有限的 离散点集,比如固定的等距网格或自适应的结构网格,然后用差商代替微商,在求解域内求 出网格节点的离散解,通过一定迭代步数使得差分方程的解收敛于微分方法的解。
[0004] 在结构(离散)网格中每个点进行的差分计算,常常需要邻近的一些点的值,运一 类的计算被称为stencil计算,stencil计算是结构网格应用的核屯、,也是世界公认的7类高 性能计算模式之一。
[0005] 相关技术1:用Time skewing方法优化stencil计算中的数据重用,如图1所示:
[0006] 结构网格应用的计算访存比很低,如何优化cache的利用率成为提高运类程序在 多核系统上性能的关键之一,学术界提出了各种Time skewing的优化算法,W同时优化并 行性和数据局部性,其主要思想是,对stencil计算的迭代步和空间网格组成的多维空间进 行倾斜的分块一一把原来很长的数据重用降低到分块内部,然后确定运些分块之间的依赖 关系,实现一种准静态的任务调度,Time skewing优化的本质是把外层的时间迭代循环与 内部的空间网格的遍历计算进行统一的考虑,实施复杂的循环变换。
[0007] Time skewing方法需要把最外层的时间循环变换到内层才能实施,对于复杂应用 而言实施的难度很高,甚至是不可实施的。适应性网格方法就是运样一种应用类型,该方 法是求解复杂物理问题的一种有效方法,它根据误差动态地决定在每个时间点或者空间点 是否需要适应性加密,W提高求解精度。首先,运类方法在实现上非常复杂一一必须基于成 熟的领域编程框架来进行应用开发,数据结构变得复杂而不再是简单的数组,计算步骤也 出现CA^dran混杂的情况,运导致编译很难对整个网格空间和各个计算步骤之间进行静 态的依赖分析,从而无法实现time skewing。第二,由于网格划分的动态性,网格点的邻居 是不能静态确定的,运也限制了time skewing优化的实施。
[000引相关技术2:任务并行和任务调度中的调度优化,如图2(图2中的英文描述对应的 是Cholesk巧分解中的四个基本操作,在代码实现中是调用的高性能数学库的库函数)、图3 所示:
[0009]任务并行编程模型是近年多核平台上广泛研究和使用的并行编程模型,旨在简化 并行编程和提高多核利用率,产业界和学术界研发了很多运类的并行编程接口,比如有 cnk/ci化++、0penMP3.0、XlO、化banero-化va、TBB、ITL等,用运种接口写的程序,程序中的 任务会形成一棵派生树,也即一个有向无环图,其运行时系统负责任务调度,每个核对应一 个物理线程,每个物理线程会执行许多逻辑任务,运种在用户态空间进行的任务调度大大 降低调度的开销,从而提高多线程程序的执行效率,运行时系统采用任务窃取调度算法,获 得负载平衡,提高多核的使用效率。
[0010] 在提高任务调度中的数据局部性方面,Umut A.Acar,Guy E.Blelloch,Robert D.Blumofe.The Data Locality of Work Stealing.ACM Symposium on Parallel Algorithms and Architectures.Proceedings of the twelfth annual ACM symposium of Parallel algorithms and architectures .Jul.2000,Bar Harbor,Maine,United States.pp. 1-12提出了计算和任务亲和的机制,并被一些实际的任务调度系统所采纳,运 种方法对网格应用的优化更多地体现在集群的节点间存储优化上,对于cache的优化效果 并不显著。
[0011] 优先级调度也是一种常见的调度优化,但是它一般被用于那些关键路径明显比其 他路径更长的任务图,改善任务的负载平衡。比如图2展示的是基于分块结构的Choleskey 分解的任务图,其中蓝黑色的化Otrf是关键任务,需要给予更高的优先级。
[0012] 但是很多应用的任务图中并不存在明显的关键任务,比如结构网格应用的任务 图一般呈现出图3的样子,各个任务之间禪合紧密,各个有向路径几乎都是一样长的,并不 存在某个特别长的关键路径。(运里,任务的颜色表示其在哪个线程上执行。)目前没有人发 现,优先级分组调度能用于改善结构网格应用的任务调度性能。

【发明内容】

[0013] 本发明针对的是结构网格应用,目的是在传统的任务调度机制之上,通过语用户 接口和调度系统的协同,实现一种利用数据拓扑信息的优先级分组调度方法及系统。
[0014] 本发明提出一种利用数据拓扑信息的优先级分组调度方法,包括:
[0015] 步骤1,获取所述数据拓扑信息的原始网格空间,设置所述原始网格空间的网格片 的尺寸与浮点精度,生成新网格空间;
[0016] 步骤2,根据新网格空间和并行区的stencil格式,构建紧缩任务图,计算所述紧缩 任务图中每个任务的优先级分组编号,其中优先级计算规则为:按照行优先的顺序给各个 数据片分配初始优先级编号;所述紧缩任务图上拓扑第一层任务的优先级编号为其访问的 各个数据片所对应优先级编号的最大值;其他任务的优先级编号是各个依赖边的依赖源任 务的优先级编号的最大值;
[0017] 步骤3,获取当前任务所访问的数据片,并通过格式抽象或函数指针与实参的形式 来决定是否设及邻居数据依赖,并生成相应标记;根据所述标记,识别出设及邻居数据依赖 的循环,所述循环为有效时间步;根据所述有效时间步和任务的空间坐标,把当前任务映射 到紧缩任务图上的某个任务,根据后者的优先级编号计算当前任务的优先级编号。
[0018] 所述的利用数据拓扑信息的优先级分组调度方法,所述步骤1中每个数据片具有 唯一的网格空间坐标。
[0019] 所述的利用数据拓扑信息的优先级分组调度方法,所述步骤2与所述步骤3之间还 包括根据每个任务所访问的数据片的空间位置,获取所述任务在所述新网格空间中的坐 标。
[0020] 所述的利用数据拓扑信息的优先级分组调度方法,所述步骤2还包括分组的约束 包括数据足迹要小于最后一级cache的尺寸的一半;每个分组内的数据重用度大于预设阔 值。
[0021] 所述的利用数据拓扑信息的优先级分组调度方法,还包括把每个任务亲和到固 定线程,从而把每个分组的任务均匀地分散到各个线程,把任务调度有效约束在当前分组 内执行。
[0022] 本发明还提出一种利用数据拓扑信息的优先级分组调度系统,包括:
[0023] 生成新网格空间模块,用于获取所述数据拓扑信息的原始网格空间,设置所述原 始网格空间的网格片的尺寸与浮点精度,生成新网格空间;
[0024] 紧缩任务图的优先级分组模块,根据新网格空间和并行区的stencil格式,构建紧 缩任务图,确定紧缩任务图的分组宽度;所述紧缩任务图上任务的优先级计算规则为:按照 行优先的顺序给各个数据片分配初始优先级;所述紧缩任务图的拓扑第一层任务的优先级 为该任务所访问的各个数据片所对应优先级编号的最大值;紧缩任务图上其他任务的优先 级是运个任务的各个依赖边的依赖源任务的优先级编号的最大值;
[0025] 动态分组模块,用于获取当前任务所访问的数据片,并通过格式抽象或函数指针 与实参的形式来决定是否设及邻居数据依赖,并生成相应标记;根据所述标记,识别出设及 邻居数据依赖的循环,所述循环为有效时间步;根据所述有效时间步把所述循环上的任务 映射到紧缩任务图上的某个任务,根据后者的的优先级编号计算当前任务的优先级编号。
[0026] 所述的利用数据拓扑信息的优先级分组调度系统,所述生成新网格空间模块中每 个网格数据片具有唯一的网格空间坐标。
[0027] 所述的利用数据拓扑信息的优先级分组调度系统,还包括获取坐标模块,用于根 据当前任务所访问的数据片的空间位置,获取任务在所述新网格空间中的坐标。
[0028]
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1