CN106354552B - 并行计算任务分配方法和装置 - Google Patents
并行计算任务分配方法和装置 Download PDFInfo
- Publication number
- CN106354552B CN106354552B CN201510419975.2A CN201510419975A CN106354552B CN 106354552 B CN106354552 B CN 106354552B CN 201510419975 A CN201510419975 A CN 201510419975A CN 106354552 B CN106354552 B CN 106354552B
- Authority
- CN
- China
- Prior art keywords
- thread
- task
- assigned
- tasks
- 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
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种并行计算任务分配方法和装置,包括:步骤A:将N项任务按照计算其所需的执行时间由大到小的顺序进行排序得到任务序列;步骤B:将任务序列的前M项任务依序分配到线程1至线程M;步骤C:从线程M到线程1分配任务,将任务序列的第M+1项任务分配到线程M,如果线程M的当前执行时间≤线程M‑1的执行时间,则将第M+2项任务分配到线程M,否则将第M+2项任务分配到线程M‑1;继续分配任务序列中剩余的任务,直到线程1再次被分配到任务或者任务被分配完毕;步骤D:如果任务没有被分配完,则按照步骤C的分配原则将剩余的任务依序分配到线程1至线程M;步骤E:重复执行步骤C和步骤D,直到全部任务被分配完毕。
Description
技术领域
本发明涉及一种并行计算任务分配方法和装置。
背景技术
与传统的多线程串行计算相比,多线程并行计算能够更加高效的处理给定的多个任务或工作。
例如,给定9个工作(j1-j9)以及3个线程,这9个工作所用时间如表1所示:
表1
j1 | 1000 |
j2 | 10 |
j3 | 4 |
j4 | 999 |
j5 | 8 |
j6 | 6 |
j7 | 998 |
j8 | 2 |
j9 | 1 |
如果按照串行式分配,将全部9个工作分配至一个线程处理,如表2和表3所示,将全部9个工作分配至线程1处理,则总消耗时间为3028。
表2
线程1 | j1 | j2 | j3 | j4 | j5 | j6 | j7 | j8 | j9 |
线程2 |
线程3 |
表3
线程1 | 1000 | 10 | 4 | 999 | 8 | 6 | 998 | 2 | 1 |
线程2 | |||||||||
线程3 |
如果按照并行式分配,将全部9个工作由3个线程并行分配处理,如表4和表3所示,则总消耗时间为2997。
表4
线程1 | j1 | j4 | j7 |
线程2 | j2 | j5 | j8 |
线程3 | j3 | j6 | j9 |
表5
线程1 | 1000 | 999 | 998 |
线程2 | 10 | 8 | 2 |
线程3 | 4 | 6 | 1 |
通过上述比较可知,虽然现有技术的并行式分配能够节省计算时间,但是,节省的时间有限,并不能够大幅度节省时间,不能够满足用户需求。
发明内容
本发明的主要目的在于提供一种并行计算任务分配方法和装置,以解决现有技术存在的上述问题。
为解决上述问题,根据本发明实施例提供了一种并行计算任务分配方法,用于将N项任务分配给M个线程,其中N>M,所述方法包括:
步骤(A):将N项任务按照计算其所需的执行时间由大到小的顺序进行排序得到任务序列;
步骤(B):将任务序列的前M项任务依序分配到线程1至线程M;
步骤(C):从线程M到线程1分配任务,将任务序列的第M+1项任务分配到线程M,如果线程M的当前执行时间小于或等于线程M-1的执行时间,则将第M+2项任务分配到线程M,否则将第M+2项任务分配到线程M-1;按照上述分配原则依序分配任务序列中剩余的任务,直到线程1再次被分配到任务或者任务被分配完毕;
步骤(D):如果任务没有被分配完,则按照步骤(C)的分配原则将任务序列中剩余的任务依序分配到线程1至线程M;
步骤(E):重复执行步骤(C)和步骤(D),直到任务序列中的全部任务被分配完毕。
其中,所述任务序列包括:
(j1,t1)、(j2,t2)、...、(jN,tN);
其中,j1、j2、...、jN为任务,t1、t2、...、tN为计算相对应的任务所需的执行时间,且t1≥t2≥...≥tN。
其中,所述将任务序列的前M项任务依序分配到线程1至线程M,包括:
将任务j1分配到线程1、将任务j2分配到线程2、...、将任务jM分配到线程M;
对于执行前M项任务,各个线程所花费的执行时间分别为:T1=t1、T2=t2、...、TM=tM。
其中,所述将任务序列的第M+1项任务分配到线程M,如果线程M的当前执行时间小于或等于线程M-1的执行时间,则将第M+2项任务分配到线程M,否则将第M+2项任务分配到线程M-1,包括:
将任务j(M+1)分配给线程M,线程M的当前执行时间为:TM=tM+t(M+1);
如果TM≤T(M-1),则将任务j(M+2)也分配到线程M执行;如果TM>T(M-1),则将任务j(M+2)分配到线程M-1。
根据本发明实施例还提供一种并行计算任务分配装置,用于将N项任务分配给M个线程,其中N>M,所述装置包括:
排序模块,用于将N项任务按照计算其所需的执行时间由大到小的顺序进行排序得到任务序列;
第一分配模块,用于将任务序列的前M项任务依序分配到线程1至线程M;
第二分配模块,用于从线程M到线程1分配任务,将任务序列的第M+1项任务分配到线程M,如果线程M的当前执行时间小于或等于线程M-1的执行时间,则将第M+2项任务分配到线程M,否则将第M+2项任务分配到线程M-1;按照上述分配原则依序分配任务序列中剩余的任务,直到线程1再次被分配到任务或者任务被分配完毕;
第三分配模块,用于如果任务没有被分配完,则按照第二分配模块使用的分配原则将任务序列中剩余的任务依序分配到线程1至线程M;
重复执行第二分配模块和第三分配模块,直到任务序列中的全部任务被分配完毕。
其中,所述任务序列包括:
(j1,t1)、(j2,t2)、...、(jN,tN);
其中,j1、j2、...、jN为任务,t1、t2、...、tN为计算相对应的任务所需的执行时间,且t1≥t2≥...≥tN。
其中,所述第一分配模块还用于,将任务j1分配到线程1、将任务j2分配到线程2、...、将任务jM分配到线程M;对于执行前M项任务,各个线程所花费的执行时间分别为:T1=t1、T2=t2、...、TM=tM。
其中,所述第二分配模块还用于,将任务j(M+1)分配给线程M,线程M的当前执行时间为:TM=tM+t(M+1);如果TM≤T(M-1),则将任务j(M+2)也分配到线程M执行;如果TM>T(M-1),则将任务j(M+2)分配到线程M-1。
与现有技术相比,根据本发明的技术方案,通过按照任务的执行时间对任务进行多线程并行分配计算,能够明显缩短线程的计算执行时间,显著提高了线程的计算效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明一个实施例的并行计算任务分配方法的流程图;
图2是本发明另一实施例的并行计算任务分配方法的流程图;
图3是本发明实施例的并行计算任务分配装置的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
根据本发明的实施例,提供了一种并行计算任务分配方法。一般情况下,任务的数量大于执行线程的数量,例如将N项任务分配给M个线程,且N>M。
图1是本发明一个实施例的并行计算任务分配方法的流程图,如图1所述,该方法包括:
步骤S102,将N项任务按照计算其所需的执行时间由大到小的顺序进行排序得到任务序列;
所述任务序列为:(j1,t1)、(j2,t2)、...、(jN,tN);
其中,j1、j2、...、jN为任务,t1、t2、...、tN为计算相对应的任务所需的执行时间,且t1≥t2≥...≥tN。
步骤S104,将任务序列的前M项任务依序分配到线程1至线程M;
将任务j1分配到线程1、将任务j2分配到线程2、...、将任务jM分配到线程M;
对于执行前M项任务,各个线程所花费的执行时间分别为:T1=t1、T2=t2、...、TM=tM。
步骤S106,从线程M到线程1分配任务,将任务序列的第M+1项任务分配到线程M,如果线程M的当前执行时间小于或等于线程M-1的执行时间,则将第M+2项任务分配到线程M,否则将第M+2项任务分配到线程M-1;按照上述分配原则依序分配任务序列中剩余的任务,直到线程1再次被分配到任务或者任务被分配完毕;
将任务j(M+1)分配给线程M,线程M的当前执行时间为:TM=tM+t(M+1);如果TM≤T(M-1),则将任务j(M+2)也分配到线程M执行;如果TM>T(M-1),则将任务j(M+2)分配到线程M-1。
步骤S108,如果任务没有被分配完,则按照步骤S106的分配原则将任务序列中剩余的任务依序分配到线程1至线程M;
步骤S110,重复执行步骤S106和步骤S108,直到任务序列中的全部任务被分配完毕。
下面结合图2详细描述本发明实施例。图2是本发明另一实施例的并行计算任务分配方法的流程图,如图2所述,该方法包括:
步骤S202,将N项任务按照计算其所需的执行时间由大到小的顺序进行排序得到任务序列:;
步骤S204,将任务序列的前M项任务依序分配到线程1至线程M;
具体地,将任务j1分配到线程1、将任务j2分配到线程2、...、将任务jM分配到线程M;对于执行前M项任务,各个线程所花费的执行时间分别为:T1=t1、T2=t2、...、TM=tM。
步骤S206,从线程M到线程1进行分配;
将任务j(M+1)分配到线程M,此时线程M执行任务jM和j(M+1),也就是说,线程M的当前执行时间包括执行任务jM的执行时间和执行任务j(M+1)的执行时间,即TM=tM+t(M+1)。
步骤S208,判断TM≤T(M-1)?如果是则执行步骤S210,否则执行步骤S212。
步骤S210,将任务j(M+2)分配到线程M执行。
步骤S212,将任务j(M+2)分配到线程M-1。
步骤S214,按照上述的分配原则依序继续分配任务序列中剩余的任务,直到线程1被再次分配到任务执行步骤S216。
步骤S216,按照上述的分配原则依序继续分配任务序列中剩余的任务,从线程1到线程M进行分配。
步骤S218,jN被分配完后,表示任务被分配完毕,流程结束。
下面结合具体实例描述本发明实施例。参考表6和表7,按照表1中给定的数据,根据本发明提供的新的分配方法,总消耗时间为1010。与现有技术相比,提速3倍。
表6
线程1 | j1 | j6 | j3 |
线程2 | j4 | j5 | j8 |
线程3 | j7 | j2 | j9 |
表7
线程1 | 1000 | 6 | 4 |
线程2 | 999 | 8 | 2 |
线程3 | 998 | 10 | 1 |
根据本发明的实施例,还提供了一种并行计算任务分配装置。如图3所述,所述装置包括:
排序模块310,用于将N项任务按照计算其所需的执行时间由大到小的顺序进行排序得到任务序列;
所述任务序列包括:(j1,t1)、(j2,t2)、...、(jN,tN);
其中,j1、j2、...、jN为任务,t1、t2、...、tN为计算相对应的任务所需的执行时间,且t1≥t2≥...≥tN。
第一分配模块320,用于将任务序列的前M项任务依序分配到线程1至线程M;进一步地,所述第一分配模块320将任务j1分配到线程1、将任务j2分配到线程2、...、将任务jM分配到线程M;对于执行前M项任务,各个线程所花费的执行时间分别为:T1=t1、T2=t2、...、TM=tM。
第二分配模块330,用于从线程M到线程1分配任务,将任务序列的第M+1项任务分配到线程M,如果线程M的当前执行时间小于或等于线程M-1的执行时间,则将第M+2项任务分配到线程M,否则将第M+2项任务分配到线程M-1;按照上述分配原则依序分配任务序列中剩余的任务,直到线程1再次被分配到任务或者任务被分配完毕;进一步地,所述第二分配模块330将任务j(M+1)分配给线程M,线程M的当前执行时间为:TM=tM+t(M+1);如果TM≤T(M-1),则将任务j(M+2)也分配到线程M执行;如果TM>T(M-1),则将任务j(M+2)分配到线程M-1。
第三分配模块340,用于如果任务没有被分配完,则按照第二分配模块使用的分配原则将任务序列中剩余的任务依序分配到线程1至线程M;
重复执行第二分配模块330和第三分配模块340,直到任务序列中的全部任务被分配完毕。
本发明的方法的操作步骤与装置的结构特征对应,可以相互参照,不再一一赘述。
综上所述,根据本发明的技术方案,通过按照任务的执行时间对任务进行多线程并行分配计算,能够明显缩短线程的计算执行时间,显著提高了线程的计算效率。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (8)
1.一种并行计算任务分配方法,用于将N项任务分配给M个线程,其中N>M,其特征在于,所述方法包括:
步骤(A):将N项任务按照计算其所需的执行时间由大到小的顺序进行排序得到任务序列;
步骤(B):将任务序列的前M项任务依序分配到线程1至线程M;
步骤(C):按第一分配原则从线程M到线程1分配任务,包括:先按所述第一分配原则分配线程M的任务,包括:将任务序列的第M+1项任务分配到线程M,如果线程M的当前执行时间小于或等于线程M-1的执行时间,则将第M+2项任务分配到线程M,否则将第M+2项任务分配到线程M-1;再按照所述第一分配原则依序分配任务序列中剩余的任务,直到线程1再次被分配到任务或者任务被分配完毕;
步骤(D):如果任务没有被分配完,则所述第一分配原则将任务序列中剩余的任务依序分配到线程1至线程M;
步骤(E):重复执行步骤(C)和步骤(D),直到任务序列中的全部任务被分配完毕。
2.根据权利要求1所述的方法,其特征在于,所述任务序列包括:
(j1,t1)、(j2,t2)、...、(jN,tN);
其中,j1、j2、...、jN为任务,t1、t2、...、tN为计算相对应的任务所需的执行时间,且t1≥t2≥...≥tN。
3.根据权利要求2所述的方法,其特征在于,所述将任务序列的前M项任务依序分配到线程1至线程M,包括:
将任务j1分配到线程1、将任务j2分配到线程2、...、将任务jM分配到线程M;
对于执行前M项任务,各个线程所花费的执行时间分别为:T1=t1、T2=t2、...、TM=tM。
4.根据权利要求3所述的方法,其特征在于,所述将任务序列的第M+1项任务分配到线程M,如果线程M的当前执行时间小于或等于线程M-1的执行时间,则将第M+2项任务分配到线程M,否则将第M+2项任务分配到线程M-1,包括:
将任务j(M+1)分配给线程M,线程M的当前执行时间为:TM=tM+t(M+1);
如果TM≤T(M-1),则将任务j(M+2)也分配到线程M执行;如果TM>T(M-1),则将任务j(M+2)分配到线程M-1。
5.一种并行计算任务分配装置,用于将N项任务分配给M个线程,其中N>M,其特征在于,所述装置包括:
排序模块,用于将N项任务按照计算其所需的执行时间由大到小的顺序进行排序得到任务序列;
第一分配模块,用于将任务序列的前M项任务依序分配到线程1至线程M;
第二分配模块,用于按第一分配原则从线程M到线程1分配任务,包括:先按所述第一分配原则分配线程M的任务,包括:将任务序列的第M+1项任务分配到线程M,如果线程M的当前执行时间小于或等于线程M-1的执行时间,则将第M+2项任务分配到线程M,否则将第M+2项任务分配到线程M-1;再按照所述第一分配原则依序分配任务序列中剩余的任务,直到线程1再次被分配到任务或者任务被分配完毕;
第三分配模块,用于如果任务没有被分配完,则按照第二分配模块使用的分配原则将任务序列中剩余的任务依序分配到线程1至线程M;
重复执行第二分配模块和第三分配模块,直到任务序列中的全部任务被分配完毕。
6.根据权利要求5所述的装置,其特征在于,所述任务序列包括:
(j1,t1)、(j2,t2)、...、(jN,tN);
其中,j1、j2、...、jN为任务,t1、t2、...、tN为计算相对应的任务所需的执行时间,且t1≥t2≥...≥tN。
7.根据权利要求6所述的装置,其特征在于,所述第一分配模块还用于,将任务j1分配到线程1、将任务j2分配到线程2、...、将任务jM分配到线程M;对于执行前M项任务,各个线程所花费的执行时间分别为:T1=t1、T2=t2、...、TM=tM。
8.根据权利要求7所述的装置,其特征在于,所述第二分配模块还用于,将任务j(M+1)分配给线程M,线程M的当前执行时间为:TM=tM+t(M+1);如果TM≤T(M-1),则将任务j(M+2)也分配到线程M执行;如果TM>T(M-1),则将任务j(M+2)分配到线程M-1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510419975.2A CN106354552B (zh) | 2015-07-17 | 2015-07-17 | 并行计算任务分配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510419975.2A CN106354552B (zh) | 2015-07-17 | 2015-07-17 | 并行计算任务分配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106354552A CN106354552A (zh) | 2017-01-25 |
CN106354552B true CN106354552B (zh) | 2019-08-06 |
Family
ID=57842217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510419975.2A Active CN106354552B (zh) | 2015-07-17 | 2015-07-17 | 并行计算任务分配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106354552B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704322B (zh) * | 2017-09-30 | 2020-08-25 | 上海大象金泰科技有限公司 | 请求分配方法及装置 |
CN108132834B (zh) * | 2017-12-08 | 2020-08-18 | 西安交通大学 | 多级共享高速缓冲存储器架构下的任务分配方法和系统 |
CN107958349B (zh) * | 2017-12-19 | 2021-03-30 | 金蝶软件(中国)有限公司 | 任务分配方法、装置、计算机设备和存储介质 |
CN109947559B (zh) * | 2019-02-03 | 2021-11-23 | 百度在线网络技术(北京)有限公司 | 优化MapReduce计算的方法、装置、设备和计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085215A (en) * | 1993-03-26 | 2000-07-04 | Cabletron Systems, Inc. | Scheduling mechanism using predetermined limited execution time processing threads in a communication network |
CN101719079A (zh) * | 2009-12-17 | 2010-06-02 | 中国电力科学研究院 | 一种处理任务的方法及装置 |
CN103530742A (zh) * | 2013-10-28 | 2014-01-22 | 金蝶软件(中国)有限公司 | 提高排程运算速度的方法及装置 |
CN103677751A (zh) * | 2012-09-06 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 任务并行处理方法和装置 |
CN103870327A (zh) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | 一种实时多任务调度方法和装置 |
-
2015
- 2015-07-17 CN CN201510419975.2A patent/CN106354552B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085215A (en) * | 1993-03-26 | 2000-07-04 | Cabletron Systems, Inc. | Scheduling mechanism using predetermined limited execution time processing threads in a communication network |
CN101719079A (zh) * | 2009-12-17 | 2010-06-02 | 中国电力科学研究院 | 一种处理任务的方法及装置 |
CN103677751A (zh) * | 2012-09-06 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 任务并行处理方法和装置 |
CN103870327A (zh) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | 一种实时多任务调度方法和装置 |
CN103530742A (zh) * | 2013-10-28 | 2014-01-22 | 金蝶软件(中国)有限公司 | 提高排程运算速度的方法及装置 |
Non-Patent Citations (1)
Title |
---|
RING算法_基于环结构的并行调度算法的研究;王华君;《福建电脑》;20100903;第26卷(第5期);第45-46页 |
Also Published As
Publication number | Publication date |
---|---|
CN106354552A (zh) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106354552B (zh) | 并行计算任务分配方法和装置 | |
Kim et al. | Unrelated parallel machine scheduling with setup times and a total weighted tardiness objective | |
CN102799467B (zh) | 一种任务分配的方法及系统 | |
CN104462302B (zh) | 一种分布式数据处理协调方法及系统 | |
CN103064745B (zh) | 一种任务分配处理的方法及系统 | |
CN105046443A (zh) | 一种业务工单分配方法及系统 | |
CN104461748B (zh) | 一种基于MapReduce的最优本地化任务调度方法 | |
Russell et al. | A study of labor allocation strategies in cellular manufacturing | |
CN105980988A (zh) | Smp环境中在数据库工作代理间动态分配资源和任务的方法和系统 | |
CN105740332A (zh) | 数据排序方法和装置 | |
CN104023042B (zh) | 云平台资源调度方法 | |
CN107291550A (zh) | 一种针对迭代应用的Spark平台资源动态分配方法及系统 | |
Yang et al. | Multiple common due dates assignment and scheduling problems with resource allocation and general position-dependent deterioration effect | |
CN103077083A (zh) | 一种任务处理的方法及系统 | |
CN105912387A (zh) | 数据处理作业调度方法及装置 | |
Bhaskar et al. | Static and dynamic operator allocation problems in cellular manufacturing systems | |
KR102029378B1 (ko) | 생산 스케줄링 시스템 | |
CN105607956A (zh) | 一种计算机中的任务分配方法及系统 | |
CN101295377A (zh) | 工站产能规划系统及方法 | |
Rajakumar et al. | Simulation of workflow balancing in assembly shopfloor operations | |
CN105335236A (zh) | 一种分布式取证动态负载均衡调度方法和装置 | |
CN103002053B (zh) | 云计算的利润最大化调度方法和系统 | |
CN104392124A (zh) | 基于st的启发式算法的三阶段柔性流水车间调度方法 | |
CN104933110B (zh) | 一种基于MapReduce的数据预取方法 | |
Pandian et al. | Solving constrained flow-shop scheduling problems with three machines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |