CN106933663B - 一种面向众核***的多线程调度方法及*** - Google Patents

一种面向众核***的多线程调度方法及*** Download PDF

Info

Publication number
CN106933663B
CN106933663B CN201710132627.6A CN201710132627A CN106933663B CN 106933663 B CN106933663 B CN 106933663B CN 201710132627 A CN201710132627 A CN 201710132627A CN 106933663 B CN106933663 B CN 106933663B
Authority
CN
China
Prior art keywords
processor core
communication cost
traffic
thread
multithreading
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.)
Expired - Fee Related
Application number
CN201710132627.6A
Other languages
English (en)
Other versions
CN106933663A (zh
Inventor
沈欢
胡威
唐玉馨
刘小明
戴文丽
马梦东
张凯
刘俊
吕晴阳
刘丹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University of Science and Engineering WUSE
Original Assignee
Wuhan University of Science and Engineering WUSE
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan University of Science and Engineering WUSE filed Critical Wuhan University of Science and Engineering WUSE
Priority to CN201710132627.6A priority Critical patent/CN106933663B/zh
Publication of CN106933663A publication Critical patent/CN106933663A/zh
Application granted granted Critical
Publication of CN106933663B publication Critical patent/CN106933663B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling 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
C<sub>0</sub> C<sub>1</sub> C<sub>2</sub> C<sub>m-1</sub>
C<sub>0</sub> 0 R<sub>01</sub> R<sub>02</sub> R<sub>0m-1</sub>
C<sub>1</sub> R<sub>10</sub> 0 R<sub>12</sub> R<sub>1m-1</sub>
C<sub>2</sub> R<sub>20</sub> R<sub>21</sub> 0 R<sub>2m-1</sub>
0
C<sub>m-1</sub> R<sub>m-1</sub><sub>0</sub> R<sub>m-1</sub><sub>1</sub> R<sub>m-1</sub><sub>2</sub> 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为:
通信代价集合CCT={R0,R1,…,R27}
R<sub>0</sub>=2 C<sub>0</sub>,C<sub>1</sub> R<sub>7</sub>=4 C<sub>0</sub>,C<sub>2</sub> R<sub>14</sub>=6 C<sub>1</sub>,C<sub>4</sub> R<sub>21</sub>=8 C<sub>3</sub>,C<sub>7</sub>
R<sub>1</sub>=2 C<sub>1</sub>,C<sub>2</sub> R<sub>8</sub>=4 C<sub>1</sub>,C<sub>3</sub> R<sub>15</sub>=6 C<sub>2</sub>,C<sub>5</sub> R<sub>22</sub>=10 C<sub>0</sub>,C<sub>5</sub>
R<sub>2</sub>=2 C<sub>2</sub>,C<sub>3</sub> R<sub>9</sub>=4 C<sub>2</sub>,C<sub>4</sub> R<sub>16</sub>=6 C<sub>3</sub>,C<sub>6</sub> R<sub>23</sub>=10 C<sub>1</sub>,C<sub>6</sub>
R<sub>3</sub>=2 C<sub>3</sub>,C<sub>4</sub> R<sub>10</sub>=4 C<sub>3</sub>,C<sub>5</sub> R<sub>17</sub>=6 C<sub>4</sub>,C<sub>7</sub> R<sub>24</sub>=10 C<sub>2</sub>,C<sub>7</sub>
R<sub>4</sub>=2 C<sub>4</sub>,C<sub>5</sub> R<sub>11</sub>=4 C<sub>4</sub>,C<sub>6</sub> R<sub>18</sub>=8 C<sub>0</sub>,C<sub>4</sub> R<sub>25</sub>=12 C<sub>0</sub>,C<sub>6</sub>
R<sub>5</sub>=2 C<sub>5</sub>,C<sub>6</sub> R<sub>12</sub>=4 C<sub>5</sub>,C<sub>7</sub> R<sub>19</sub>=8 C<sub>1</sub>,C<sub>5</sub> R<sub>26</sub>=12 C<sub>1</sub>,C<sub>7</sub>
R<sub>6</sub>=2 C<sub>6</sub>,C<sub>7</sub> R<sub>13</sub>=6 C<sub>0</sub>,C<sub>3</sub> R<sub>20</sub>=8 C<sub>2</sub>,C<sub>6</sub> R<sub>27</sub>=14 C<sub>0</sub>,C<sub>7</sub>
接下来,计算多线程之间的通信量,具体地,举例来说,对于具有n个线程T0,T1,T2,…,Tn-1的第一多线程集合Δ,第一多线程集合Δ表示为Δ={T0,T1,T2,…,Tn-1};任给两个线程Tl和Tk,TFlk表示从线程Tl到Tk的第一通信量,则第一多线程集合Δ中全部线程之间的第一通信量可以用下表2所示的二维表表示:
表2
T<sub>0</sub> T<sub>1</sub> T<sub>2</sub> T<sub>n-1</sub>
T<sub>0</sub> 0 TF<sub>01</sub> TF<sub>02</sub> TF<sub>0n-1</sub>
T<sub>1</sub> TF<sub>10</sub> 0 TF<sub>12</sub> TF<sub>1n-1</sub>
T<sub>2</sub> TF<sub>20</sub> TF<sub>21</sub> 0 TF<sub>2n-1</sub>
0
T<sub>n-1</sub> TF<sub>n-1</sub><sub>0</sub> T<sub>n-1</sub><sub>1</sub> T<sub>n-1</sub><sub>2</sub> 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},线程之间的通信量如下表所示:
T<sub>0</sub> T<sub>1</sub> T<sub>2</sub> T<sub>3</sub> T<sub>4</sub> T<sub>5</sub> T<sub>6</sub> T<sub>7</sub>
T<sub>0</sub> 0 10 20 30 40 50 60 70
T<sub>1</sub> 10 0 10 20 30 40 50 60
T<sub>2</sub> 20 10 0 10 20 30 40 50
T<sub>3</sub> 30 20 10 0 10 20 30 40
T<sub>4</sub> 40 30 20 10 0 10 20 30
T<sub>5</sub> 50 40 30 20 10 0 10 20
T<sub>6</sub> 60 50 40 30 20 10 0 10
T<sub>7</sub> 70 60 50 40 30 20 10 0
从上表可以得到多线程集合Δ’={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 (6)

1.一种面向众核***的多线程调度方法,其特征在于,所述方法包括:
获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价,其中,所述第一处理器核、第二处理器核为处理器核集合中的任意两个处理器核,预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价的获取方式具体包括:获取所述第一处理器核到所述第二处理器核的第一通信代价,获取所述第二处理器核到所述第一处理器核的第二通信代价;以所述第一通信代价与所述第二通信代价的总和作为所述通信代价,且所述第一处理器核到所述第二处理器核的第一通信代价的获取方式具体包括:获取所述第一处理器核到所述第二处理器核之间的物理通路数;获取所述第一处理器核到所述第二处理器核之间每条物理通路的第三通信代价;对所述第三通信代价求和,获取第三通信代价总和;以所述第三通信代价总和与所述物理通路数的比值作为所述第一通信代价;
获取预设的第一多线程集合中每两个线程之间的第一通信量;
根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和,所述线程为所述第一多线程集合中的任意线程;
根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。
2.如权利要求1所述的方法,其特征在于,所述根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中,包括:
根据所述通信代价对所有处理器核进行排序,获得通信代价集合;
根据所述第二通信量对所有线程进行排序,获得第二多线程集合;
将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中。
3.如权利要求2所述的方法,其特征在于,在所述将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中之前,还包括:
如果所述第二多线程集合不为空,且所述通信代价集合不为空;
判断所述通信代价集合中通信代价最小的处理器核是否被分配;
如果所述处理器核未被分配,则将所述线程调度到所述处理器核中。
4.如权利要求2所述的方法,其特征在于,在所述将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中之后,还包括:
删除所述通信代价集合中通信代价最小的处理器核;
删除所述第二多线程集合中第二通信量最大的线程。
5.一种面向众核***的多线程调度***,其特征在于,所述***包括:
第一获取模块,用于获取预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价,其中,所述第一处理器核、第二处理器核为处理器核集合中的任意两个处理器核,预设的处理器核集合中第一处理器核与第二处理器核之间的通信代价的获取方式具体包括:获取所述第一处理器核到所述第二处理器核的第一通信代价,获取所述第二处理器核到所述第一处理器核的第二通信代价;以所述第一通信代价与所述第二通信代价的总和作为所述通信代价,且所述第一处理器核到所述第二处理器核的第一通信代价的获取方式具体包括:获取所述第一处理器核到所述第二处理器核之间的物理通路数;获取所述第一处理器核到所述第二处理器核之间每条物理通路的第三通信代价;对所述第三通信代价求和,获取第三通信代价总和;以所述第三通信代价总和与所述物理通路数的比值作为所述第一通信代价;
第二获取模块,用于获取预设的第一多线程集合中每两个线程之间的第一通信量;
第三获取模块,用于根据所述第一通信量,获取单个线程的第二通信量,其中,所述第二通信量为所述线程到所述第一多线程集合中每个线程的通信量与所述第一多线程集合中每个线程到所述线程的通信量之和,所述线程为所述第一多线程集合中的任意线程;
调度模块,用于根据所述通信代价对所有处理器核进行排序,将第二通信量最大的线程调度到通信代价最小的处理器核中。
6.如权利要求5所述的***,其特征在于,所述调度模块还用于:
根据所述通信代价对所有处理器核进行排序,获得通信代价集合;
根据所述第二通信量对所有线程进行排序,获得第二多线程集合;
将所述第二多线程集合中第二通信量最大的线程调度到所述通信代价集合中通信代价最小的处理器核中。
CN201710132627.6A 2017-03-07 2017-03-07 一种面向众核***的多线程调度方法及*** Expired - Fee Related CN106933663B (zh)

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 CN106933663A (zh) 2017-07-07
CN106933663B true 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)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109709806B (zh) * 2018-12-27 2022-07-19 杭州铭展网络科技有限公司 一种自适应数据采集***

Citations (2)

* Cited by examiner, † Cited by third party
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 武汉科技大学 一种面向片上网络的多线程调度实现方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102197874B1 (ko) * 2014-09-01 2021-01-05 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
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 武汉科技大学 一种面向片上网络的多线程调度实现方法

Also Published As

Publication number Publication date
CN106933663A (zh) 2017-07-07

Similar Documents

Publication Publication Date Title
US11036556B1 (en) Concurrent program execution optimization
CN103345461B (zh) 基于fpga的带有加速器的多核处理器片上网络***
CN105487930B (zh) 一种基于Hadoop的任务优化调度方法
CN101887382B (zh) 动态优先级的仲裁方法及装置
WO2016082370A1 (zh) 一种分布式节点组内任务调度方法及***
CN104793990B (zh) 一种多时序任务调度方法和***
CN102193779A (zh) 一种面向MPSoC的多线程调度方法
CN101923491A (zh) 多核环境下线程组地址空间调度和切换线程的方法
US8295305B2 (en) Dual scheduling of work from multiple sources to multiple sinks using source and sink attributes to achieve fairness and processing efficiency
CN104331331A (zh) 任务数目和性能感知的可重构多核处理器的资源分配方法
Singh et al. Run-time mapping of multiple communicating tasks on MPSoC platforms
CN113238848A (zh) 一种任务调度方法、装置、计算机设备和存储介质
CN104375882A (zh) 匹配于高性能计算机结构的多级嵌套数据驱动计算方法
CN104881322A (zh) 一种基于装箱模型的集群资源调度方法及装置
Kaushik et al. Computation and communication aware run-time mapping for NoC-based MPSoC platforms
CN106933663B (zh) 一种面向众核***的多线程调度方法及***
CN101625673A (zh) 一种二维网格片上网络的任务映射方法
Shu-Jun et al. Optimization and research of hadoop platform based on fifo scheduler
CN105653243A (zh) 一种通用图形处理器多任务并发执行的任务派发方法
Daoud et al. Faster processor allocation algorithms for mesh-connected cmps
CN103631659B (zh) 一种片上网络中面向通信能耗的调度优化方法
Wang et al. A dynamic priority arbiter for Network-on-Chip
Gomathi et al. An adaptive grouping based job scheduling in grid computing
Khan et al. Static Approach for Efficient Task Allocation in Distributed Environment
CN112905523A (zh) 一种芯片及核间数据传输方法

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