CN110647390B - 一种多核系统基于局部性量化的并行任务分配调度方法 - Google Patents
一种多核系统基于局部性量化的并行任务分配调度方法 Download PDFInfo
- Publication number
- CN110647390B CN110647390B CN201910894969.0A CN201910894969A CN110647390B CN 110647390 B CN110647390 B CN 110647390B CN 201910894969 A CN201910894969 A CN 201910894969A CN 110647390 B CN110647390 B CN 110647390B
- Authority
- CN
- China
- Prior art keywords
- task
- tasks
- subgroup
- locality
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种多核系统基于局部性量化的并行任务分配调度方法,将并行任务的局部性参数值考虑到并行任务的分配调度中,通过局部性参数值对待执行任务进行合理分组,使各分组之间的局部性参数值的差异尽可能小,保障分配到同一处理器计算核上的并行任务对共享缓存具有最小程度的资源竞争,从而有效降低了共享缓存的失效率。同时,通过对程序访存地址序列进行采样,利用footprint值计算单独任务和并行任务的局部性参数值,从而显著地降低了传统局部性量化分析的巨大时间开销,提高了任务分配调度的效率。该方法能够有效地提高片上共享缓存的利用率,提高并行任务的执行性能和多核系统的吞吐率,且操作性良好。
Description
技术领域
本发明属于多核处理器任务调度领域,特别涉及一种多核系统基于局部性量化的并行任务分配调度方法。
背景技术
随着半导体技术的飞速发展,晶体管尺寸进入纳米时代,芯片的集成度也得到高度发展,越来越多的计算核封装到单个芯片上。多核架构也成为当今主流的计算机处理器架构。为了避免代价昂贵的片外存储数据访问,降低访问延迟,提高cache(高速缓冲存储器)利用率,计算机处理器采用层次化的cache架构。最高层次的L1级cache具有与CPU主频相同的最快运行速度和最小的容量;而最低层次的cache具有最慢运行速度(仍然远快于片外存储的速度)和最大的容量,并且由处理器上的所有计算核共享使用。然而,随着集成的计算核数增加,为处理器带来更强大的并行计算能力的同时,也加剧了片上共享资源的竞争。特别是在最低层次的共享cache上,会因为争用cache资源的并行任务数增多而造成频繁的共享cache不命中,从而需要付出高昂的代价进行片外访存,严重地降低并行任务的执行性能。这是因为每个独立的并行任务会占用不同大小的计算和存储资源,使得在多核系统上不同任务并发执行并共享最低层的cache时,会出现不同大小的cache资源的需求量,并导致不同的共享cache争用情况。因此,通过任务分配策略将不同的并行任务分派到多核系统中共享相同cache的计算核上,会产生差异明显的整体执行性能。为了获得最好的片上存储资源利用率,许多工作据此开展了多核处理器系统上的任务调度和任务分配等研究。一般任务调度分为普通任务调度和实时任务调度。多核系统上的普通任务调度一般通过操作系统内核调度器实现,例如Windows的多级反馈队列调度器,Linux的CFS(CompletelyFair Scheduler),但这些调度器最初是针对单核架构设计的,之后扩展到多核层面,并没有充分的利用多核架构的特点,仍有很多提升空间。关于实时任务调度策略主要分为全局任务调度、分区任务调度和cache感知任务调度。全局任务调度和分区任务调度的核心思想是对任务按优先级进行区分,并根据任务的优先级进行合理调度,从而最大程度地发挥计算资源的效率。可是,这2种实施任务调度策略并没有考虑到共享cache的影响。而cache感知任务调度策略是通过将cache对每个任务的影响进行量化分析,并考虑到每个任务使用共享cache资源时来自其他不同计算核的干扰,进行任务分配。不过,这种方法主要应用于具有共享数据的线程级并行子任务,并不适用于解决多处理器系统上的共享cache争用问题。
发明内容
本发明的目的在于提供一种多核系统基于局部性量化的并行任务分配调度方法,能够有效的提高片上共享高速缓存的利用率,提高并行任务在多核系统上并发执行的性能,且具有好的可操作性。
为达到上述目的,本发明采用如下技术方案:
一种多核系统基于局部性量化的并行任务分配调度方法,包括以下步骤:
步骤1)、获取多核系统的任务特征和在多核系统上执行的任务个数T,通过离线采集每个任务的局部性量化参数,根据获取的每个任务的局部性量化参数计算每个任务的局部性参数值;
步骤2)、基于分组任务局部性参数平衡的原则,根据每个任务的局部性参数值将所有任务划分为多个任务分组,使每个任务分组中的任务数等于多个系统中一个处理器的计算核心数M;
步骤3)、将多个任务分组按任务分组局部性参数值从大到小排序形成待执行的任务序列;
步骤4)、为每个处理器设置一个初始为空的预分配缓存区;
步骤5)、若待执行的任务序列非空,且第i个处理器的预分配缓存区为空,则将当前待执行的任务序列中第一个任务分组载入第i个处理器的预分配缓存区;若第i个处理器的预分配缓存区不为空,且第i个处理器中的第k个计算核心空闲,则由第k个计算核心执行预分配缓存区中局部性参数值最大的任务;若待执行的任务序列为空,则调度结束。
进一步的,步骤1)中,任务特征包括每个共享cache连接的核心数和共享cache的个数,局部性量化参数包括每个任务的循环热点代码的footprint值和访存地址序列长度。
进一步的,步骤2)具体分组步骤为:
若一个处理器的计算核心数M为2的幂次数:
a、将T个任务根据每个任务的局部性参数值从大到小排序,选择前N*M个任务作为一个排序任务序列a,满足N*M≤T≤(N+1)*M,M为每个处理器上的计算核心数,N为自然数;
b、将排序任务序列中第一个任务和最后一个任务组成任务子组a1,将排序任务序列中第二个任务和倒数第二个任务组成任务子组a2,以此类推,得到i个任务子组ai,i=N*M/2;
c、若任务子组ai中的任务个数等于计算核心数M,则完成任务分组;若任务子组ai中的任务个数不等于计算核心数M,则将任务子组a1至ai按任务子组的局部性参数值从大到小排序形成排序任务序列b,将排序任务序列b中第一个任务子组和最后一个任务子组组成任务子组b1,将排序任务序列b中第二个任务子组和倒数第二个任务子组组成任务子组b2,以此类推,得到r个任务子组br,r=i/2;
d、若任务子组br中的任务个数等于计算核心数M,则完成任务分组;若任务子组br中的任务个数不等于计算核心数M,则按照步骤c排序重新排序直至得到的任务子组中任务个数等于计算核心数M,则完成分组;
若一个处理器的计算核心数M为非2的幂次数:
A、将T个任务根据每个任务的局部性参数值从大到小排序,选择前f*2v个任务作为一个排序任务序列d,满足2v<M<2v+1,f*2v≤T≤(f+1)*2v,M为每个处理器上的计算核心数,f为自然数;
B、将排序任务序列d中第一个任务和最后一个任务组成任务子组A1,将排序任务序列d中第二个任务和倒数第二个任务组成任务子组A2,以此类推,得到e个任务子组Ae,e=f*2v/2;
C、若任务子组Ae中的任务个数小于计算核心数M,且任务子组Ae中的任务个数2倍大于计算核心数M,则完成任务分组;若任务子组Ae中的任务个数2倍小于计算核心数M,则将任务子组A1至Ae按任务子组的局部性参数值从大到小排序形成排序任务序列c,将排序任务序列c中第一个任务子组和最后一个任务子组组成任务子组B1,将排序任务序列b中第二个任务子组和倒数第二个任务子组组成任务子组B2,以此类推,得到q个任务子组Bq,q=e/2;
D、若任务子组Bq中的任务个数小于计算核心数M,且任务子组Bq中的任务个数2倍大于计算核心数M,则完成任务分组;若任务子组Bq中的任务个数2倍小于计算核心数M,则按照步骤C排序重新排序直至得到的任务子组中任务个数小于计算核心数M且得到的任务子组中任务个数2倍大于计算核心数M,则完成分组;向完成分组的各任务子组中添加虚拟任务,使各任务子组中的任务数与虚拟任务数之和等于计算核心数M。
进一步的,将未进行分组的每个任务视为独立的一个任务分组,与得到的任务分组一起,根据任务分组的局部性参数值将任务分组按从大到小排序,形成待执行的任务序列。
进一步的,虚拟任务指局部性参数为0,处理器不实际执行的任务。
进一步的,一个任务的局部性参数值等于该任务的footprint值除以该任务的访存地址序列长度,即
其中A表示任务名称,footpr int_value_of_A表示A任务的footprint值,address_sequence_length_of_A表示A任务的访存地址序列长度,Loc_parameter_of_A表示A任务的局部性参数值。
进一步的,任务分组的局部性参数值等于任务分组内所有任务的footprint值之和除以该任务分组内所有任务的访存地址序列长度之和,即
其中∑(footpr int_value_of_each_task)表示任务分组内所有任务的footprint值之和,∑(address_sequence_length_of_each_task)表示任务分组内所有任务的访存地址序列长度之和,Loc_parameter_par表示任务分组的局部性参数值。
进一步的,footprint值指采用离线分析方法获得的程序访存地址序列中不同地址的数量;访存地址序列长度是采用离线分析方法获得的程序访存地址序列中所有地址的数量。
进一步的,通过离线采集每个任务的局部性量化参数具体是对程序的循环热点部分代码的访存地址进行随机采样。
进一步的,至少选择两个连续的最外层循环迭代周期作为样本,记录该迭代周期内的所有访问地址序列,根据记录的地址序列计算出footprint值和访存地址序列长度。
与现有技术相比,本发明具有以下有益的技术效果:
本发明一种多核系统基于局部性量化的并行任务分配调度方法,将并行任务的局部性参数值考虑到并行任务的分配调度中,基于分组任务局部性参数平衡的原则,通过局部性参数值对待执行任务进行分组,使各分组之间的局部性参数值的差异减小,保障分配到同一处理器计算核上的并行任务对共享缓存具有最小程度的资源竞争,从而有效降低了共享缓存的失效率。同时,通过对程序访存地址序列进行采样,利用footprint值计算单独任务和并行任务的局部性参数值,从而显著地降低了传统局部性量化分析的巨大时间开销,提高了任务分配调度的效率。该方法能够有效地提高片上共享缓存的利用率,提高并行任务的执行性能和多核系统的吞吐率,且操作性良好。
进一步的,对于一个处理器的计算核心数M为非2的幂次数,基于分组任务局部性参数平衡的原则,根据每个任务的局部性参数值将所有任务划分为多个任务分组,使每个任务分组里面的任务少于一个处理器计算核心数,采用虚拟任务填补任务分组里面的任务数,使每个处理器每个核心数对应处理任务,便于任务调配。
附图说明
图1为本发明结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步地详细说明。应当理解,此处描述的实施用例仅用于解释本发明的基本构想,并不用于限定本发明的保护范围。
多核系统是基于共享内存多核架构、具有多级高速缓存架构的多核单处理器系统或对称多处理器系统;包括P个处理器,每个处理器上有M个计算核心数,多核系统的计算核心总数为K,即P*M=K;
本发明的测试实例为32个在图1所示多核系统上运行的任务,其中各个任务之间不存在共享的数据。
本发明通过离线采集程序访存地址序列,并计算footprint值和地址序列长度,从而量化程序的局部性参数值;并且根据任务的局部性参数值对任务进行分组,使得在同一处理器计算核心上执行的任务子组对共享cache的资源争用情况降低;同时快速地为多核系统中空闲计算核心分配合适的任务,提高并行任务的执行性能和系统的吞吐率。
任务指以嵌套循环代码为计算热点的,在单个计算核心上运行的,其footprint值和访存地址序列长度等局部性量化参数是已知或可采集的程序。
并行任务指多个任务分别在不同计算核心上同时执行,任务之间没有共享数据,且任务总数不小于K。
首先介绍程序局部性量化方法。
由于大多数程序,特别是科学和工程应用程序,时间大多花在嵌套循环代码上。本发明针对这一特性,使用循环代码的局部性来表示整个程序的局部性。由于循环代码迭代访存行为通常有规律性和周期性的特点,只需对一小部分连续的完整循环迭代周期内的访存地址序列进行采样(至少包括一个完整的最外层循环迭代周期),而不用记录循环代码全部的迭代周期,就可以大致反映整个循环代码的访存特点。本发明选择最外层循环的3个完全连续迭代周期来计算程序的局部性。
本发明对于每个程序,记录3个连续的最外层循环迭代访问的地址序列。然后,计算该地址序列中不同地址数(即footprint值)和地址序列长度。因为每个程序循环代码不同,其访存地址序列长度也是不同的,所以本发明footprint值/地址序列长度作为局部参数值来定量地比较每个程序的局部性。考虑到循环迭代的规律性和周期性,本发明只需要计算以采样的地址序列长度为窗口的footprint值,提高采样效率和降低计算难度。本发明采用的这种程序局部性量化方法虽然可能会损失少许的计算精度,但是有效地降低了程序局部性量化的时间开销。
接着介绍并行任务分组算法。
对于单处理器中计算核心数M为2的幂次数的情形,首先,根据单个任务的局部性参数值Loc_parameter对所有并行任务从大到小进行排序。选择前N*M个任务作为一个排序任务序列a,满足N*M≤T≤(N+1)*M,M为每个处理器上的计算核心数,N为自然数;接着将排序任务序列a中第一个任务和最后一个任务,也就是局部性参数Loc_parameter最大和最小的2个任务进行组合,形成一个任务子组;同时,将任务序列中第二个任务和倒数第二个任务进行组合,形成一个任务子组;依次类推,直至所有任务都组成了新的任务子组。然后,根据计算每个任务子组的局部性参数值Loc_parameter_par,并按照Loc_parameter_par值的大小对所有任务子组从大到小进行排序。同样地,将第一个任务子组和最后一个任务子组的任务进行组合,将第二个小组和倒数第二个任务子组的任务进行组合,依次类推,直至所有任务再次组合成了新的任务子组。接着计算新的任务子组的Loc_parameter_par值,并按照Loc_parameter_par值从大到小进行排序;然后继续进行任务组合,形成新的任务子组,并计算任务子组的局部性参数值和排序。这个过程不断重复进行,直至最后生成的每个任务子组包含的任务数等于多核系统中一个处理器上具有的计算核心数。将未进行分组的每个任务视为独立的一个任务分组,与得到的任务分组一起,根据任务分组的局部性参数值将任务分组按从大到小排序,形成待执行的任务序列;此时,并行任务分组算法结束。
具体如:对于任务数为10,单个处理器计算核心数为4,处理器数为2的情况,下面举例说明。设按Loc_parameter从大到小的任务名依次为Task1,Task2,…,Task8,Task9,Task10,取Task1,Task2,…,Task8进行分组;第一次进行任务分组,总共生成4个任务子组,Task1和Task8为第1组,Task2和Task7为第2组,Task3和Task6为第3组,Task4和Task5为第4组;重新计算各子组的Loc_parameter_par并对任务子组进行排序。因为每个任务子组的任务数为2,小于每个处理器上的计算核心数8/2=4,所以继续进行分组。假设Loc_parameter_par从大到小的顺序为第1组、第2组、第3组、第4组,那么再次分组后Task1、Task8、Task4、Task5为第1组,Task2、Task7、Task3、Task6为第2组;因为此时每个任务子组的任务数等于4,分组结束,将未进行分组的Task9和Task10视为两个独立的任务分组,与得到的任务分组一起,根据任务分组的局部性参数值将任务分组按从大到小排序,形成待执行的任务序列。
并行任务分组算法的核心思想是让多核系统中每个处理器上执行的并行任务子组之间在访存局部性上尽量保持较小的差异,也就是让每个任务子组中的并行任务的局部性参数值尽可能的接近。这样,每个处理器上执行的并行任务对共享cache的资源争用较少,共享cache的失效率也可以降低,而且可以快速实现全部并行任务的最小局部性。为了达到这个目标,并行任务分组算法采用的策略是将局部性参数值较大的任务和局部性参数值较小的任务组成任务子组,并分配到相同的处理器上,而将局部性参数值居中的任务分配到相同的处理器上,这样可以使各个处理器上执行的任务小组的局部性参数值比较平均。
对于单处理器中计算核心数M不为2的幂次数的情形,首先,根据单个任务的局部性参数值Loc_parameter对所有并行任务从大到小进行排序。选择前f*2v个任务作为一个排序任务序列d,满足2v<M<2v+1,f*2v≤T≤(f+1)*2v,M为每个处理器上的计算核心数,f为自然数;接着将排序任务序列d中第一个任务和最后一个任务,也就是局部性参数Loc_parameter最大和最小的2个任务进行组合,形成一个任务子组;同时,将任务序列中第二个任务和倒数第二个任务进行组合,形成一个任务子组;依次类推,直至所有任务都组成了新的任务子组。然后,根据计算每个任务子组的局部性参数值Loc_parameter_par,并按照Loc_parameter_par值的大小对所有任务子组从大到小进行排序。同样地,将第一个任务子组和最后一个任务子组的任务进行组合,将第二个小组和倒数第二个任务子组的任务进行组合,依次类推,直至所有任务再次组合成了新的任务子组。接着计算新的任务子组的Loc_parameter_par值,并按照Loc_parameter_par值从大到小进行排序;然后继续进行任务组合,形成新的任务子组,并计算任务子组的局部性参数值和排序。这个过程不断重复进行,直至得到的任务子组中任务个数小于计算核心数M且得到的任务子组中任务个数2倍大于计算核心数M,将未进行分组的每个任务视为独立的一个任务分组,与得到的任务分组一起,根据任务分组的局部性参数值将任务分组按从大到小排序,形成待执行的任务序列;此时,并行任务分组算法结束。
具体如:对于任务数为18,单个处理器的计算核心数为7,处理器数为2的情况,下面举例说明;设按Loc_parameter从大到小的任务名依次为Task1,Task2,…,Task8,Task9,…,Task18,取Task1,Task2,…,Task11,Task12进行分组;第一次进行任务分组,总共生成6个任务子组,Task1和Task12为第1组,Task2和Task11为第2组,Task3和Task10为第3组,Task4和Task9为第4组,Task5和Task8为第5组,Task6和Task7为第6组;重新计算各子组的Loc_parameter_par并对任务子组进行排序。因为每个任务子组的任务数为2,小于每个处理器上的计算核心数7,所以继续进行分组。设Loc_parameter_par从大到小的顺序为第1组、第2组、第3组、第4组、第5组、第6组,那么再次分组后Task1、Task12、Task6、Task7为第1组,Task2、Task11、Task5、Task8为第2组,ask3、Task10、Task4、Task9为第3组;此时每个任务子组的任务数等于4,小于每个处理器上的计算核心数7,若再进行排序分组,将形成新的任务子组中的任务数等于8,大于每个处理器上的计算核心数7,所以此时分组结束,向完成分组的各任务子组中添加3个虚拟任务,使各任务子组中的任务数与虚拟任务数之和等于计算核心数7,即完成分组。
最后介绍并行任务分配调度算法。
首先,按照并行任务分组算法将所有任务进行排序和分组。需要注意,为了清楚表达本发明中并行任务分组方法的思想,将此时所有任务子组根据Loc_parameter_par值从大到小进行排序,形成待执行任务序列。同时,为每个处理器设置一个初始为空的预分配缓存区Bufferi。接着,选择序列靠前的P个任务小组,分配到所有处理器上并行执行。当第i个处理器pi中第k个计算核corek执行完任务变为空闲核时,查询处理器pi的Bufferi是否为空:如果该Bufferi不为空,将Bufferi中Loc_parameter值最大的任务调度计算核corek上执行;如果该Bufferi为空,则从待执行任务序列中取出第一个任务小组,将该小组内Loc_parameter值最大的任务调度到corek上执行,同时将该小组内的其余任务放入该Bufferi中。这个任务分配调度过程不断重复,直至所有的任务都执行结束。
验证过程和结果对比
本发明在Xeon E5620服务器上进行了实验验证,实验结果表明,本发明能够实现较好的并行任务分配和调度,相对Linux操作系统的任务分配和调度算法有更好的表现。
选择32个测试程序进行对比测试,与Linux内核的SCHED_FIFO任务调度算法相比,本发明实现的任务分配调度算法将并行任务的执行速度平均提高了9%以上。
Claims (7)
1.一种多核系统基于局部性量化的并行任务分配调度方法,其特征在于,包括以下步骤:
步骤1)、获取多核系统的任务特征和在多核系统上执行的任务个数T,通过离线采集每个任务的局部性量化参数,根据获取的每个任务的局部性量化参数计算每个任务的局部性参数值;局部性量化参数包括每个任务的循环热点代码的footprint值和访存地址序列长度;一个任务的局部性参数值等于该任务的footprint值除以该任务的访存地址序列长度,即
其中A表示任务名称,footpr int_value_of_A表示A任务的footprint值,address_sequence_length_of_A表示A任务的访存地址序列长度,Loc_parameter_of_A表示A任务的局部性参数值;
步骤2)、基于分组任务局部性参数平衡的原则,根据每个任务的局部性参数值将所有任务划分为多个任务分组,使每个任务分组中的任务数等于多个系统中一个处理器的计算核心数M:将局部性参数值较大的任务和局部性参数值较小的任务组成任务子组,并分配到相同的处理器上,而将局部性参数值居中的任务分配到相同的处理器上,这样可以使各个处理器上执行的任务小组的局部性参数值比较平均;
步骤3)、将多个任务分组按任务分组局部性参数值从大到小排序形成待执行的任务序列;任务分组的局部性参数值等于任务分组内所有任务的footprint值之和除以该任务分组内所有任务的访存地址序列长度之和,即
其中∑(footpr int_value_of_each_task)表示任务分组内所有任务的footprint值之和,∑(address_sequence_length_of_each_task)表示任务分组内所有任务的访存地址序列长度之和,Loc_parameter_par表示任务分组的局部性参数值;
步骤4)、为每个处理器设置一个初始为空的预分配缓存区;
步骤5)、若待执行的任务序列非空,且第i个处理器的预分配缓存区为空,则将当前待执行的任务序列中第一个任务分组载入第i个处理器的预分配缓存区;若第i个处理器的预分配缓存区不为空,且第i个处理器中的第k个计算核心空闲,则由第k个计算核心执行预分配缓存区中局部性参数值最大的任务;若待执行的任务序列为空,则调度结束。
2.根据权利要求1所述的一种多核系统基于局部性量化的并行任务分配调度方法,其特征在于,步骤1)中,任务特征包括每个共享cache连接的核心数和共享cache的个数。
3.根据权利要求1所述的一种多核系统基于局部性量化的并行任务分配调度方法,其特征在于,步骤2)具体分组步骤为:
若一个处理器的计算核心数M为2的幂次数:
a、将T个任务根据每个任务的局部性参数值从大到小排序,选择前N*M个任务作为一个排序任务序列a,满足N*M≤T≤(N+1)*M,M为每个处理器上的计算核心数,N为自然数;
b、将排序任务序列中第一个任务和最后一个任务组成任务子组a1,将排序任务序列中第二个任务和倒数第二个任务组成任务子组a2,以此类推,得到i个任务子组ai,i=N*M/2;
c、若任务子组ai中的任务个数等于计算核心数M,则完成任务分组;若任务子组ai中的任务个数不等于计算核心数M,则将任务子组a1至ai按任务子组的局部性参数值从大到小排序形成排序任务序列b,将排序任务序列b中第一个任务子组和最后一个任务子组组成任务子组b1,将排序任务序列b中第二个任务子组和倒数第二个任务子组组成任务子组b2,以此类推,得到r个任务子组br,r=i/2;
d、若任务子组br中的任务个数等于计算核心数M,则完成任务分组;若任务子组br中的任务个数不等于计算核心数M,则按照步骤c排序重新排序直至得到的任务子组中任务个数等于计算核心数M,则完成分组;
若一个处理器的计算核心数M为非2的幂次数:
A、将T个任务根据每个任务的局部性参数值从大到小排序,选择前f*2v个任务作为一个排序任务序列d,满足2v<M<2v+1,f*2v≤T≤(f+1)*2v,M为每个处理器上的计算核心数,f为自然数;
B、将排序任务序列d中第一个任务和最后一个任务组成任务子组A1,将排序任务序列d中第二个任务和倒数第二个任务组成任务子组A2,以此类推,得到e个任务子组Ae,e=f*2v/2;
C、若任务子组Ae中的任务个数小于计算核心数M,且任务子组Ae中的任务个数2倍大于计算核心数M,则完成任务分组;若任务子组Ae中的任务个数2倍小于计算核心数M,则将任务子组A1至Ae按任务子组的局部性参数值从大到小排序形成排序任务序列c,将排序任务序列c中第一个任务子组和最后一个任务子组组成任务子组B1,将排序任务序列b中第二个任务子组和倒数第二个任务子组组成任务子组B2,以此类推,得到q个任务子组Bq,q=e/2;
D、若任务子组Bq中的任务个数小于计算核心数M,且任务子组Bq中的任务个数2倍大于计算核心数M,则完成任务分组;若任务子组Bq中的任务个数2倍小于计算核心数M,则按照步骤C排序重新排序直至得到的任务子组中任务个数小于计算核心数M且得到的任务子组中任务个数2倍大于计算核心数M,则完成分组;向完成分组的各任务子组中添加虚拟任务,使各任务子组中的任务数与虚拟任务数之和等于计算核心数M,虚拟任务指局部性参数为0,处理器不实际执行的任务。
4.根据权利要求1或3所述的一种多核系统基于局部性量化的并行任务分配调度方法,其特征在于,将未进行分组的每个任务视为独立的一个任务分组,与得到的任务分组一起,根据任务分组的局部性参数值将任务分组按从大到小排序,形成待执行的任务序列。
5.根据权利要求2所述的一种多核系统基于局部性量化的并行任务分配调度方法,其特征在于,footprint值指采用离线分析方法获得的程序访存地址序列中不同地址的数量;访存地址序列长度是采用离线分析方法获得的程序访存地址序列中所有地址的数量。
6.根据权利要求2所述的一种多核系统基于局部性量化的并行任务分配调度方法,其特征在于,通过离线采集每个任务的局部性量化参数具体是对程序的循环热点部分代码的访存地址进行随机采样。
7.根据权利要求6所述的一种多核系统基于局部性量化的并行任务分配调度方法,其特征在于,至少选择两个连续的最外层循环迭代周期作为样本,记录该迭代周期内的所有访问地址序列,根据记录的地址序列计算出footprint值和访存地址序列长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910894969.0A CN110647390B (zh) | 2019-09-20 | 2019-09-20 | 一种多核系统基于局部性量化的并行任务分配调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910894969.0A CN110647390B (zh) | 2019-09-20 | 2019-09-20 | 一种多核系统基于局部性量化的并行任务分配调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110647390A CN110647390A (zh) | 2020-01-03 |
CN110647390B true CN110647390B (zh) | 2021-12-28 |
Family
ID=69010978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910894969.0A Active CN110647390B (zh) | 2019-09-20 | 2019-09-20 | 一种多核系统基于局部性量化的并行任务分配调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110647390B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11966785B2 (en) * | 2020-07-30 | 2024-04-23 | Arm Limited | Hardware resource configuration for processing system |
CN112130977B (zh) * | 2020-09-25 | 2022-08-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种任务调度方法、装置、设备及介质 |
CN112817428A (zh) * | 2021-01-25 | 2021-05-18 | 广州虎牙科技有限公司 | 任务运行方法、装置、移动终端和存储介质 |
CN116483013B (zh) * | 2023-06-19 | 2023-09-05 | 成都实时技术股份有限公司 | 一种基于多通道采集器的高速信号采集系统及方法 |
CN116755864A (zh) * | 2023-08-14 | 2023-09-15 | 南京翼辉信息技术有限公司 | 一种避免大小核处理器激进迁移的控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101213525A (zh) * | 2005-06-30 | 2008-07-02 | 英特尔公司 | 任务上下文高速缓存替换的方法、装置及系统 |
CN104572501A (zh) * | 2015-01-08 | 2015-04-29 | 北京航空航天大学 | 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法 |
CN108132834A (zh) * | 2017-12-08 | 2018-06-08 | 西安交通大学 | 多级共享高速缓冲存储器架构下的任务分配方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11010193B2 (en) * | 2017-04-17 | 2021-05-18 | Microsoft Technology Licensing, Llc | Efficient queue management for cluster scheduling |
-
2019
- 2019-09-20 CN CN201910894969.0A patent/CN110647390B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101213525A (zh) * | 2005-06-30 | 2008-07-02 | 英特尔公司 | 任务上下文高速缓存替换的方法、装置及系统 |
CN104572501A (zh) * | 2015-01-08 | 2015-04-29 | 北京航空航天大学 | 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法 |
CN108132834A (zh) * | 2017-12-08 | 2018-06-08 | 西安交通大学 | 多级共享高速缓冲存储器架构下的任务分配方法和系统 |
Non-Patent Citations (2)
Title |
---|
An Efficient Locality-Aware Task Assignment Algorithm for Minimizing Shared Cache Contention;Song Liu et al.;《2017 18th International Conference on Parallel and Distributed Compulting, Applications and Technologies》;20171218;全文 * |
DNSRadar: Outsourcing Malicious Domain Detection Based on Distributed Cache-Footprints;Ma Xiaobo et al.;《IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY》;20141130;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110647390A (zh) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110647390B (zh) | 一种多核系统基于局部性量化的并行任务分配调度方法 | |
US8156495B2 (en) | Scheduling threads on processors | |
Jog et al. | Anatomy of gpu memory system for multi-application execution | |
Ausavarungnirun et al. | Exploiting inter-warp heterogeneity to improve GPGPU performance | |
Wang et al. | Laperm: Locality aware scheduler for dynamic parallelism on gpus | |
US8132172B2 (en) | Thread scheduling on multiprocessor systems | |
Kang et al. | Lalarand: Flexible layer-by-layer cpu/gpu scheduling for real-time dnn tasks | |
CN108132834B (zh) | 多级共享高速缓冲存储器架构下的任务分配方法和系统 | |
Huangfu et al. | Static WCET analysis of GPUs with predictable warp scheduling | |
Li et al. | Efficient algorithms for task mapping on heterogeneous CPU/GPU platforms for fast completion time | |
Wu et al. | Irina: Accelerating DNN inference with efficient online scheduling | |
Darabi et al. | NURA: A framework for supporting non-uniform resource accesses in GPUs | |
CN111045800A (zh) | 一种基于短作业优先的优化gpu性能的方法及系统 | |
Rai et al. | Using criticality of GPU accesses in memory management for CPU-GPU heterogeneous multi-core processors | |
Cai et al. | ABSS: An Adaptive Batch-Stream Scheduling Module for Dynamic Task Parallelism on Chiplet-based Multi-Chip Systems | |
Aksenova et al. | The models and methods of optimal control of three work-stealing deques located in a shared memory | |
Kim et al. | Using DVFS and task scheduling algorithms for a hard real-time heterogeneous multicore processor environment | |
Tsog et al. | Offloading accelerator-intensive workloads in cpu-gpu heterogeneous processors | |
Gonthier et al. | Memory-aware scheduling of tasks sharing data on multiple gpus with dynamic runtime systems | |
Pang et al. | Efficient CUDA stream management for multi-DNN real-time inference on embedded GPUs | |
Ikeda et al. | Application aware DRAM bank partitioning in CMP | |
Bitalebi et al. | Criticality-aware priority to accelerate GPU memory access | |
Robatmili et al. | Thread-sensitive instruction issue for smt processors | |
Wu et al. | A model-based software solution for simultaneous multiple kernels on GPUs | |
Kundan et al. | Priority-aware scheduling under shared-resource contention on chip multicore processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |