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

文档序号:9765845阅读:来源:国知局
br>[0076] 51.5调度系统在此阶段计算出优先级分组的尺寸^义,巧7,肥,巧*〉,此时也就知道 了 "紧缩任务图"的时间轴高度。
[0077] 比如分片的尺寸是16~3,采用双精度计算,参与计算的有化rray个网格变量,当前 机器的L3缓存是20M。若stencil格式在S个空间轴向的6个方向都有邻居依赖,则<wx,wy, WZ ,wt>分组的数据足迹是sizeof (double)蝴a;rray*(wx+wt-l )*(wy+wt-l )*(wz+wt-l)< = 20M*0.5*1.1,运里I. I是一个放松系数W弥补投影估算方法的激进性。由此可计算出符合 条件且数据足迹最大的多个分组形状,并选择其中重用度最高的形状。
[0078] 图4展示的是1维网格空间情况下,用自然剖分方式获得的优先级分组情况。因为 时间轴的分块大小是8,X轴的分块大小是4,此处的任务图被拆分为两个窗口,可W看出X轴 的划分平面向t轴倾斜。
[0079] SI.6根据用户选择的剖分方法,构建映射表
[0080] SI. 6.1若采用自然剖分:
[0081] 对网格空间按照<wx,wy,wz〉进行分块剖分,按照线性化顺序为每个数据分片分配 初始分组号,映射函数111;[1:1曰1_口1';[01';[17:知,7,於-〉口1';[01';[17;
[0082] SI. 6.2若采用平面剖分:
[0083 ] SI.6.2.1需预先对由Wt个有效时间步和网格空间组成的多维空间(对应紧缩任务 图),进行仿射划分。
[0084]根据1.3提供的邻居依赖信息,把X轴上WX间距的划分平面向t轴倾斜,然后依次把 Y轴、Z轴的划分平面也进行相应的倾斜。运样分割出的凸形区域就是一个优先级分组,每个 分组都拥有一个=维坐标。
[00化]Sl.6.2.2各个分组按照<z,y ,X〉的字典序排序,优先级递减。
[0086] S1.6.2.3得到优先级映射函数relative_p;rio;rity:<z,y,x,t〉-〉p;rio;rity_ offset
[0087] SI. 6.2.4同时得到亲和性映射函数aff inity: <z,y, X, t〉-〉t虹ead_id
[0088] SI. 6.2.5计算出每个时间窗口内的最大任务数to化I;
[0089] S2对并行区内的每个任务,分配优先级分组和线程亲和性:
[0090] S2.1用户描述任务的数据访问信息
[0091] S2.2用户描述本任务在网格空间的坐标信息
[0092] S2.3在任务的构造阶段,调度系统把该任务映射到对应的优先级分组
[0093] S2.3.1设当前窗口内的最小分组号from;若选自然剖分,则total是当前分组的累 计任务数;
[0094] S2.3.2根据本任务是否有邻居依赖,累计当前窗口内的有效时间步ti ;若当前窗 口已满,则from =打om+to化1。设本任务在窗口内的时空坐标是<ti ,zi ,yi ,xi〉。
[0095] S2.3.3若采用自然剖分:
[0096] S2.3.3.1若本任务没有前驱或者前驱属于前一个窗口,则分组序号是initial_ priorityUi,yi,xi)+to化1;否则,本任务的分组序号是其所有前驱的序号的最大值。
[0097] S2.3.3.2给本任务分配亲和性。
[009引 S2.3.4若采用平面剖分:
[0099] 本任务的分组序号是 relative_p;rio;rity(ti ,zi ,yi ,xi)+f;rom;其亲和性是 affinity(ti,zi,yi,xi);
[0100] W下为本发明的实施例1,如下所示:
[0101 ] 运是采用jacobi迭代进行3d7p的stencil计算。在立维的网格空间进行stencil计 算,对2个空间轴进行了全局任务划分,离散空间采用固定网格,数据采用单一数组的存储 方式。
[0102] //这是任务并行区的初始化阶段 #prag曲a acemesh dag init /7给出网格空间的原始形状。Mesh是本系统提供搁接口。 /7虽然网格本身是3维的,但是任务划分只在2维进行,巧需耍描述2 雜。
[0103] Me.sh<.int'> regular-mesh (2, D3, D2); //给出网格空间的全局划分,也即分片的方法。同时给出分片的尺寸。 regular一me'sh'. set-Uniform-block狂 s3:, s2); regulai一阳esh, s'et_typieal_biocksize (s3泳s2*'Dl, DO旭L巨); //并行区域内在哪些空间轴向奋邻居依赖。 regular___mesh. set__skewed___inf()巧,1, 1, 1, 1) ; /7只在两个空间釉巧 有邻居依赖 /7任务并巧区的兀始 冉pragma acemesh. da呂.start for(t = 0; t<^6; t++) { /7总共计算256次才结束 for (int kk = 1;化<D3- 1;陆+二S3) 抗r Cint jj = 1; jj<D2- i; jj+=s2) //下面的制导,描述本任务的数据访巧情麵。是否涉及邻居依赖。网格空 间的坐标。 //编译器处理后,这些制导将变成对调度系统的功能调用 冉'prag田a.过c.e'mesh task \ /*本任务会读该地址对巧的数据片,kU及邻居的数据片*/ \ data(&u[t%2] [kk] [jj] [0] :<R, R>, \ &u[(t+l)%2] [kk] [jj][0]:<R,N? \ layout ?kk, jj? A本任务在网格空间的坐标*/ //这是-一个并发任务的入口 for (int k = kk ; k <min(kk+s3, D3 - I); k++) for (int j = jj; j <min(jj+s:2, D2 - I); j++) f or 虹打t i 二 I; i < Dl- I; i++) u[(t+])%幻[k][j][i] - alpha 味(u[t%幻比][j][l]) + beta * Cu[t%2] [k+1] [j] [1] + u[t%幻[k] [j+1] [i] + u[t腦][k] [j] [i+1]+ u[t縱][k-1] [j] [i]
[0104] + u[t%到[k] [j-1] [i]+ u[t?越]比][j] [i-1]): } //flnislii打g .kk_jj_i.i loop nest } //fini''呂'hlng t loop 冉pragma acemesh dag finish //这是任务并行区的结束 }
[0105] 运里分片的尺寸是12~3,采用双精度计算,参与计算的有2个网格变量,当前机器 的L3缓存是20M。因为本计算在S个空间轴向的6个方向都有邻居依赖,贝lj<wx ,wy, WZ, wt>分 组的数据足迹是8*2*(wx+wt-l )*(wy+wt-l )*(wz+wt-l )*12*12*12< = 20M*0.5*1.1,运里 1.1是一个放松系数W弥补投影估算方法的激进性。由此得到符合条件且数据足迹最大的 两个分组形状是<2,2,2,6〉和<4,4,4,4〉,但是后者的组内重用度更高。所W调度系统选择 的分组形状是<4,4,4,4〉,即时间轴的窗口高度和空间轴的分块宽度都是4,组内的最大数 据重用度是4。
[0106] 由于3维问题的图形展示效果不佳,下面的图示中只给出1维问题的分组结果。图4 给出的是两个时间窗口内的自然剖分结果。运里空间网格划分后的宽度是16,空间分组的 宽度是4,时间窗口的高度是8,根据用户标记,每个循环都对应一个有效时间步。每个楠圆 上标记了一个S元组<loop_id, task_id, p;rio_id〉,依次表示该任务属于哪个循环、第几个 任务、其分组编号是多少。
[0107] 自然剖分分组的具体算法如下。根据本发明的步骤SI.6.1,计算出初始的分组映 射表,第一个行的任务被分配了初始的分组编号,分别是〇,1,2,3。从第二行起,每个任务的 分组号取前驱的最大值。当有效时间步超出窗口高度8,则运一行的任务要根据"初始的分 组映射表"进行调整,因为窗口内的分组数是4,所W运一行的分组号为4,5,6,7。W下继续 进行分组。
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1