CN106933663A - 一种面向众核系统的多线程调度方法及系统 - Google Patents
一种面向众核系统的多线程调度方法及系统 Download PDFInfo
- Publication number
- CN106933663A CN106933663A CN201710132627.6A CN201710132627A CN106933663A CN 106933663 A CN106933663 A CN 106933663A CN 201710132627 A CN201710132627 A CN 201710132627A CN 106933663 A CN106933663 A CN 106933663A
- Authority
- CN
- China
- Prior art keywords
- communication cost
- core
- thread
- traffic
- processor core
- 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.)
- Granted
Links
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)
- Data Exchanges In Wide-Area Networks (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种面向众核系统的多线程调度方法,所述方法包括:获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价;获取预设的第一多线程集合中每两个线程之间的第一通信量;根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和;根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。本发明提供的多线程调度方法及系统解决了现有技术中的采用片上网络的互连结构实现的众核系统存在任务执行效率低、执行时间长技术问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种面向众核系统的多线程调度方法及系统。
背景技术
随着计算机技术的发展,多核处理器也得到了较大的发展,早期的对称多处理器(SMP)多是采用在同一计算机上汇集一组CPU的方式,它们之间共享内存子系统以及总线结构。之后由于纳米级制造工艺的引入,SMP开始转变为单芯片多处理器(ChipMultiprocessor,CMP),即在同一芯片上集成多个处理核心,形成了现在我们所说的多核处理器。多核心之间直接共享缓存以及总线结构,可以降低线延迟,提高通讯效率。当多核系统中的处理器核持续增加时,就出现了众核系统。众核系统中具有更多的处理器核。
目前片上高效通信机制通常包括基于共享总线的cache结构和基于片上网络的互连结构。基于共享总线的cache结构是指每个处理核拥有共享的二级或三级cache,用于保存比较常用的数据,并通过总线进行通信。这种系统的优点是结构简单,通信速度快;缺点是可扩展性差。共享总线显然无法满足大规模系统的需要。把互连网络用于片上系统设计,解决片上组件之间的通讯问题,这就是片上网络。片上网络(Network On Chip,NoC)技术以其支持同时访问、可靠性高、可重用性高等特点被认为是更加理想的大规模CMP互连技术。片上网络克服了总线结构可扩展性差的缺点,为10亿晶体管时代提供了一种可行的片上系统通讯机制。
本申请发明人在实现本发明的技术方案时,发现现有技术中至少存在如下问题:
在目前的众核系统中,由于处理器核的数量多,使得多核多线程的并行性极大提升,急剧增加了核间的通信量,使得处理器由“计算密集型”转为“通信密集型”,现有的众核系统的通信方法一般考虑的是具体的体系结构特性,基于片上网络的互连结构虽然在一定程度上克服了总线结构可扩展性差,但是并未针对众核系统中运行的多线程任务进行分析,由于众核系统的利用效率低,导致任务执行效率低、执行时间长。
可见,现有技术中的采用片上网络的互连结构实现的众核系统存在任务执行效率低、执行时间长技术问题。
发明内容
本发明实施例提供一种面向众核系统的多线程调度方法及系统,用以解决现有技术中的采用片上网络的互连结构实现的众核系统存在任务执行效率低、执行时间长技术问题。
第一方面,本发明公开了一种面向众核系统的多线程调度方法,所述方法包括:
获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价,其中,所述第一处理器核、第二处理器核为处理器核集合中的任意两个处理器核;
获取预设的第一多线程集合中每两个线程之间的第一通信量;
根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和,所述线程为所述第一多线程集合中的任意线程;
根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。
可选的,所述获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价,包括:
获取所述第一处理器核到所述第二处理核的第一通信代价;
获取所述第二处理器核到所述第一处理核的第二通信代价;
以所述第一通信代价与所述第二通信代价的总和作为所述通信代价。
可选的,所述获取所述第一处理器核到所述第二处理核的第一通信代价,包括:
获取所述第一处理器核到所述第二处理核之间的物理通路数;
获取所述第一处理器核到所述第二处理核之间每条物理通路的第三通信代价;
对所述第三通信代价求和,获取第三通信代价总和;
以所述第三通信代价总和与所述物理通路数的比值作为所述第一通信代价。
可选的,所述根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中,包括:
根据所述通信代价所有处理器核进行排序,获得通信代价集合;
根据所述第二通信量对所有线程进行排序,获得第二多线程集合;
将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中。
可选的,在所述将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中之前,还包括:
如果所述第二多线程集合不为空,且所述通信代价集合不为空;
判断所述通信代价集合中通信代价最小的处理器核是否被分配;
如果所述处理器核未被分配,则将所述线程调度到所述处理器核中。
可选的,在所述将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中之后,还包括:
删除所述通信代价集合中通信代价最小的处理器核;
删除所述第二线程集合中第二通信量最大的线程。
基于同样的发明构思,本发明还提供了一种面向众核系统的多线程调度系统,所述系统包括:
第一获取模块,用于获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价,其中,所述第一处理器核、第二处理器核为处理器核集合中的任意两个处理器核;
第二获取模块,用于获取预设的第一多线程集合中每两个线程之间的第一通信量;
第三获取模块,用于根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和,所述线程为所述第一多线程集合中的任意线程;
调度模块,用于根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。
可选的,所述第一获取模块还用于:
获取所述第一处理器核到所述第二处理核的第一通信代价;
获取所述第二处理器核到所述第一处理核的第二通信代价;
以所述第一通信代价与所述第二通信代价的总和作为所述通信代价。
可选的,所述获取所述第一处理器核到所述第二处理核的第一通信代价,包括:
获取所述第一处理器核到所述第二处理核之间的物理通路数;
获取所述第一处理器核到所述第二处理核之间每条物理通路的第三通信代价;
对所述第三通信代价求和,获取第三通信代价总和;
以所述第三通信代价总和与所述物理通路数的比值作为所述第一通信代价。
可选的,所述调度模块还用于:
根据所述通信代价所有处理器核进行排序,获得通信代价集合;
根据所述第二通信量对所有线程进行排序,获得第二多线程集合;
将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中。本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例提供的面向众核系统的多线程调度方法及系统,首先获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价;并获取预设的第一多线程集合中每两个线程之间的第一通信量;然后根据所述第一通信量,获取单个线程的第二通信量,最后根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中,本申请从多线程任务执行流的角度来分析并进行优化,从处理器核之间的通信代价和线程之间的通信量进行分析,可以提高众核系统的利用效率,从而缩短多线程任务的执行时间,提高执行的速度。解决了现有技术中的采用片上网络的互连结构实现的众核系统存在任务执行效率低、执行时间长技术问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中面向众核系统的多线程调度方法的流程图;
图2为本发明实施例中面向众核系统的多线程调度系统的逻辑结构图。
具体实施方式
本发明实施例提供一种面向众核系统的多线程调度方法及系统,用以解决现有技术中的采用片上网络的互连结构实现的众核系统存在任务执行效率低、执行时间长技术问题。实现了缩短多线程任务的执行时间,提高执行的速度的技术效果。
本申请实施例中的技术方案,总体思路如下:
一种面向众核系统的多线程调度方法,所述方法包括:
获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价,其中,所述第一处理器核、第二处理器核为处理器核集合中的任意两个处理器核;
获取预设的第一多线程集合中每两个线程之间的第一通信量;
根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和,所述线程为所述第一多线程集合中的任意线程;
根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。
上述方法中,首先获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价;并获取预设的第一多线程集合中每两个线程之间的第一通信量;然后根据所述第一通信量,获取单个线程的第二通信量,最后根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中,本申请从多线程任务执行流的角度来分析并进行优化,从处理器核之间的通信代价和线程之间的通信量进行分析,可以提高众核系统的利用效率,从而缩短多线程任务的执行时间,提高执行的速度。解决了现有技术中的采用片上网络的互连结构实现的众核系统存在任务执行效率低、执行时间长技术问题。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供一种面向众核系统的多线程调度方法,所述方法包括:
步骤S101:获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价;
步骤S102:获取预设的第一多线程集合中每两个线程之间的第一通信量;
步骤S103:根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和;
步骤S104:根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。
上述系统中,根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中,由于本申请从多线程任务执行流的角度来分析并进行优化,从处理器核之间的通信代价和线程之间的通信量进行分析,可以提高众核系统的利用效率,从而缩短多线程任务的执行时间,提高执行的速度。解决了现有技术中的采用片上网络的互连结构实现的众核系统存在任务执行效率低、执行时间长技术问题。
需要说明的是,本申请中,所述步骤S101和所述步骤S102不分先后顺序,可以是先执行步骤S101,也可以是先执行步骤S102。
下面,结合图1对本申请提供的多线程调度方法进行详细介绍:
首先,执行步骤S101,获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价。
在本申请实施例中,处理器核集合中包括多个处理器核,具体的数量不作具体限制,所述第一处理器核和第二处理器核为该处理器核集合中任意两个处理器核,即上述第一处理器核与第二处理器核之间的通信代价也为一个集合。
接下来,执行步骤步骤S102:获取预设的第一多线程集合中每两个线程之间的第一通信量。
在本申请实施例中,第一多线程集合中包括多个线程,具体的数量不作具体限制,上述获取的是任意两个线程之间的通信量。
再下来,执行步骤S103:根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和。
在本申请实施例中,由于获取了每两个线程之间第一通信量,即可以根据该第一通信量最每个线程的总通信量进行计算。
最后,执行步骤S104:根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。
具体地,本发明实施例提供的多线程调度方法中,获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价具体包括:
获取所述第一处理器核到所述第二处理核的第一通信代价;
获取所述第二处理器核到所述第一处理核的第二通信代价;
以所述第一通信代价与所述第二通信代价的总和作为所述通信代价。
本发明实施例提供的多线程调度方法中,获取所述第一处理器核到所述第二处理核的第一通信代价,具体包括:
获取所述第一处理器核到所述第二处理核之间的物理通路数;
获取所述第一处理器核到所述第二处理核之间每条物理通路的第三通信代价;
对所述第三通信代价求和,获取第三通信代价总和;
以所述第三通信代价总和与所述物理通路数的比值作为所述第一通信代价。
本发明实施例提供的多线程调度方法中,根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中,包括:
根据所述通信代价所有处理器核进行排序,获得通信代价集合;
根据所述第二通信量对所有线程进行排序,获得第二多线程集合;
将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中。
本发明实施例提供的多线程调度方法中,在将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中之前,还包括:
如果所述第二多线程集合不为空,且所述通信代价集合不为空;
判断所述通信代价集合中通信代价最小的处理器核是否被分配;
如果所述处理器核未被分配,则将所述线程调度到所述处理器核中。
本发明实施例提供的多线程调度方法中,在将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中之后,还包括:
删除所述通信代价集合中通信代价最小的处理器核;
删除所述第二线程集合中第二通信量最大的线程。
为了更清楚地说明本发明提供的一种多线程调度方法的具体实现过程,下面通过一个完整的逻辑实例予以说明。
在具体的实现过程中,对于具有m个处理器核C0,C1,…Cm-1的众核系统M,众核系统M可以表示为M={C0,C1,…Cm-1};任给两个处理器核Ca和Cb,可以找到一条或者多条连接处理器核Ca和Cb的物理通路;对于具有d个物理通路的处理器核Ca和Cb,处理器核Ca和Cb之间的平均通信代价记为Rab:
其中,上述公式(1)中,Rab(h)表示处理器核Ca和Cb的第h条物理通路的通信代价;众核系统M中全部处理器核之间的通信代价按照降序排列形成众核系统M的通信代价集合CC,通信代价集合CC可以采用如下表1所示的二维表表示:
表1
C0 | C1 | C2 | … | Cm-1 | |
C0 | 0 | R01 | R02 | … | R0m-1 |
C1 | R10 | 0 | R12 | … | R1m-1 |
C2 | R20 | R21 | 0 | … | R2m-1 |
… | … | … | … | 0 | … |
Cm-1 | Rm-1 0 | Rm-1 1 | Rm-1 2 | … | 0 |
在表1中,“0”表示无物理通路上的通信代价,即一个处理器核到其本身的通信代价为0;
则处理器核Ca和Cb之间的通信代价为:
R(CaCb)=Rab+Rba (2)
在上述公式(2)中,Rab为处理器核a到处理器b的平均通信代价,Rba为处理器核b到处理器a的平均通信代价,即为上述的第一处理器核和第二处理器核。
为了方便对处理器核的通信代价进行处理,可以对处理器核之间的总通信代价按照升序排列,从而构建出通信代价集合CCT={R0,R1,…,Rp},其中p为总通信代价集合中元素的个数,p的计算方法为:
上述公式(3)中,m为处理器核的数量。由于通信代价中的每个元素对应两个处理器核,在进行调度时,可以将这两个处理器核进行随意分配,为了进一步优化调度方法,本申请采用如下方式进行处理:如果通信代价集合中两个通信代价相同,则将处理器核序号小的总通信代价排序在前。
举例来说,对于具有8个处理器核的众核系统M,众核系统M={C0,C1,C2,C3,C4,C5,C6,C7},处理核之间的通信代价集合CC为:
C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | |
C0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
C1 | 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
C2 | 2 | 1 | 0 | 1 | 2 | 3 | 4 | 5 |
C3 | 3 | 2 | 1 | 0 | 1 | 2 | 3 | 4 |
C4 | 4 | 3 | 2 | 1 | 0 | 1 | 2 | 3 |
C5 | 5 | 4 | 3 | 2 | 1 | 0 | 1 | 2 |
C6 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 1 |
C7 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
通信代价集合CCT={R0,R1,…,R27}
R0=2 | C0,C1 | R7=4 | C0,C2 | R14=6 | C1,C4 | R21=8 | C3,C7 |
R1=2 | C1,C2 | R8=4 | C1,C3 | R15=6 | C2,C5 | R22=10 | C0,C5 |
R2=2 | C2,C3 | R9=4 | C2,C4 | R16=6 | C3,C6 | R23=10 | C1,C6 |
R3=2 | C3,C4 | R10=4 | C3,C5 | R17=6 | C4,C7 | R24=10 | C2,C7 |
R4=2 | C4,C5 | R11=4 | C4,C6 | R18=8 | C0,C4 | R25=12 | C0,C6 |
R5=2 | C5,C6 | R12=4 | C5,C7 | R19=8 | C1,C5 | R26=12 | C1,C7 |
R6=2 | C6,C7 | R13=6 | C0,C3 | R20=8 | C2,C6 | R27=14 | C0,C7 |
接下来,计算多线程之间的通信量,具体地,举例来说,对于具有n个线程T0,T1,T2,…,Tn-1的第一多线程集合Δ,第一多线程集合Δ表示为Δ={T0,T1,T2,…,Tn-1};任给两个线程Tl和Tk,TFlk表示从线程Tl到Tk的第一通信量,则第一多线程集合Δ中全部线程之间的第一通信量可以用下表2所示的二维表表示:
表2
T0 | T1 | T2 | … | Tn-1 | |
T0 | 0 | TF01 | TF02 | … | TF0n-1 |
T1 | TF10 | 0 | TF12 | … | TF1n-1 |
T2 | TF20 | TF21 | 0 | … | TF2n-1 |
… | … | … | … | 0 | … |
Tn-1 | TFn-1 0 | Tn-1 1 | Tn-1 2 | … | 0 |
在表2中,“0”表示两个线程之间无通信量;则任一个线程Ti的总通信量,即第二通信量TF(Ti)为:
其中为上述线程Ti到所述第一多线程集合中每个线程(从T0到Tn-1)的通信量,为所述第一多线程集合中每个线程(从T0到Tn-1)到所述线程的通信量之和。
由于计算得到了单个线程的第二通信量,然后对多线程集合Δ中的线程按照线程的总通信量大小进行降序排列,得到多线程集合Δ’={T0’,T1’,T2’,…,Tn-1’};作为优选,如果两个线程的总通信量相同,则序号小的线程排序在前。
对于多线程集合Δ={T0,T1,T2,T3,T4,T5,T6,T7},线程之间的通信量如下表所示:
从上表可以得到多线程集合Δ’={T0’,T1’,T2’,T3’,T4’,T5’,T6’,T7’},其中:
T0’是多线程集合Δ中的T0;
T1’是多线程集合Δ中的T7;
T2’是多线程集合Δ中的T1;
T3’是多线程集合Δ中的T6;
T4’是多线程集合Δ中的T2;
T5’是多线程集合Δ中的T5;
T6’是多线程集合Δ中的T3;
T7’是多线程集合Δ中的T4;
接下来,对本发明实施例提供的一种优选的线程调度方法进行阐述,具体步骤如下:
首先,判断通信代价集合CCT和第二多线程集合是否为空,如果通信代价集合CCT或第二多线程集合为空,则线程调度结束;如果通信代价集合CCT和第二多线程集合均不为空,则从通信代价集合CCT选择排序为1的成员,该成员记为Rw,Rw是两个处理器核之间的总通信代价,这两个处理器核记为Cu和Cv。从通信代价集合CCT中去掉Rw。从众核系统M中去掉处理器核Cu和Cv。
为了进一步优化调度方法,在进行调度前,还判断通信代价集合CCT选择排序为1的成员对应的处理器核Cu和Cv是否被分配以及多线程集合Δ’中剩余线程数量。
具体的实施过程中,具体的步骤如下所述:
步骤1:如果总通信代价集合CCT为空,则无可供分配的处理器核,线程调度结束;如果总通信代价集合CCT不为空,到步骤2。
步骤2:从总通信代价集合CCT选择排序为1的成员,该成员记为Rw,Rw是两个处理器核之间的总通信代价,这两个处理器核记为Cu和Cv。从总通信代价集合CCT中去掉Rw。从众核系统M中去掉处理器核Cu和Cv。
步骤3:如果处理器核Cu和Cv都没有被分配,且多线程集合Δ’中剩余线程数量大于等于2,到步骤4;如果处理器核Cu和Cv中只有一个处理器核被分配,且多线程集合Δ’不为空,到步骤5;如果处理器核Cu和Cv都没有被分配,且多线程集合Δ’中剩余线程数量等于1,到步骤5;如果处理器核Cu和Cv都已经被分配,回到步骤1;
步骤4:从多线程集合Δ’选择排序为1和2的两个线程Tx和Ty,分配到处理器核Cu和Cv;从多线程集合Δ’中去掉线程Tx和Ty。如果多线程集合Δ’不为空,回到步骤1;如果多线程集合Δ’为空,则等待新线程的到达,线程调度结束。
步骤5:从多线程集合Δ’选择排序为1的线程Tx,分配到未被分配的处理器核:如果处理器核Cu已经被分配,则讲线程Tx分配到Cv;如果处理器核Cv已经被分配,则讲线程Tx分配到Cu;从多线程集合Δ’中去掉线程Tx。如果多线程集合Δ’不为空,回到步骤1;如果多线程集合Δ’为空,则等待新线程的到达,线程调度结束。
将多线程集合Δ’={T0’,T1’,T2’,T3’,T4’,T5’,T6’,T7’}中的线程调度到众核系统M={C0,C1,C2,C3,C4,C5,C6,C7}的过程如下,其中通信代价集合CCT={R0,R1,…,R27}:
1)、通信代价集合CCT不为空,到步骤2。
2)从通信代价集合CCT选择排序为1的成员,为R0,对应的两个处理器核为C0和C1。从通信代价集合CCT中去掉R0。从众核系统M中去掉处理器核C0和C1。
3)处理器核C0和C1都没有被分配,且多线程集合Δ’中剩余线程数量为8,到步骤4);
4)、从多线程集合Δ’选择排序为1和2的两个线程T0’和T1’,分配到处理器核C0和C1;从多线程集合Δ’中去掉线程T0’和T1’。回到步骤1。
5)重复上述步骤,直到所有的线程分配完毕。分配结果如下表所示:
上表中,多线程集合Δ’中的线程T0’被调度到众核系统M中的处理器核C0,即多线程集合Δ中的线程T0被调度到众核系统M中的处理器核C0;多线程集合Δ’中的线程T1’被调度到众核系统M中的处理器核C1,即多线程集合Δ中的线程T7被调度到众核系统M中的处理器核C1;以此类推,多线程集合Δ中的所有线程都被调度到处理器核上。
基于与实施例一同样的发明构思,本发明是实施例二还提供了一种面向众核系统的多线程调度系统,所述系统包括:
第一获取模块,用于获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价;
第二获取模块,用于获取预设的第一多线程集合中每两个线程之间的第一通信量;
第三获取模块,用于根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和;
调度模块,用于根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。
可选地,所述第一获取模块还用于:
获取所述第一处理器核到所述第二处理核的第一通信代价;
获取所述第二处理器核到所述第一处理核的第二通信代价;
以所述第一通信代价与所述第二通信代价的总和作为所述通信代价。
可选地,所述获取所述第一处理器核到所述第二处理核的第一通信代价,包括:
获取所述第一处理器核到所述第二处理核之间的物理通路数;
获取所述第一处理器核到所述第二处理核之间每条物理通路的第三通信代价;
对所述第三通信代价求和,获取第三通信代价总和;
以所述第三通信代价总和与所述物理通路数的比值作为所述第一通信代价。
可选地,所述调度模块还用于:
根据所述通信代价所有处理器核进行排序,获得通信代价集合;
根据所述第二通信量对所有线程进行排序,获得第二多线程集合;
将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中。
由于本发明实施例二所介绍的系统,为实施本发明实施例一的线程调度的方法所采用的系统,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该系统的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的系统都属于本发明所欲保护的范围。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例提供的面向众核系统的多线程调度方法及系统,首先获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价;并获取预设的第一多线程集合中每两个线程之间的第一通信量;然后根据所述第一通信量,获取单个线程的第二通信量,最后根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中,本申请从多线程任务执行流的角度来分析并进行优化,从处理器核之间的通信代价和线程之间的通信量进行分析,可以提高众核系统的利用效率,从而缩短多线程任务的执行时间,提高执行的速度。解决了现有技术中的采用片上网络的互连结构实现的众核系统存在任务执行效率低、执行时间长技术问题。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种面向众核系统的多线程调度方法,其特征在于,所述方法包括:
获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价,其中,所述第一处理器核、第二处理器核为处理器核集合中的任意两个处理器核;
获取预设的第一多线程集合中每两个线程之间的第一通信量;
根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和,所述线程为所述第一多线程集合中的任意线程;
根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。
2.如权利要求1所述的方法,其特征在于,所述获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价,包括:
获取所述第一处理器核到所述第二处理核的第一通信代价;
获取所述第二处理器核到所述第一处理核的第二通信代价;
以所述第一通信代价与所述第二通信代价的总和作为所述通信代价。
3.如权利要求2所述的方法,其特征在于,所述获取所述第一处理器核到所述第二处理核的第一通信代价,包括:
获取所述第一处理器核到所述第二处理核之间的物理通路数;
获取所述第一处理器核到所述第二处理核之间每条物理通路的第三通信代价;
对所述第三通信代价求和,获取第三通信代价总和;
以所述第三通信代价总和与所述物理通路数的比值作为所述第一通信代价。
4.如权利要求1所述的方法,其特征在于,所述根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中,包括:
根据所述通信代价所有处理器核进行排序,获得通信代价集合;
根据所述第二通信量对所有线程进行排序,获得第二多线程集合;
将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中。
5.如权利要求4所述的方法,其特征在于,在所述将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中之前,还包括:
如果所述第二多线程集合不为空,且所述通信代价集合不为空;
判断所述通信代价集合中通信代价最小的处理器核是否被分配;
如果所述处理器核未被分配,则将所述线程调度到所述处理器核中。
6.如权利要求4所述的方法,其特征在于,在所述将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中之后,还包括:
删除所述通信代价集合中通信代价最小的处理器核;
删除所述第二线程集合中第二通信量最大的线程。
7.一种面向众核系统的多线程调度系统,其特征在于,所述系统包括:
第一获取模块,用于获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价,其中,所述第一处理器核、第二处理器核为处理器核集合中的任意两个处理器核;
第二获取模块,用于获取预设的第一多线程集合中每两个线程之间的第一通信量;
第三获取模块,用于根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和,所述线程为所述第一多线程集合中的任意线程;
调度模块,用于根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。
8.如权利要求7所述的系统,其特征在于,所述第一获取模块还用于:
获取所述第一处理器核到所述第二处理核的第一通信代价;
获取所述第二处理器核到所述第一处理核的第二通信代价;
以所述第一通信代价与所述第二通信代价的总和作为所述通信代价。
9.如权利要求8所述的系统,其特征在于,所述获取所述第一处理器核到所述第二处理核的第一通信代价,包括:
获取所述第一处理器核到所述第二处理核之间的物理通路数;
获取所述第一处理器核到所述第二处理核之间每条物理通路的第三通信代价;
对所述第三通信代价求和,获取第三通信代价总和;
以所述第三通信代价总和与所述物理通路数的比值作为所述第一通信代价。
10.如权利要求7所述的系统,其特征在于,所述调度模块还用于:
根据所述通信代价所有处理器核进行排序,获得通信代价集合;
根据所述第二通信量对所有线程进行排序,获得第二多线程集合;
将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710132627.6A CN106933663B (zh) | 2017-03-07 | 2017-03-07 | 一种面向众核系统的多线程调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710132627.6A CN106933663B (zh) | 2017-03-07 | 2017-03-07 | 一种面向众核系统的多线程调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933663A true CN106933663A (zh) | 2017-07-07 |
CN106933663B CN106933663B (zh) | 2019-07-23 |
Family
ID=59424539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710132627.6A Expired - Fee Related CN106933663B (zh) | 2017-03-07 | 2017-03-07 | 一种面向众核系统的多线程调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106933663B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109709806A (zh) * | 2018-12-27 | 2019-05-03 | 杭州铭展网络科技有限公司 | 一种自适应数据采集系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193779A (zh) * | 2011-05-16 | 2011-09-21 | 武汉科技大学 | 一种面向MPSoC的多线程调度方法 |
CN103838631A (zh) * | 2014-03-11 | 2014-06-04 | 武汉科技大学 | 一种面向片上网络的多线程调度实现方法 |
US20160062798A1 (en) * | 2014-09-01 | 2016-03-03 | Samsung Electronics Co., Ltd. | System-on-chip including multi-core processor and thread scheduling method thereof |
-
2017
- 2017-03-07 CN CN201710132627.6A patent/CN106933663B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193779A (zh) * | 2011-05-16 | 2011-09-21 | 武汉科技大学 | 一种面向MPSoC的多线程调度方法 |
CN103838631A (zh) * | 2014-03-11 | 2014-06-04 | 武汉科技大学 | 一种面向片上网络的多线程调度实现方法 |
US20160062798A1 (en) * | 2014-09-01 | 2016-03-03 | Samsung Electronics Co., Ltd. | System-on-chip including multi-core processor and thread scheduling method thereof |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109709806A (zh) * | 2018-12-27 | 2019-05-03 | 杭州铭展网络科技有限公司 | 一种自适应数据采集系统 |
CN109709806B (zh) * | 2018-12-27 | 2022-07-19 | 杭州铭展网络科技有限公司 | 一种自适应数据采集系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106933663B (zh) | 2019-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yuan et al. | Complexity effective memory access scheduling for many-core accelerator architectures | |
CN100449497C (zh) | 并行计算机和定位并行计算机中硬件故障的方法 | |
CN101923491A (zh) | 多核环境下线程组地址空间调度和切换线程的方法 | |
CN103927231B (zh) | 一种面向数据处理的能耗优化数据集分配方法 | |
US11620510B2 (en) | Platform for concurrent execution of GPU operations | |
Lee et al. | Design space exploration of on-chip ring interconnection for a CPU–GPU heterogeneous architecture | |
CN117472448B (zh) | 一种申威众核处理器从核簇加速并行方法、设备及介质 | |
Maqsood et al. | Congestion-aware core mapping for network-on-chip based systems using betweenness centrality | |
IL264794B2 (en) | Scheduling of tasks on a multi-processor device | |
Goodarzi et al. | Task migration in mesh NoCs over virtual point-to-point connections | |
Slijepcevic et al. | pTNoC: Probabilistically time-analyzable tree-based noc for mixed-criticality systems | |
Daoud et al. | Faster processor allocation algorithms for mesh-connected cmps | |
CN106933663A (zh) | 一种面向众核系统的多线程调度方法及系统 | |
Skeie et al. | Flexible DOR routing for virtualization of multicore chips | |
Xu et al. | Hybrid scheduling deadline-constrained multi-DAGs based on reverse HEFT | |
Page et al. | Scalability of hybrid spmv on intel xeon phi knights landing | |
Daoud et al. | Processor allocation algorithm based on frame combing with memorization for 2d mesh cmps | |
Kohútka et al. | A novel hardware-accelerated real-time task scheduler based on robust earliest deadline algorithm | |
CN106445661A (zh) | 一种动态优化方法及系统 | |
Patil et al. | Review on a comparative study of various task scheduling algorithm in cloud computing environment | |
Yazdanpanah et al. | A comprehensive view of MapReduce aware scheduling algorithms in cloud environments | |
CN106385385B (zh) | 资源分配方法及装置 | |
Frid et al. | Memory-aware multiobjective design space exploration of heteregeneous MPSoC | |
Majkowska et al. | Task allocation in distributed mesh-connected machine learning system: Simplified busy list algorithm with q-learning based queuing | |
Gautam et al. | Improving system performance in homogeneous multicore systems |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190723 Termination date: 20200307 |
|
CF01 | Termination of patent right due to non-payment of annual fee |