CN111694675A - 任务调度方法及装置、存储介质 - Google Patents

任务调度方法及装置、存储介质 Download PDF

Info

Publication number
CN111694675A
CN111694675A CN201910200097.3A CN201910200097A CN111694675A CN 111694675 A CN111694675 A CN 111694675A CN 201910200097 A CN201910200097 A CN 201910200097A CN 111694675 A CN111694675 A CN 111694675A
Authority
CN
China
Prior art keywords
task
operation task
tasks
scheduling
queue
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
Application number
CN201910200097.3A
Other languages
English (en)
Other versions
CN111694675B (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.)
Shanghai Sensetime Intelligent Technology Co Ltd
Original Assignee
Shanghai Sensetime Intelligent Technology Co Ltd
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
Priority to CN201910200097.3A priority Critical patent/CN111694675B/zh
Application filed by Shanghai Sensetime Intelligent Technology Co Ltd filed Critical Shanghai Sensetime Intelligent Technology Co Ltd
Priority to KR1020207030753A priority patent/KR20200136468A/ko
Priority to PCT/CN2019/124494 priority patent/WO2020186836A1/zh
Priority to JP2020561765A priority patent/JP7050957B2/ja
Priority to SG11202010574PA priority patent/SG11202010574PA/en
Priority to TW108148049A priority patent/TW202036306A/zh
Publication of CN111694675A publication Critical patent/CN111694675A/zh
Priority to US17/077,186 priority patent/US11347546B2/en
Application granted granted Critical
Publication of CN111694675B publication Critical patent/CN111694675B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种任务调度方法及装置,其中,该任务调度方法包括:根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间的依赖关系;基于所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度。本公开可以最小化操作任务之间的依赖,实现了对操作任务的高效调度。

Description

任务调度方法及装置、存储介质
技术领域
本公开涉及深度学习领域,尤其涉及任务调度方法及装置、存储介质。
背景技术
深度学习模型的训练是深度学习中的关键环节。训练过程是非常复杂的,使用到的硬件资源也非常多样。
目前各开源框架都有一套自己的调度方法来管理深度学习模型的训练过程,但是大多通过有向无环图描述操作任务之间的依赖关系,以使训练过程按正确流程进行,导致训练平台的任务调度效率不高。
发明内容
本公开提供了一种任务调度方法和装置以及计算机存储介质。
根据本公开实施例的第一方面,提供一种任务调度方法,所述方法包括:
根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间的依赖关系;
基于所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度。
可选地,所述操作任务对应的操作数包括读操作数和/或写操作数。
可选地,所述根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间的依赖关系,包括:
如果第二操作任务包含对第一操作任务的写操作数进行的读操作、或所述第二操作任务包含对所述第一操作任务的操作数进行的写操作,确定所述第二操作任务依赖于所述第一操作任务;
其中,所述第一操作任务和所述第二操作任务是所述操作任务队列中的不同操作任务。
可选地,所述根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间的依赖关系,还包括:
如果所述第二操作任务包含对所述第一操作任务的读操作数进行的读操作,确定所述第一操作任务与所述第二操作任务之间不存在依赖。
可选地,所述基于所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度,包括:
基于所述多个操作任务之间的依赖关系,确定所述多个操作任务的调度顺序;
为所述操作任务队列中的当前操作任务分配内存;
在所述分配内存完成之后,将所述当前操作任务调度到所述当前操作任务对应的上下文上执行,并按照所述调度顺序进行所述当前操作任务的下一个操作任务的内存分配。
可选地,所述基于所述多个操作任务之间的依赖关系,确定所述多个操作任务的调度顺序,包括:
如果所述多个操作任务中的第一操作任务与所述多个操作任务中的第二操作任务之间不存在依赖,则确定并行调用所述第一操作任务与所述第二操作任务;和/或
如果所述第二操作任务依赖于所述第一操作任务,则确定在所述第一操作任务之后调度所述第二操作任务。
可选地,所述根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间是否存在依赖,包括:
对所述多个操作任务中包括的M个通信操作任务进行融合处理,得到至少一个合并通信操作任务,每个合并通信操作任务包含所述M个通信操作任务中的至少一个通信操作任务,其中,M为大于或等于1的整数;
根据所述至少一个合并通信操作任务对应的操作数和所述多个操作任务中至少一个非通信操作任务对应的操作数,确定所述多个操作任务之间的依赖关系。
可选地,所述合并通信操作任务对应的操作数包括:所述合并通信操作任务中包括的至少一个通信操作任务对应的读操作数的集合,和/或所述合并通信操作任务中包括的至少一个通信操作任务对应的写操作数的集合。
可选地,所述操作任务队列包括第一操作任务队列和第二操作任务队列,其中,所述第一操作任务队列包含所述多个操作任务中的通信操作任务,所述第二操作任务队列包含所述多个操作任务中的非通信操作任务;
其中,所述第一操作任务队列和所述第二操作任务队列中包含的操作任务是按照基于所述多个操作任务之间的依赖关系确定的调度顺序排列的。
可选地,所述方法还包括:
记录所述第一操作任务队列与所述第二操作任务队列之间的依赖信息,其中,所述依赖信息包括:所述第一操作任务队列中依赖的所述第二操作任务队列中的至少一个操作任务中最后一个操作任务的信息,和/或所述第二操作任务队列中依赖于所述第一操作任务队列中的至少一个操作任务中最后一个操作任务的信息;
所述基于所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度,包括:
基于所述第一操作任务队列与所述第二操作任务队列之间的依赖信息,调度所述第一操作任务队列和所述第二操作任务队列中的操作任务。
可选地,所述方法还包括:
将所述内存回收操作任务对应的优先级设置为最高,其中,所述第二操作任务队列包括所述操作任务队列中除内存回收操作任务之外的非通信操作任务。
可选地,所述根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间的依赖关系之前,所述方法还包括:
确定与所述多个操作任务中每个操作任务对应的上下文,其中,所述操作任务对应的上下文包括抽象资源和信息流;
所述基于所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度,包括:
基于所述多个操作任务中每个操作任务对应的上下文以及所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度。
可选地,所述信息流包括统一计算设备架构CUDA信息流和/或主机信息流。
可选地,所述基于所述多个操作任务中每个操作任务对应的上下文以及所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度,包括:
若所述多个操作任务中的至少两个操作任务之间没有依赖并且所述至少两个操作任务对应不同的抽象资源,则并行调度所述至少两个操作任务。
可选地,所述基于所述多个操作任务中每个操作任务对应的上下文以及所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度,包括:
若所述多个操作任务中的第三操作任务和第四操作任务之间存在依赖,并且所述第三操作任务和第四操作任务对应的信息流均为CUDA信息流,则调用第一同步接口来进行所述第三操作任务和所述第四操作任务的同步。
可选地,所述基于所述多个操作任务中每个操作任务对应的上下文以及所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度,包括:
若所述多个操作任务中的第三操作任务和第四操作任务之间存在依赖,且所述第三操作任务和所述第四操作任务中的至少一个操作任务对应的信息流为主机信息流,则调用第二同步接口来进行所述第三操作任务和所述第四操作任务的同步。
根据本公开实施例的第二方面,提供一种任务调度装置,所述装置包括:
依赖关系确定模块,被配置为根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间的依赖关系;
调度模块,被配置为基于所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度。
可选地,所述操作任务对应的操作数包括读操作数和/或写操作数。
可选地,所述依赖关系确定模块包括:
第一确定子模块,被配置为如果第二操作任务包含对第一操作任务的写操作数进行的读操作、或所述第二操作任务包含对所述第一操作任务的操作数进行的写操作,确定所述第二操作任务依赖于所述第一操作任务;
其中,所述第一操作任务和所述第二操作任务是所述操作任务队列中的不同操作任务。
可选地,所述依赖关系确定模块还包括:
第二确定子模块,被配置为如果所述第一操作任务包含对所述第二操作任务的读操作数进行的读操作,确定所述第一操作任务与所述第二操作任务之间不存在依赖。
可选地,所述调度模块包括:
调度顺序确定子模块,被配置为基于所述多个操作任务之间的依赖关系,确定所述多个操作任务的调度顺序;
第一执行子模块,被配置为为所述操作任务队列中的当前操作任务分配内存;
第二执行子模块,被配置为在所述分配内存完成之后,将所述当前操作任务调度到所述当前操作任务对应的上下文上执行,并按照所述调度顺序进行所述当前操作任务的下一个操作任务的内存分配。
可选地,所述调度顺序确定子模块包括:
第一确定单元,被配置为如果所述多个操作任务中的第一操作任务与所述多个操作任务中的第二操作任务之间不存在依赖,则确定并行调用所述第一操作任务与所述第二操作任务;和/或
第二确定单元,被配置为如果所述第二操作任务依赖于所述第一操作任务,则确定在所述第一操作任务之后调度所述第二操作任务。
可选地,所述依赖关系确定模块包括:
融合子模块,被配置为对所述多个操作任务中包括的M个通信操作任务进行融合处理,得到至少一个合并通信操作任务,每个合并通信操作任务包含所述M个通信操作任务中的至少一个通信操作任务,其中,M为大于或等于1的整数;
第二确定子模块,被配置为根据所述至少一个合并通信操作任务对应的操作数和所述多个操作任务中至少一个非通信操作任务对应的操作数,确定所述多个操作任务之间的依赖关系。
可选地,所述合并通信操作任务对应的操作数包括:所述合并通信操作任务中包括的至少一个通信操作任务对应的读操作数的集合,和/或所述合并通信操作任务中包括的至少一个通信操作任务对应的写操作数的集合。
可选地,所述操作任务队列包括第一操作任务队列和第二操作任务队列,其中,所述第一操作任务队列包含所述多个操作任务中的通信操作任务,所述第二操作任务队列包含所述多个操作任务中的非通信操作任务;
其中,所述第一操作任务队列和所述第二操作任务队列中包含的操作任务是按照基于所述多个操作任务之间的依赖关系确定的调度顺序排列的。
可选地,所述装置还包括:
记录模块,被配置为记录所述第一操作任务队列与所述第二操作任务队列之间的依赖信息,其中,所述依赖信息包括:所述第一操作任务队列中依赖的所述第二操作任务队列中的至少一个操作任务中最后一个操作任务的信息,和/或所述第二操作任务队列中依赖于所述第一操作任务队列中的至少一个操作任务中最后一个操作任务的信息;
所述调度模块包括:
第一调度子模块,被配置为基于所述第一操作任务队列与所述第二操作任务队列之间的依赖信息,调度所述第一操作任务队列和所述第二操作任务队列中的操作任务。
可选地,所述装置还包括:
优先级设置模块,被配置为将所述内存回收操作任务对应的优先级设置为最高,其中,所述第二操作任务队列包括所述操作任务队列中除内存回收操作任务之外的非通信操作任务。
可选地,所述装置还包括:
上下文确定模块,被配置为确定与所述多个操作任务中每个操作任务对应的上下文,其中,所述操作任务对应的上下文包括抽象资源和信息流;
所述调度模块包括:
第二调度子模块,被配置为基于所述多个操作任务中每个操作任务对应的上下文以及所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度。
可选地,所述信息流包括统一计算设备架构CUDA信息流和/或主机信息流。
可选地,所述第二调度子模块包括:
第一调度单元,被配置为若所述多个操作任务中的至少两个操作任务之间没有依赖并且所述至少两个操作任务对应不同的抽象资源,则并行调度所述至少两个操作任务。
可选地,所述第二调度子模块包括:
第二调度单元,被配置为若所述多个操作任务中的第三操作任务和第四操作任务之间存在依赖,并且所述第三操作任务和第四操作任务对应的信息流均为CUDA信息流,则调用第一同步接口来进行所述第三操作任务和所述第四操作任务的同步。
可选地,所述第二调度子模块包括:
第三调度单元,被配置为若所述多个操作任务中的第三操作任务和第四操作任务之间存在依赖,且所述第三操作任务和所述第四操作任务中的至少一个操作任务对应的信息流为主机信息流,则调用第二同步接口来进行所述第三操作任务和所述第四操作任务的同步。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述第一方面的任意可能实现方式中的任务调度方法。
根据本公开实施例的第四方面,提供一种任务调度装置,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
调用所述存储器中存储的可执行指令,实现上述第一方面的任意可能实现方式中的任务调度方法。
根据本公开实施例的第五方面,提供一种计算机程序,所述计算机程序包括用于实现第一方面的任意可能实现方式中的方法的指令。
本公开的实施例提供的技术方案可以至少实现以下有益效果:
本公开实施例根据操作任务队列中多个操作任务所对应的操作数,来确定多个操作任务之间的依赖关系,并基于依赖关系,对多个操作任务进行调度,从而最小化操作任务之间的依赖,实现对操作任务的高效调度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开根据一示例性实施例示出的一种调度方法流程图;
图2是本公开根据一示例性实施例示出的另一种调度方法流程图;
图3是本公开根据一示例性实施例示出的另一种调度方法流程图;
图4是本公开根据一示例性实施例示出的另一种调度方法流程图;
图5是本公开根据一示例性实施例示出的一种通信重叠场景示意图;
图6是本公开根据一示例性实施例示出的另一种调度方法流程图;
图7是本公开根据一示例性实施例示出的另一种调度方法流程图;
图8是本公开根据一示例性实施例示出的一种硬件资源上下文示意图;
图9是本公开根据一示例性实施例示出的一种操作任务划分示意图;
图10是本公开根据一示例性实施例示出的一种上下文合集与调度系统之间的接口示意图;
图11是本公开根据一示例性实施例示出的另一种调度方法流程图;
图12是本公开根据一示例性实施例示出的一种调度装置框图;
图13是本公开根据一示例性实施例示出的另一种调度装置框图;
图14是本公开根据一示例性实施例示出的另一种调度装置框图;
图15是本公开根据一示例性实施例示出的另一种调度装置框图;
图16是本公开根据一示例性实施例示出的另一种调度装置框图;
图17是本公开根据一示例性实施例示出的另一种调度装置框图;
图18是本公开根据一示例性实施例示出的另一种调度装置框图;
图19是本公开根据一示例性实施例示出的另一种调度装置框图;
图20是本公开根据一示例性实施例示出的另一种调度装置框图;
图21是本公开根据一示例性实施例示出的另一种调度装置框图;
图22是本公开根据一示例性实施例示出的另一种调度装置框图;
图23是本公开根据一示例性实施例示出的另一种调度装置框图;
图24是本公开根据一示例性实施例示出的一种用于调度装置的一结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开采用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所运行的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中运行的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所运行的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本公开实施例提供了一种调度方法,可以用于深度学习训练平台,例如神经网络的训练平台,或其他涉及到硬件资源调度且需要提高调度效率的装置或平台。下面仅以深度学习训练平台为例进行说明。
如图1所示,图1是根据一示例性实施例示出的一种任务调度方法,包括以下步骤:
在步骤101中,根据操作任务队列中多个操作任务所对应的操作数,确定多个操作任务之间的依赖关系;
在步骤102中,基于多个操作任务之间的依赖关系,对操作任务队列中的多个操作任务进行调度。
上述实施例基于操作数来确定操作任务之间的依赖关系,最小化了操作任务之间的依赖,实现了细粒度的高效调度的目的。
在本公开实施例中,基于操作任务中包含的细粒度任务的操作数,来确定多个操作任务之间的依赖关系。
在一些实施例中,基于操作任务中包含的读操作和/或写操作的操作数,来确定两个操作任务之间是否存在依赖。相应地,操作数包括与读操作对应的读操作数和/或与写操作对应的写操作数。
可选地,操作任务可以包括零个、一个或多个读操作,也可以包括零个、一个或多个写操作,相应地,操作任务可以对应一个或多个操作数。
在步骤101中,可选地,可以基于两个操作任务的操作数是否相同来确定两个操作任务之间是否存在依赖,例如,如果两个操作任务的操作数不存在交集,则确定两个操作任务之间不存在依赖。在一些实施例中,可以采用以下方式基于上述操作数,确定多个操作任务之间的依赖关系:
<第一种情况>两个操作任务之间存在依赖
其中,如果操作任务队列中的第二操作任务包含对第一操作任务的写操作数进行的读操作,或者第二操作任务包含对第一操作任务的操作数进行的写操作,训练平台就可以确定第二操作任务依赖于第一操作任务。
例如,操作任务队列中的操作任务B需要读取操作任务A的写操作数,则可以确定操作任务B依赖于操作任务A。
再例如,操作任务队列中的操作任务B需要写入操作任务A的写操作数和/或读操作数,则可以确定操作任务B依赖于操作任务A。
<第二种情况>两个操作任务之间不存在依赖。
其中,如果第二操作任务包含对第一操作任务的读操作数进行的读操作,则训练平台可以确定第一操作任务与第二操作任务不存在依赖。
例如,操作任务队列中的操作任务B需要读取操作任务A的读操作数,则可以确定操作任务A与操作任务B之间不存在依赖。
再例如,如果第一操作任务与第二操作任务各自对应的操作数之间没有交集,则训练平台可以确定第一操作任务与第二操作任务不存在依赖。
例如,操作任务A的操作数为a和b,而操作任务B的操作数为c,则操作任务A无需对操作任务B的操作数做任何操作,且操作任务B也不需要对操作任务A的操作数做任何操作,则可以确定操作任务A与操作任务B之间不存在依赖。
在如图2所示的例子中,步骤102可以包括以下步骤:
在步骤102-1中,基于多个操作任务之间的依赖关系,确定多个操作任务的调度顺序;
如果按照上述步骤101的方式确定多个操作任务中的第一操作任务与多个操作任务中的第二操作任务之间不存在依赖,则训练平台可以并行调用不存在依赖的第一操作任务和第二操作任务,或者训练平台可以以任意顺序调度第一操作任务和第二操作任务。
例如,操作任务A和操作任务B之间不存在依赖,则训练平台可以并行或以任意先后顺序调度操作任务A和操作任务B。
如果按照上述步骤101的方式确定第二操作任务依赖于第一操作任务,则训练平台可以在调度第一操作任务之后,再调度第二操作任务。
例如,操作任务B依赖于操作任务A,则训练平台可以先调度操作任务A,再调度操作任务B。
在步骤102-2中,为操作任务队列中的当前操作任务分配内存;
训练平台在基于多个操作任务之间的依赖关系,确定多个操作任务的调度顺序之后,可以按照该调度顺序调度操作任务队列中的多个操作任务。其中,对操作任务队列中的某个操作任务的调度包含两个过程:分配该操作任务所需要的内存空间以及将该操作任务的运算符(operator)调度到对应的上下文上执行。
在步骤102-3中,在分配内存完成之后,将当前操作任务调度到当前操作任务对应的上下文上执行,并按照调度顺序进行当前操作任务的下一个操作任务的内存分配。
在一些实施例中,训练平台可以在为当前操作任务分配完内存之后,向当前操作任务对应的上下文发送当前操作任务的操作执行请求,此时可以无需等待当前操作任务执行完毕,训练平台就可以开始按照调度顺序进行当前操作任务的下一个操作任务的内存分配。也就是说,在完成当前操作任务的内存分配之后,可以并行地进行当前操作任务的执行和下一操作任务的调度。下一操作任务的调度需要等待当前操作任务的内存分配完成,而无需等待当前操作任务的执行完成。在一些实施例中,在为某个操作任务分配内存时,如果内存空间不足,则需要按照调度顺序等待该操作任务之前的至少一个操作任务执行完毕,然后释放出足够的内存空间,才可以继续对当前操作任务进行内存准备。
上述实施例中,可以针对不存在依赖的操作任务,充分发掘任务并发性。对于存在依赖的操作任务,可以先为当前操作任务分配内存,在发送当前操作任务的操作执行请求之后,无需等待当前操作任务执行完毕,就可以开始执行当前操作任务的下一个操作任务的内存分配。通过上述过程,实现了细粒度的高效调度的目的。
在一些实施例中,在训练平台的实际应用中,不同的计算节点之间的通信效率的提高也是提高训练效率的关键,通信消息影响了训练平台的可扩展性。现有技术中,Nvidia(英伟达)GPU集群环境下通常采用NCCL(Nvidia Collective multi-GPU CommunicationLibrary,英伟达集体多GPU通信库)进行通信。
NCCL的实现机制是将所有的通信节点首尾连接形成单向环,数据分片流水线传输,理想情况下通信时间不随节点数的增加而增加,只和数据总量及带宽有关,但只有当数据的份数远大于节点数才成立。这种特性使NCCL在数据量较小时效率很低。为了获得较大的通信数据量,我们引入了对通信操作任务的操作融合。
可选地,如图3所示的例子中,步骤101可以包括以下步骤:
在步骤101-1中,对多个操作任务中包括的M个通信操作任务进行融合处理,得到至少一个合并通信操作任务,每个合并通信操作任务包含M个通信操作任务中的至少一个通信操作任务;
本步骤中,M可以为大于或等于1的整数。训练平台可以对多个通信操作任务进行融合,从而得到一个或多个合并通信操作任务。每一个合并通信操作任务所包括的通信操作任务的数目可以是一个或多个。
在步骤101-2中,根据至少一个合并通信操作任务对应的操作数和多个操作任务中至少一个非通信操作任务对应的操作数,确定多个操作任务之间的依赖关系。
本步骤中,训练平台可以将合并通信操作任务所包括的至少一个通信操作任务对应的读操作数和/或写操作数分别进行融合,得到融合后的读操作数的集合和/或写操作数的集合,从而将读操作数的集合作为合并通信任务所对应的读操作数,以及将写操作数的集合作为合并通信任务所对应的写操作数。
进一步地,训练平台就可以根据合并通信操作任务对应的操作数,来确定不同的合并通信操作任务之间的依赖关系,以及可以根据合并同学操作任务对应的操作数和多个操作任务中至少一个非通信操作任务对应的操作数,来确定合并通信操作任务与至少一个非通信操作任务之间的依赖关系。
确定依赖关系的方式与上述实施例中确定至少两个操作任务之间的依赖关系的方式相同,在此不再赘述。
上述实施例中,训练平台可以在将多个通信操作任务进行融合处理,合并为至少一个合并通信操作任务之后,根据至少一个合并操作任务对应的操作数和多个操作任务中至少一个非通信操作任务对应的操作数,确定合并通信操作任务之间的依赖关系,和/或至少一个合并通信操作任务跟至少一个非通信操作任务之间的依赖关系,从而获得更大的通信数据量,使得训练平台具有更高效的通信效率。
在一些实施例中,可以将操作任务队列划分为第一操作任务对列和第二操作任务队列,其中,第一操作任务对了包含多个操作任务中的通信操作任务,可选地,第一操作任务队列为远程通信队列。第二操作任务队列包含多个操作任务中的非通信操作任务,可选地,第二操作任务对列为本地队列。
在上述两个队列所各自包含的操作任务是按照基于多个操作任务之间的依赖关系确定的调度顺序排列的,因此,在同一个队列中的操作任务不需要记录所依赖的操作任务的信息,按照队列先入先出的机制就可以保证。
例如,操作任务B依赖于操作任务A,调度顺序为先调度操作任务A,再调度操作任务B,操作任务A和操作任务B均为通信操作任务,那么在第一操作任务对列中操作任务A排在操作任务B之前,基于队列先入先出机制,会先调度操作任务A,再调度操作任务B,这样操作任务B就不需要记录依赖的操作任务A的信息了。
同样地,如果操作任务A和操作任务B都为非通信操作任务,在第二操作任务对列中同样是操作任务A排在操作任务B之前,就不需要操作任务B记录操作任务A的信息。
通过上述过程,可以让通信操作任务更快执行,例如,操作任务E依赖于操作任务A,操作任务A和操作任务E均为通信操作任务,在操作任务队列中需要顺序调度操作任务A、操作任务B、操作任务C和操作任务D之后,才可以调度操作任务E。如果将操作任务队列划分为第一操作任务队列和第二操作任务对列,那么第一操作任务队列中包括了操作任务A和操作任务E,第二操作任务队列中包括了操作任务B、操作任务C和操作任务D。在第一操作任务队列中,操作任务A执行完毕就可以开始执行操作任务E,无需等待操作任务B、操作任务C和操作任务D均执行完毕。
上述实施例中,通过将通信操作任务和非通信操作任务分别存放在第一操作任务队列和第二操作任务队列中,从而实现了高效的通信任务的重叠,提升了系统并行效率。
在一些实施例中,如图4所示的例子中,上述调度方法还可以包括以下步骤:
在步骤103中,记录第一操作任务队列与第二操作任务队列之间的依赖信息,其中,依赖信息包括:第一操作任务队列中依赖的第二操作任务队列中的至少一个操作任务中最后一个操作任务的信息,和/或第二操作任务队列中依赖于第一操作任务队列中的至少一个操作任务中最后一个操作任务的信息。
本步骤中,如果不同的操作任务队列中的操作任务有依赖关系,则训练平台可以记录两个操作任务队列相依赖的最后一个操作任务的信息,例如图5所示。例如,第一操作任务队列中的操作任务A依赖于第二操作任务队列中国的操作任务B和C,操作任务C依赖于操作任务B,则只需要记录操作任务A对于操作任务C的依赖。
进一步地,步骤102可以包括:
基于第一操作任务队列与第二操作任务队列之间的依赖信息,调度第一操作任务队列和第二操作任务队列中的操作任务。
上述实施例中,通过记录两个操作任务队列互相依赖的最后一个操作任务的信息,使得第一操作任务队列中的通信操作任务可以更加快速的执行,无需等待非通信操作任务的完成,实现了高效的通信任务的重叠的目的。
在一些实施例中,在动态调度方案中,内存管理是复杂而关键的问题,如果不能正确、及时地进行内存回收,会导致目标操作任务不能尽早调度,或等效于可计算的样本数减少。为了解决这一问题,本公开实施例提出了将内存回收操作任务对应的优先级设置为最高。
如图6所示,图6是在前述图4所示实施例的基础上示出的另一种调度方法,上述调度方法还可以包括以下步骤:
在步骤104中,将内存回收操作任务对应的优先级设置为最高,其中,第二操作任务队列包括操作任务队列中除内存回收操作任务之外的非通信操作任务。
本步骤中,如果某个操作任务调度到相应的上下文之后,训练平台除了可以将该目标操作任务从它所在的任务队列中删除之外,还可以删除它对应的内存回收操作集合。即某个目标操作任务调度到相应的上下文之后,训练平台可以提前设置回收该目标操作任务占用的内存的操作,从而在目标操作任务完成后,快速回收占用的内存。
在本公开实施例中,可选地,内存回收操作不像其他目标操作任务一样存放在第一操作任务队列或第二操作任务队列中,而是存放在额外的map(映射)数据结构中。在该数据结构中,key(关键字)是被依赖的非回收内存操作,即被依赖的是相应的目标操作任务,该回收内存操作存放在value(数值)所指向的vector(矢量)中。
上述实施例中,将内存回收操作任务对应的优先级设置为最高,且独立存放内存回收操作,确保内存资源及时清理,使得训练平台的内存回收更加高效。
在一些实施例中,如图7所示的例子中,上述调度方法还可以包括以下步骤:
在步骤100中,确定与多个操作任务中每个操作任务对应的上下文,其中,操作任务对应的上下文包括抽象资源和信息流;
本公开一些实施例中,训练平台可以对系统中的硬件资源进行抽象,针对每个硬件资源提供统一的逻辑管理和接口,从而可以得到如下抽象资源:
GPU(Graphics Processing Unit,图像处理器)计算资源、PCIE(PeripheralComponent Interconnect Express,高速串行计算机扩展总线标准)上行传输资源、PCIE下行传输资源、IB(InfiniBand,无限宽带)网络资源和CPU(Central Processing Unit,中央处理器)计算资源。
在得到上述抽象资源的基础上,可以进一步封装每种抽象资源的操作任务队列。其中,GPU计算资源、PCIE上行传输资源、PCIE下行传输资源和IB网络资源对应的操作任务本质上是对异步的CUDA Stream(信息流)的封装,因此GPU计算资源、PCIE上行传输资源、PCIE下行传输资源和IB网络资源对应的信息流可以是CUDA信息流。CPU计算资源对应的信息流则可以为Host(主机)Stream。
操作任务的Context(上下文)包含抽象资源和相应的信息流,例如图8所示。
训练平台可以根据与每种硬件资源对应的上下文,将操作任务队列中的多个操作任务划分为与每个抽象资源一一对应的操作任务。
如图9所示,可以将多个操作任务划分为内置操作任务和可扩展操作任务。其中,内置操作任务可以实现系统内置功能,例如上行传输、下行传输、内存回收等。可扩展操作任务可以根据需要由训练平台的用户来添加,可选地,可以进一步划分为计算操作任务和通信操作任务。计算操作任务还可以进一步划分为CPU计算操作任务和GPU计算操作任务。
划分后的每个操作任务对应一个相应的上下文。相应地,上述步骤102包括:
基于多个操作任务中每个操作任务对应的上下文以及多个操作任务之间的依赖关系,对操作任务队列中的多个操作任务进行调度。
即训练平台可以基于每个操作任务对应的上下文以及多个操作任务之间的依赖关系,对多个操作任务进行调度。具体实现过程如下:
<第一种情况>两个操作任务之间不存在依赖。
训练平台可以在多个操作任务中的两个操作任务之间不存在依赖且至少两个操作任务对应不同的抽象资源时,并行调度这两个操作任务。
<第二种情况>两个操作任务之间存在依赖。
假设第四操作任务依赖于第三操作任务,训练平台需要确定第三操作任务和第四操作任务各自对应的信息流是什么,并基于第三操作任务和第四操作任务对应的信息流,确定第三操作任务和第四操作任务的同步接口。
在一些实施例中,如果第三操作任务和第四操作任务对应的信息流均为CUDA信息流,那么训练平台可以调用第一同步接口来进行第三操作任务和第四操作任务的同步。
可选地,第一同步接口可以是cudaStreamWaitEvent()接口。
在本公开实施例中,可以通过CUDA Event(事件)对操作任务队列中的操作任务进行状态查询、等待完成等。
基于CUDA Event提供一种细粒度、轻量级的隐式同步方式。如果训练平台检测到上述任意两个操作任务存在依赖,且对应的信息流均为CUDA Stream,则训练平台可以调用第一同步接口。
例如,调用第一同步接口确定第三操作任务的当前状态,例如是否进行了对第三操作任务的调度,以同步第三操作任务和第四操作任务。
在一些实施例中,如果第三操作任务和第四操作任务中的至少一个操作任务对应的信息流为主机信息流,则可以调用第二同步接口来进行第三操作任务和第四操作任务的同步。
可选地,第二同步接口可以是cudaStreamSynchronize()接口。
在上述实施例中,训练平台在调用第一同步接口时产生的延迟和开销小于调用第二同步接口时产生的延迟和开销,从而可以实现更高效的硬件系统利用率。
在一些实施例中,硬件资源上下文与训练平台的调度系统之间可以存在第一接口和第二接口,如图10所示。第一接口用于调度系统向指定的上下文发布需要调度的操作任务,可选地,第一接口可以是schedule()接口。第二接口则用于调度系统对任一上下文进行同步,可选地,第二接口可以是synchronize()接口。
在上述实施例中,在硬件资源上下文与调度系统之间提供不同的接口,进一步提高了硬件资源的利用率。
在一些实施例中,如图11所示的例子中,任务调度方法可以包括以下步骤:
在步骤201中,获取与操作任务队列中的多个操作任务中每个操作任务对应的上下文。
在步骤202中,多个操作任务中包括的多个通信操作任务进行融合处理,得到至少一个合并通信操作任务。
在步骤203中,根据至少一个合并通信操作任务对应的操作数和多个操作任务中至少一个非通信操作任务对应的操作数,确定多个操作任务之间的依赖关系。
如果多个操作任务中的第二操作任务包含对第一操作任务的写操作数进行的读操作、或第二操作任务包含对第一操作任务的操作数进行的写操作,确定第二操作任务依赖于第一操作任务。
如果第二操作任务包含对第一操作任务的读操作数进行的读操作,确定第一操作任务与第二操作任务之间不存在依赖。
在步骤204中,基于多个操作任务之间的依赖关系,确定多个操作任务的调度顺序。
若多个操作任务中的至少两个操作任务之间不存在依赖,则并行调度至少两个操作任务。
若多个操作任务中的第三操作任务和第四操作任务之间存在依赖,并且第三操作任务和第四操作任务对应的信息流均为CUDA信息流,则调用第一同步接口来进行第三操作任务和第四操作任务的同步。
若多个操作任务中的第三操作任务和第四操作任务之间存在依赖,且第三操作任务和第四操作任务中的至少一个对应的信息流为主机信息流,则调度第二同步接口来进行第三操作任务和第四操作任务的同步。
操作任务队列可以包括第一操作任务队列和第二操作任务队列,其中,第一操作任务队列包含多个操作任务中的通信操作任务,第二操作任务队列包含多个操作任务中的非通信操作任务;其中,第一操作任务队列和第二操作任务队列中包含的操作任务是按照基于多个操作任务之间的依赖关系确定的调度顺序排列的。
在步骤205中,记录第一操作任务队列与第二操作任务队列之间的依赖信息。
在步骤206中,为操作任务队列中的当前操作任务分配内存。
在步骤207中,在分配内存完成之后,将当前操作任务调度到当前操作任务对应的上下文上执行,并按照调度顺序进行当前操作任务的下一个操作任务的内存分配。
在步骤208中,基于第一操作任务队列与第二操作任务队列之间的依赖信息,调度第一操作任务队列和第二操作任务队列中的操作任务。
在步骤209中,将内存回收操作任务对应的优先级设置为最高。
其中,上述第二操作任务队列包括操作任务队列中除内存回收操作任务之外的非通信操作任务。
步骤209可以在所依赖的操作任务调度到相应的上下文之后执行。上述所有步骤的执行过程与之前实施例提供的执行过程一致,在此不再赘述。
上述实施例中,对各类硬件资源进行了抽象与封装。在此基础上,为每种资源设计了异步任务队列,提出了一种队列间灵活高效的隐式同步策略。另外,基于与多个操作任务对应的操作数,来确定多个操作任务之间的依赖关系,最小化操作之间的依赖,实现了高效的依赖分析及调度策略。充分挖掘无依赖操作之间的任务并发性,提升硬件资源利用率。通过隐式同步降低存在依赖的操作之间的依赖延迟。本公开实施例还提供了高效的通信融合与重叠方案。通过通信融合提升通信操作自身的效率,通过通信重叠提升训练过程的整体效率,并解决了融合与重叠过程中引入的依赖关系融合、多任务队列互相依赖等问题。内存回收操作被定义为最高优先级操作,以确保内存资源的及时清理,实现了高效的内存回收的目的。
与前述方法实施例相对应,本公开还提供了装置的实施例。
如图12所示,图12是本公开根据一示例性实施例示出的一种任务调度装置框图,装置包括:
依赖关系确定模块310,被配置为根据操作任务队列中多个操作任务所对应的操作数,确定多个操作任务之间的依赖关系;
调度模块320,被配置为基于多个操作任务之间的依赖关系,对操作任务队列中的多个操作任务进行调度。
可选地,操作任务对应的操作数包括读操作数和/或写操作数。
如图13所示,图13本公开根据一示例性实施例示出的另一种任务调度装置框图,该实施例在前述图12实施例的基础上,依赖关系确定模块310包括:
第一确定子模块311,被配置为如果第二操作任务包含对第一操作任务的写操作数进行的读操作、或第二操作任务包含对第一操作任务的操作数进行的写操作,确定第二操作任务依赖于第一操作任务;
其中,第一操作任务和第二操作任务是操作任务队列中的不同操作任务。
如图14所示,图14本公开根据一示例性实施例示出的另一种任务调度装置框图,该实施例在前述图13实施例的基础上,依赖关系确定模块310还包括:
第二确定子模块312,被配置为如果第一操作任务包含对第二操作任务的读操作数进行的读操作,确定第一操作任务与第二操作任务之间不存在依赖。
如图15所示,图15本公开根据一示例性实施例示出的另一种任务调度装置框图,该实施例在前述图12实施例的基础上,调度模块320包括:
调度顺序确定子模块321,被配置为基于多个操作任务之间的依赖关系,确定多个操作任务的调度顺序;
第一执行子模块322,被配置为为操作任务队列中的当前操作任务分配内存;
第二执行子模块323,被配置为在分配内存完成之后,将当前操作任务调度到当前操作任务对应的上下文上执行,并按照调度顺序进行当前操作任务的下一个操作任务的内存分配。
如图16所示,图16本公开根据一示例性实施例示出的另一种任务调度装置框图,该实施例在前述图15实施例的基础上,调度顺序确定子模块321包括:
第一确定单元3211,被配置为如果多个操作任务中的第一操作任务与多个操作任务中的第二操作任务之间不存在依赖,则确定并行调用第一操作任务与第二操作任务;和/或
第二确定单元3212,被配置为如果第二操作任务依赖于第一操作任务,则确定在第一操作任务之后调度第二操作任务。
如图17所示,图17本公开根据一示例性实施例示出的另一种任务调度装置框图,该实施例在前述图12实施例的基础上,依赖关系确定模块310包括:
融合子模块313,被配置为对多个操作任务中包括的M个通信操作任务进行融合处理,得到至少一个合并通信操作任务,每个合并通信操作任务包含M个通信操作任务中的至少一个通信操作任务,其中,M为大于或等于1的整数;
第三确定子模块314,被配置为根据至少一个合并通信操作任务对应的操作数和多个操作任务中至少一个非通信操作任务对应的操作数,确定多个操作任务之间的依赖关系。
可选地,合并通信操作任务对应的操作数包括:合并通信操作任务中包括的至少一个通信操作任务对应的读操作数的集合,和/或合并通信操作任务中包括的至少一个通信操作任务对应的写操作数的集合。
可选地,操作任务队列包括第一操作任务队列和第二操作任务队列,其中,第一操作任务队列包含多个操作任务中的通信操作任务,第二操作任务队列包含多个操作任务中的非通信操作任务;
其中,第一操作任务队列和第二操作任务队列中包含的操作任务是按照基于多个操作任务之间的依赖关系确定的调度顺序排列的。
如图18所示,图18本公开根据一示例性实施例示出的另一种任务调度装置框图,该实施例在前述图12实施例的基础上,装置还包括:
记录模块330,被配置为记录所述第一操作任务队列与所述第二操作任务队列之间的依赖信息,其中,所述依赖信息包括:所述第一操作任务队列中依赖的所述第二操作任务队列中的至少一个操作任务中最后一个操作任务的信息,和/或所述第二操作任务队列中依赖于所述第一操作任务队列中的至少一个操作任务中最后一个操作任务的信息;
调度模块320包括:
第一调度子模块324,被配置为基于所述第一操作任务队列与所述第二操作任务队列之间的依赖信息,调度所述第一操作任务队列和所述第二操作任务队列中的操作任务。
如图19所示,图19本公开根据一示例性实施例示出的另一种任务调度装置框图,该实施例在前述图18实施例的基础上,装置还包括:
优先级设置模块340,被配置为将内存回收操作任务对应的优先级设置为最高,其中,第二操作任务队列包括操作任务队列中除内存回收操作任务之外的非通信操作任务。
如图20所示,图20本公开根据一示例性实施例示出的另一种任务调度装置框图,该实施例在前述图19实施例的基础上,装置还包括:
上下文确定模块350,被配置为确定与多个操作任务中每个操作任务对应的上下文,其中,操作任务对应的上下文包括抽象资源和信息流;
调度模块320包括:
第二调度子模块325,被配置为基于多个操作任务中每个操作任务对应的上下文以及多个操作任务之间的依赖关系,对操作任务队列中的多个操作任务进行调度。
可选地,信息流包括统一计算设备架构CUDA信息流和/或主机信息流。
如图21所示,图21本公开根据一示例性实施例示出的另一种调度装置框图,该实施例在前述图20实施例的基础上,第二调度子模块325包括:
第一调度单元3251,被配置为若多个操作任务中的至少两个操作任务之间没有依赖并且所述至少两个操作任务对应不同的抽象资源,则并行调度至少两个操作任务。
如图22所示,图22本公开根据一示例性实施例示出的另一种调度装置框图,该实施例在前述图20实施例的基础上,第二调度子模块325包括:
第二调度单元3252,被配置为若多个操作任务中的第三操作任务和第四操作任务之间存在依赖,并且第三操作任务和第四操作任务对应的信息流均为CUDA信息流,则调用第一同步接口来进行第三操作任务和第四操作任务的同步。
如图23所示,图23本公开根据一示例性实施例示出的另一种调度装置框图,该实施例在前述图20实施例的基础上,调度子模块325包括:
第三调度单元3253,被配置为若多个操作任务中的第三操作任务和第四操作任务之间存在依赖,且第三操作任务和第四操作任务中的至少一个操作任务对应的信息流为主机信息流,则调用第二同步接口来进行第三操作任务和第四操作任务的同步。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开实施例还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序用于执行上述任一的任务调度方法。
本公开实施例还提供了一种任务调度装置,装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为:
调用所述存储器中存储的可执行指令,实现上述任意可能实现方式中的任务调度方法。如图24所示,图24是根据一示例性实施例示出的一种任务调度装置2400的一结构示意图。例如,装置2400可以被提供为一任务调度装置。参照图24,装置2400包括处理组件2422,其进一步包括一个或多个处理器,以及由存储器2432所代表的存储器资源,用于存储可由处理部件2422的执行的指令,例如应用程序。存储器2432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件2422被配置为执行指令,以执行上述任一的任务调度方法。
装置2400还可以包括一个电源组件2426被配置为执行装置2400的电源管理,一个有线或无线网络接口2450被配置为将装置2400连接到网络,和一个输入输出(I/O)接口2458。装置2400可以操作基于存储在存储器2432的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeB SDTM或类似。
本公开实施例还提供了一种计算机程序,所述计算机程序包括用于实现上述任意可能实现方式中的方法的指令。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或者惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。

Claims (10)

1.一种任务调度方法,其特征在于,所述方法包括:
根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间的依赖关系;
基于所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度。
2.根据权利要求1所述的方法,其特征在于,所述操作任务对应的操作数包括读操作数和/或写操作数。
3.根据权利要求1或2所述的方法,其特征在于,所述根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间的依赖关系,包括:
如果第二操作任务包含对第一操作任务的写操作数进行的读操作、或所述第二操作任务包含对所述第一操作任务的操作数进行的写操作,确定所述第二操作任务依赖于所述第一操作任务;
其中,所述第一操作任务和所述第二操作任务是所述操作任务队列中的不同操作任务。
4.根据权利要求3所述的方法,其特征在于,所述根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间的依赖关系,还包括:
如果所述第二操作任务包含对所述第一操作任务的读操作数进行的读操作,确定所述第一操作任务与所述第二操作任务之间不存在依赖。
5.一种任务调度装置,其特征在于,所述装置包括:
依赖关系确定模块,被配置为根据操作任务队列中多个操作任务所对应的操作数,确定所述多个操作任务之间的依赖关系;
调度模块,被配置为基于所述多个操作任务之间的依赖关系,对所述操作任务队列中的所述多个操作任务进行调度。
6.根据权利要求5所述的装置,其特征在于,所述操作任务对应的操作数包括读操作数和/或写操作数。
7.根据权利要求5或6所述的装置,其特征在于,所述依赖关系确定模块包括:
第一确定子模块,被配置为如果第二操作任务包含对第一操作任务的写操作数进行的读操作、或所述第二操作任务包含对所述第一操作任务的操作数进行的写操作,确定所述第二操作任务依赖于所述第一操作任务;
其中,所述第一操作任务和所述第二操作任务是所述操作任务队列中的不同操作任务。
8.根据权利要求7所述的装置,其特征在于,所述依赖关系确定模块还包括:
第二确定子模块,被配置为如果所述第一操作任务包含对所述第二操作任务的读操作数进行的读操作,确定所述第一操作任务与所述第二操作任务之间不存在依赖。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1至4中任一所述的任务调度方法。
10.一种任务调度装置,其特征在于,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器中存储的可执行指令,实现权利要求1至4中任一项所述的任务调度方法。
CN201910200097.3A 2019-03-15 2019-03-15 任务调度方法及装置、存储介质 Active CN111694675B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN201910200097.3A CN111694675B (zh) 2019-03-15 2019-03-15 任务调度方法及装置、存储介质
PCT/CN2019/124494 WO2020186836A1 (zh) 2019-03-15 2019-12-11 任务调度
JP2020561765A JP7050957B2 (ja) 2019-03-15 2019-12-11 タスクスケジューリング
SG11202010574PA SG11202010574PA (en) 2019-03-15 2019-12-11 Task scheduling
KR1020207030753A KR20200136468A (ko) 2019-03-15 2019-12-11 작업 스케줄링
TW108148049A TW202036306A (zh) 2019-03-15 2019-12-27 任務調度方法及裝置、存儲介質
US17/077,186 US11347546B2 (en) 2019-03-15 2020-10-22 Task scheduling method and device, and computer storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910200097.3A CN111694675B (zh) 2019-03-15 2019-03-15 任务调度方法及装置、存储介质

Publications (2)

Publication Number Publication Date
CN111694675A true CN111694675A (zh) 2020-09-22
CN111694675B CN111694675B (zh) 2022-03-08

Family

ID=72475505

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910200097.3A Active CN111694675B (zh) 2019-03-15 2019-03-15 任务调度方法及装置、存储介质

Country Status (7)

Country Link
US (1) US11347546B2 (zh)
JP (1) JP7050957B2 (zh)
KR (1) KR20200136468A (zh)
CN (1) CN111694675B (zh)
SG (1) SG11202010574PA (zh)
TW (1) TW202036306A (zh)
WO (1) WO2020186836A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612615A (zh) * 2020-12-28 2021-04-06 中孚安全技术有限公司 基于多线程内存分配和上下文调度的数据处理方法及系统

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114567520B (zh) * 2020-11-26 2023-06-02 华为技术有限公司 实现集合通信的方法、计算机设备和通信系统
CN112463334B (zh) * 2020-12-04 2023-08-18 苏州浪潮智能科技有限公司 一种训练任务排队原因分析方法、系统、设备以及介质
US20220269528A1 (en) * 2021-02-24 2022-08-25 Huawei Technologies Co., Ltd. System, method and apparatus for intelligent heterogeneous computation
CN113220480B (zh) * 2021-04-29 2023-03-10 西安易联趣网络科技有限责任公司 分布式的数据任务跨云调度系统及方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006228241A (ja) * 1998-08-24 2006-08-31 Advanced Micro Devices Inc プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
CN102129390A (zh) * 2011-03-10 2011-07-20 中国科学技术大学苏州研究院 片上多核计算平台的任务调度系统及进行任务并行化方法
CN102354289A (zh) * 2011-09-21 2012-02-15 苏州大学 一种并发事务的调度方法和相关装置
CN105637482A (zh) * 2014-09-15 2016-06-01 华为技术有限公司 基于gpu的数据流处理方法和装置
CN106227507A (zh) * 2016-07-11 2016-12-14 姚颂 计算系统及其控制器
CN106575246A (zh) * 2014-06-30 2017-04-19 亚马逊科技公司 机器学习服务
CN106648846A (zh) * 2016-09-23 2017-05-10 郑州云海信息技术有限公司 一种改进的异构多核任务调度的方法
US20170262319A1 (en) * 2016-03-11 2017-09-14 Chris Newburn Task mapping for heterogeneous platforms
CN107886167A (zh) * 2016-09-29 2018-04-06 北京中科寒武纪科技有限公司 神经网络运算装置及方法
US20180191706A1 (en) * 2016-12-29 2018-07-05 Yahoo Holdings, Inc. Controlling access to a shared resource
WO2018223330A1 (en) * 2017-06-08 2018-12-13 Alibaba Group Holding Limited Method and apparatus for distributed machine learning system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360309B (zh) * 2011-09-29 2013-12-18 中国科学技术大学苏州研究院 片上多核异构系统的调度系统与调度执行方法
US9280395B2 (en) 2012-05-30 2016-03-08 Intel Corporation Runtime dispatching among a heterogeneous group of processors
CN104156264B (zh) 2014-08-01 2017-10-10 西北工业大学 一种基于多gpu的基带信号处理任务并行实时调度方法
CN104965761B (zh) 2015-07-21 2018-11-02 华中科技大学 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法
CN107766144A (zh) * 2016-08-17 2018-03-06 中兴通讯股份有限公司 一种任务调度方法、装置及系统
CN108021563B (zh) * 2016-10-31 2021-09-07 华为技术有限公司 一种指令间数据依赖的检测方法和装置
WO2018198745A1 (ja) * 2017-04-27 2018-11-01 日本電気株式会社 計算資源管理装置、計算資源管理方法、及びコンピュータ読み取り可能な記録媒体

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006228241A (ja) * 1998-08-24 2006-08-31 Advanced Micro Devices Inc プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
CN102129390A (zh) * 2011-03-10 2011-07-20 中国科学技术大学苏州研究院 片上多核计算平台的任务调度系统及进行任务并行化方法
CN102354289A (zh) * 2011-09-21 2012-02-15 苏州大学 一种并发事务的调度方法和相关装置
CN106575246A (zh) * 2014-06-30 2017-04-19 亚马逊科技公司 机器学习服务
CN105637482A (zh) * 2014-09-15 2016-06-01 华为技术有限公司 基于gpu的数据流处理方法和装置
US20170262319A1 (en) * 2016-03-11 2017-09-14 Chris Newburn Task mapping for heterogeneous platforms
CN106227507A (zh) * 2016-07-11 2016-12-14 姚颂 计算系统及其控制器
CN106648846A (zh) * 2016-09-23 2017-05-10 郑州云海信息技术有限公司 一种改进的异构多核任务调度的方法
CN107886167A (zh) * 2016-09-29 2018-04-06 北京中科寒武纪科技有限公司 神经网络运算装置及方法
US20180191706A1 (en) * 2016-12-29 2018-07-05 Yahoo Holdings, Inc. Controlling access to a shared resource
WO2018223330A1 (en) * 2017-06-08 2018-12-13 Alibaba Group Holding Limited Method and apparatus for distributed machine learning system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612615A (zh) * 2020-12-28 2021-04-06 中孚安全技术有限公司 基于多线程内存分配和上下文调度的数据处理方法及系统
CN112612615B (zh) * 2020-12-28 2022-12-06 中孚安全技术有限公司 基于多线程内存分配和上下文调度的数据处理方法及系统

Also Published As

Publication number Publication date
US20210042155A1 (en) 2021-02-11
SG11202010574PA (en) 2020-11-27
KR20200136468A (ko) 2020-12-07
US11347546B2 (en) 2022-05-31
TW202036306A (zh) 2020-10-01
WO2020186836A1 (zh) 2020-09-24
JP7050957B2 (ja) 2022-04-08
JP2021520578A (ja) 2021-08-19
CN111694675B (zh) 2022-03-08

Similar Documents

Publication Publication Date Title
CN111694675B (zh) 任务调度方法及装置、存储介质
KR102228501B1 (ko) 컴파일러 방법
CN106802826B (zh) 一种基于线程池的业务处理方法及装置
US8566804B1 (en) Scheduling generated code based on target characteristics
US20170185452A1 (en) Apparatus and method for data processing
KR20190044565A (ko) 호스트 프로세서와의 동기화
US20170192761A1 (en) Dynamic data and compute resource elasticity
CN104094235B (zh) 多线程计算
KR20190044574A (ko) 멀티-타일 프로세싱 어레이의 동기화
WO2014110702A1 (zh) 协同并发式消息总线、主动构件组装模型及构件拆分方法
US20170192762A1 (en) Declarative programming model with a native programming language
CN101248405A (zh) 使用并发域的多线程化
CN111813522A (zh) 一种虚拟arinc 653仿真验证平台
CN114637536A (zh) 任务处理方法、计算协处理器、芯片及计算机设备
CN111258655A (zh) 融合计算方法及可读存储介质
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
CN114730273B (zh) 虚拟化设备和方法
CN113051049A (zh) 任务调度系统、方法、电子设备及可读存储介质
CN112860396A (zh) 一种基于分布式深度学习的gpu调度方法及系统
CN101976206B (zh) 一种中断处理方法和装置
CN101349975B (zh) 一种在嵌入式操作系统上实现中断底半部机制的方法及装置
CN102214094B (zh) 经由异步编程模型执行操作
CN116795503A (zh) 任务调度方法、任务调度装置、图形处理器及电子设备
CN113254143B (zh) 虚拟化网络功能网元编排调度方法、装置和系统
CN116830554A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40026875

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant