CN114490002A - 数据处理***、任务调度方法、装置、芯片、及电子设备 - Google Patents
数据处理***、任务调度方法、装置、芯片、及电子设备 Download PDFInfo
- Publication number
- CN114490002A CN114490002A CN202210147686.1A CN202210147686A CN114490002A CN 114490002 A CN114490002 A CN 114490002A CN 202210147686 A CN202210147686 A CN 202210147686A CN 114490002 A CN114490002 A CN 114490002A
- Authority
- CN
- China
- Prior art keywords
- task
- execution
- current
- memory access
- access
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 75
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000013528 artificial neural network Methods 0.000 claims abstract description 149
- 230000004044 response Effects 0.000 claims abstract description 76
- 238000004364 calculation method Methods 0.000 claims description 132
- 230000008569 process Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 12
- 230000001960 triggered effect Effects 0.000 claims description 7
- 238000013473 artificial intelligence Methods 0.000 description 11
- 238000003491 array Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 4
- 230000010365 information processing Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 208000010378 Pulmonary Embolism Diseases 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 239000004576 sand Substances 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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 load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开提供了一种任务处理***、任务调度方法、装置、芯片、电子设备及存储介质,其中,该方法包括:在多个调度周期中的每个调度周期执行:响应于触发当前调度周期,基于多个神经网络分别对应的访存任务,确定候选访存任务;基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,并调度所述目标计算任务。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种数据处理***、任务调度方法、装置、芯片、及电子设备。
背景技术
相关技术中,在深度学习领域,电子设备在运行深度学习模型时,部署在电子设备上的深度学习框架对深度学习模型进行解析,得到深度学习模型中的算子,并将算子发送至人工智能(Artificial Intelligence,AI)加速卡、图形处理器(Graphics ProcessingUnit,GPU)等执行设备,执行设备在接收到深度学习框架发送的算子后,负责算力的调度和算子执行。
AI计算云平台能够大规模部署执行设备;在接收到终端设备发起的推理任务时,能够将推理任务下发至各个执行设备进行执行,并向终端设备发送推理结果。当前的AI计算云平台在执行计算任务时,存在对执行设备的利用率低的问题。
发明内容
本公开实施例至少提供一种数据处理***、任务调度方法、装置、芯片、及电子设备、存储介质。
本公开实施例提供一种数据处理***,包括:
控制单元,用于向执行单元下发多个神经网络分别对应的任务执行信息;所述任务执行信息包括;至少一个待执行任务分别对应的执行周期;所述待执行任务包括:所述访存任务、以及与所述访存任务对应的计算任务;
算子执行单元,基于接收的任务执行信息,在多个调度周期中的每个当前调度周期执行:从多个神经网络分别对应的访存任务中,确定候选访存任务;基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,并调度所述目标计算任务。
一种可能的实施方式中,所述控制单元,在向执行单元下发多个神经网络分别对应的任务执行信息之前,还用于:
响应于接收多个任务处理请求,基于多个任务处理请求,确定与多个任务处理请求分别对应的神经网络;对各个神经网络进行解析,从各个神经网络中,确定被分配至所述执行单元进行处理的目标网络层对应的算子;基于所述算子,生成所述任务执行信息。
一种可能的实施方式中,所述算子执行单元包括:调度器以及多个运算单元;
所述调度器,用于响应于接收到所述任务执行信息,基于所述任务执行信息,在多个调度周期中的每个调度周期执行:响应于触发当前调度周期,基于多个神经网络分别对应的访存任务,确定候选访存任务;基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,并调度所述目标计算任务;
所述运算单元,用于执行被调度的所述目标访存任务、以及被调度的所述目标计算任务。
一种可能的实施方式中,所述算子执行单元,在多个调度周期之前,还用于:
获取多个神经网络中每个神经网络中目标网络层对应的任务执行信息;所述任务执行信息包括:待执行任务的任务数量、以及与每个待执行任务对应的执行周期;所述待执行任务包括:所述访存任务、以及与所述访存任务对应的计算任务;所述执行周期包括:执行所述访存任务的所述第一执行周期、以及执行所述计算任务的所述第二执行周期。
一种可能的实施方式中,响应于当前调度周期为首个调度周期,采用如下方式触发当前调度周期:
在无负载状态下接收到多个所述神经网络中任一神经网络对应的待执行任务;
响应于所述当前调度周期为非首个调度周期,采用如下方式触发当前调度周期:
所述当前调度周期对应的前一调度周期确定的目标访存任务执行完毕和/或,历史调度周期确定的目标计算任务执行完毕。
一种可能的实施方式中,所述算子执行单元,在基于多个神经网络分别对应的访存任务,确定候选访存任务时,用于:
针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务。
一种可能的实施方式中,所述算子执行单元,在响应于当前调度周期为首个调度周期,所述针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务时,用于:
从前一调度周期确定的目标访存任务所属的第一神经网络对应的当前未调度访存任务中,确定所述第一神经网络在当前调度周期的候选访存任务;
以及将前一调度周期除目标访存任务外的其他候选访存任务,确定为除所述第一神经网络外的其他神经网络在当前调度周期的候选访存任务。
一种可能的实施方式中,所述候选访存任务有多个;
所述算子执行单元,在基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可调度计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务时,用于:
从多个所述候选访存任务中,确定当前候选访存任务;
基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可调度计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件;
响应于确定所述当前候选访存任务满足所述预设条件,将所述当前候选访存任务确定为所述目标访存任务;
响应于确定所述当前候选访存任务未满足所述预设条件,返回至从多个所述候选访存任务中,确定当前候选访存任务的步骤。
一种可能的实施方式中,所述算子执行单元,在基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可执行计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件时,用于:
确定存储与所述访存任务对应的待访存数据的存储空间,是否满足所述当前候选访存任务对应的待访存数据的存储条件;
响应于满足所述当前候选访存任务对应的待访存数据的存储条件,确定当前可执行计算任务的第一执行周期总数是否小于预设的执行周期数阈值;
响应于所述第一执行周期总数小于所述执行周期数阈值,将所述候选访存任务对应的第一执行周期数和所述候选访存任务对应的计算任务的第二执行周期数进行比对;
响应于所述候选访存任务对应的第一执行周期数小于所述候选访存任务对应的计算任务的第二执行周期数,确定所述当前候选访存任务满足所述预设条件。
一种可能的实施方式中,所述算子执行单元,在基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可调度计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件时,还用于:
响应于所述第一执行周期总数大于或者等于所述执行周期数阈值,确定所述当前候选访存任务满足所述预设条件。
一种可能的实施方式中,所述算子执行单元,还用于:
响应于从多个所述候选访存任务中确定所述目标访存任务失败,基于所述当前可执行计算任务的第二执行周期数、以及所述当前可执行计算任务对应的访存任务的第一执行周期数,从所述当前可执行计算任务中,确定优先执行的第一计算任务;
响应于结束当前正在执行的计算任务,执行所述第一计算任务。
一种可能的实施方式中,所述算子执行单元,在结束当前正在执行的计算任务时,用于包括:
将所述当前正在执行的计算任务执行完毕;
或者,释放所述当前正在执行的计算任务。
一种可能的实施方式中,所述算子执行单元,在将当前正在执行的计算任务释放时,用于:
基于当前正在执行的计算任务对应的第二执行周期数、以及所述当前正在执行的计算任务对应的访存任务的第一执行周期数,确定是否将所述当前正在执行的计算任务释放;
响应于确定将所述当前正在执行的计算任务释放,释放所述当前正在执行的计算任务。
一种可能的实施方式中,所述算子执行单元,在释放所述当前正在执行的计算任务之前,还用于:
记录所述当前正在执行任务的执行进度信息;
所述执行进度信息用于在重新调度所述当前正在执行的计算任务时,基于所述执行进度信息,继续执行所述当前正在执行的计算任务。
一种可能的实施方式中,所述当前可调度计算任务包括至少一个;所述算子执行单元,在基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务时,用于:
基于当前调度周期确定的目标访存任务的第一执行周期数、以及当前第一参数,确定当前调度周期的目标第一参数;其中,所述当前第一参数是基于历史目标访存任务的第一执行周期数确定的;
迭代执行下述确定过程,直至当前第二参数大于或者等于所述目标第一参数:
所述至少一个当前可调度计算任务中,确定当前计算任务;
将所述目标第一参数和当前第二参数进行比对;其中,所述当前第二参数,是基于历史目标计算任务的第二执行周期确定的;
响应于所述当前第二参数,小于所述目标第一参数,将所述当前计算任务确定为目标计算任务;以及
基于所述当前计算任务对应的第二执行周期,更新所述第二参数,得到新的第二参数;
并将所述新的第二参数作为新的当前第二参数,返回至将所述目标第一参数和当前第二参数进行比对的步骤。
第二方面,本公开实施例提供了一种任务调度方法,包括:在多个调度周期中的每个调度周期执行:响应于触发当前调度周期,基于多个神经网络分别对应的访存任务,确定候选访存任务;基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,并调度所述目标计算任务。
一种可能的实施方式中,所述多个调度周期之前,所述方法还包括:获取多个神经网络中每个神经网络中目标网络层对应的任务执行信息;所述任务执行信息包括:待执行任务的任务数量、以及与每个待执行任务对应的执行周期;所述待执行任务包括:所述访存任务、以及与所述访存任务对应的计算任务;所述执行周期包括:执行所述访存任务的所述第一执行周期、以及执行所述计算任务的所述第二执行周期。
一种可能的实施方式中,响应于当前调度周期为首个调度周期,所述触发当前调度周期,包括:在无负载状态下接收到多个所述神经网络中任一神经网络对应的待执行任务;响应于所述当前调度周期为非首个调度周期,所述触发当前调度周期,包括:所述当前调度周期对应的前一调度周期确定的目标访存任务执行完毕和/或,历史调度周期确定的目标计算任务执行完毕。
一种可能的实施方式中,所述基于多个神经网络分别对应的访存任务,确定候选访存任务,包括:针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务。
一种可能的实施方式中,响应于当前调度周期为首个调度周期,所述针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务,包括:从前一调度周期确定的目标访存任务所属的第一神经网络对应的当前未调度访存任务中,确定所述第一神经网络在当前调度周期的候选访存任务;以及将前一调度周期除目标访存任务外的其他候选访存任务,确定为除所述第一神经网络外的其他神经网络在当前调度周期的候选访存任务。
一种可能的实施方式中,所述候选访存任务有多个;所述基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可调度计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,包括:从多个所述候选访存任务中,确定当前候选访存任务;基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可调度计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件;响应于确定所述当前候选访存任务满足所述预设条件,将所述当前候选访存任务确定为所述目标访存任务;响应于确定所述当前候选访存任务未满足所述预设条件,返回至从多个所述候选访存任务中,确定当前候选访存任务的步骤。
一种可能的实施方式中,所述基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可执行计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件,包括:确定存储与所述访存任务对应的待访存数据的存储空间,是否满足所述当前候选访存任务对应的待访存数据的存储条件;响应于满足所述当前候选访存任务对应的待访存数据的存储条件,确定当前可执行计算任务的第一执行周期总数是否小于预设的执行周期数阈值;响应于所述第一执行周期总数小于所述执行周期数阈值,将所述候选访存任务对应的第一执行周期数和所述候选访存任务对应的计算任务的第二执行周期数进行比对;响应于所述候选访存任务对应的第一执行周期数小于所述候选访存任务对应的计算任务的第二执行周期数,确定所述当前候选访存任务满足所述预设条件。
一种可能的实施方式中,所述基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可调度计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件,还包括:响应于所述第一执行周期总数大于或者等于所述执行周期数阈值,确定所述当前候选访存任务满足所述预设条件。
一种可能的实施方式中,所述方法还包括:响应于从多个所述候选访存任务中确定所述目标访存任务失败,基于所述当前可执行计算任务的第二执行周期数、以及所述当前可执行计算任务对应的访存任务的第一执行周期数,从所述当前可执行计算任务中,确定优先执行的第一计算任务;响应于结束当前正在执行的计算任务,执行所述第一计算任务。
一种可能的实施方式中,所述结束当前正在执行的计算任务包括:将所述当前正在执行的计算任务执行完毕;或者,释放所述当前正在执行的计算任务。
一种可能的实施方式中,所述将当前正在执行的计算任务释放,包括:基于当前正在执行的计算任务对应的第二执行周期数、以及所述当前正在执行的计算任务对应的访存任务的第一执行周期数,确定是否将所述当前正在执行的计算任务释放;响应于确定将所述当前正在执行的计算任务释放,释放所述当前正在执行的计算任务。
一种可能的实施方式中,所述释放所述当前正在执行的计算任务,还包括:记录所述当前正在执行任务的执行进度信息;所述执行进度信息用于在重新调度所述当前正在执行的计算任务时,基于所述执行进度信息,继续执行所述当前正在执行的计算任务。
一种可能的实施方式中,所述当前可调度计算任务包括至少一个;所述基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,包括:基于当前调度周期确定的目标访存任务的第一执行周期数、以及当前第一参数,确定当前调度周期的目标第一参数;其中,所述当前第一参数是基于历史目标访存任务的第一执行周期数确定的;迭代执行下述确定过程,直至当前第二参数大于或者等于所述目标第一参数:所述至少一个当前可调度计算任务中,确定当前计算任务;将所述目标第一参数和当前第二参数进行比对;其中,所述当前第二参数,是基于历史目标计算任务的第二执行周期确定的;响应于所述当前第二参数,小于所述目标第一参数,将所述当前计算任务确定为目标计算任务;以及基于所述当前计算任务对应的第二执行周期,更新所述第二参数,得到新的第二参数;并将所述新的第二参数作为新的当前第二参数,返回至将所述目标第一参数和当前第二参数进行比对的步骤。
第三方面,本公开可选实现方式还提供一种算子执行装置,包括:
调度器,用于响应于接收到任务执行信息,基于所述任务执行信息,在多个调度周期中的每个调度周期执行:响应于触发当前调度周期,基于多个神经网络分别对应的访存任务,确定候选访存任务;基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,并调度所述目标计算任务;
运算单元,用于执行被调度的所述目标访存任务、以及被调度的所述目标计算任务。
第四方面,本公开可选实现方式还提供一种芯片,包括如第一方面所述的任务处理***、或者如第三方面所述的任务调度装置。
第五方面,本公开可选实现方式还提供一种电子设备,包括如上述第四方面所述的芯片。
第六方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
本公开实施例提供的通过访存任务进行数据预取、以及利用预取的待访存数据执行对应计算任务之间的执行周期的均衡控制,从而实现计算任务和内存访存任务之间的负载均衡,提升硬件资源的利用率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种数据处理***的具体示例的示意图;
图2示出了本公开实施例所提供的一种任务调度方法的流程图;
图3示出了本公开实施例所提供的从候选访存任务中确定目标访存任务的具体方式的流程图;
图4示出了本公开实施例所提供的不同调度方式下,计算任务和访存任务具体执行情况的示例;
图5示出了本公开实施例所提供的任务调度装置的具体示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,低成本的多租户神经网络执行正成为现代神经网络加速器最重要的设计目标之一。AI计算云平台是提供多租户神经网络的一种云平台;其提供的人工智能服务包含许多异构神经网络的执行;不同神经网络的数据处理任务被下发至同一神经网络加速器;同一神经网络加速器采用先进先出、或时间片轮询的方式,对不同神经网络下发的数据处理任务进行处理。但上述处理方式中,不同神经网络的计算和内存访存任务之间的负载失衡,造成了用于计算的硬件电路和访存带宽存在很多空余时间,造成在运行多个神经网络时可能会出现严重的硬件资源利用率不足问题。
基于上述研究,本公开提供了一种任务调度方法,通过访存任务预取待访存数据,并合并执行计算任务的方式,以实现计算任务和内存访存任务之间的负载均衡,提升硬件资源的利用率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据处理***进行详细介绍,本公开实施例所提供的数据处理***,可以部署在服务器中,能够接收多个用户分别发送的数据处理请求,并并行执行多个用户分别发送的执行数据处理请求。也可以部署在用户的终端设备中,接收用户发送的多个数据处理请求,并并行执行用户发送的多个数据处理请求。终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该任务处理设备中具有可以执行本公开实施例提供的任务调度方法的硬件结构,该硬件结构可以通过处理器调用存储器中存储的计算机可读指令的方式来实现任务调度方法。
参见图1所示,本公开实施例提供一种数据处理***的具体示例。包括控制单元10、以算子执行单元20。
在算子执行单元20中,包括:调度器21、以及多个运算单元22。
其中,控制单元,用于响应于接收多个任务处理请求,基于多个任务处理请求,确定与多个任务处理请求分别对应的神经网络。对各个神经网络进行解析,从各个神经网络中,确定能够被分配至同一人工智能芯片进行处理的目标网络层。然后,将这些目标网络层对应的数据处理任务的任务执行信息下发至运算单元22。
控制单元例如包括:计算机设备、虚拟机、计算机设备中的中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)中任一种。
这里需要注意的是,多个算子可以是在同一时段被下发至同一人工智能芯片的(此处,同一时段对应的时长较短,可以认为是同时下发给同一人工处理芯片);另外,由于接收任务处理请求的时间不同,且各个人工智能芯片在同一时刻的负载也有所区别,因此也可以在不同时段被下发至同一人工智能芯片。
在本公开实施例中,多个目标网络层对应的算子,例如包括:计算密集型任务、以及内存密集型任务。
其中,计算密集型任务,是指计算任务所耗费的执行周期数,大于对应访存任务所耗费的执行周期数;内存密集型任务,是指计算任务所耗费的执行周期数,小于对应访存任务所耗费的执行周期数。
这样,可以在调度时,更易于实现访存和计算的均衡,提升对硬件资源的利用率。
在本公开实施例中,神经网络的每个网络层对应一算子,网络层不同,算子的类型也不同;例如,卷积层对应卷积算子;全连接层对应全连接算子。
另外,控制单元还可以将算子拆分为多个数据处理任务。在向调度器下发算子时,可以向调度器下发将算子拆分为多个数据处理任务后,确定的任务执行信息。
该任务执行信息包括:与算子对应的待执行任务的任务数量、以及与每个待执行任务对应的执行周期;所述待执行任务包括:所述访存任务、以及与所述访存任务对应的计算任务。
其中,访存任务,用于从内存中读取在执行对应计算任务所需要的数据,并将读取到的数据存入至人工智能芯片中用于存放该数据的缓存中。
该数据可以为算子内参,例如卷积算子的卷积核、或者全连接算子的全连接权重;该数据还可以是待处理数据,例如输入至卷积算子或者全连接算子的特征图。在本公开实施例中,执行对应计算任务所需要的数据称:待访存数据。
计算任务,例如用于利用访存任务从内存中读取的待访存数据,执行与算子对应的计算任务。例如:算子为卷积算子,则计算任务为卷积处理;若算子为全连接算子,则计算任务为全连接处理。
待执行任务对应的执行周期包括:执行所述访存任务的所述第一执行周期、以及执行所述计算任务的所述第二执行周期。
算子执行单元20,例如包括:人工智能(Artificial Intelligence,AI)芯片、图形处理器(Graphics Processing Unit,GPU)等。
调度器21,用于响应于接收到控制单元下发的多个神经网络分对应的算子,基于本公开实施例提供的任务调度方法对待执行任务进行调度。在调度待执行任务时,例如可以将确定要调度的待执行任务存储至对应的任务队列中。
运算单元22,获取调度的待执行任务,并执行获取到的待执行任务。
每个运算单元一般由处理引擎(Processing Engine,PE)阵列和寄存器阵列(local register file)构成,在每个PE中,包括了乘加器等计算元件,用于执行具体的计算任务。每个运算单元,能够同时对多个数据元素进行同步处理,例如某个运算单元的中的PE阵列中包括n*n个PE(PE成n*n的阵列排布,n*n个PE能够同步对n*n个数据元素进行同步处理;也即,该运算单元最多能够对n*n个数据元素进行同步处理。对每个数据元素进行处理的任务,称为一个子任务,由一个运算单元中的n*n个PE同步完成的n*n个子任务构成一个计算任务。
示例性的,在将特征图作为运算单元的输入数据元素时,一个数据元素是指特征图中的一个特征元素。
执行该计算任务所需要读取的n*n个数据元素的任务,构成与该计算任务对应的访存任务。
算子对应的计算任务的数量,和运算单元的配置相关;其中,假设算子对应的待处理数据中数据元素的数量包括H个,每个运算单元中PE阵列中PE的数量为S个,则算子对应的计算任务的数量为:对H/(n*n)向上取整得到的整数。例如,待处理数据为图像数据,该图像数据的尺寸为w*h*c,其中,w表示图像宽度,h表示图像高度,c表示图像的通道数,则对应的待处理数据中数据元素的数量H满足:H=w*h*c。
控制单元,例如可以基于算子的类型、待处理数据的尺寸、算子内参的尺寸、以及运算单元的尺寸,将算子拆分为多个待执行任务。
在将一个算子拆分为多个待执行任务时:假设有M个PE阵列,也即M个运算单元。每个PE阵列中具有n*n个PE。待处理数据为输入特征图,对待处理数据进行与算子对应的处理后,得到的结果数据为输出特征图;
输入特征图的尺寸为:ih*iw*ic,其中,ih、iw、ic分别表示输入特征图的高度、宽度、以及通道数。输出特征图的尺寸为:oh*ow*oc,oh、ow、oc分别表示输出特征图的高度、宽度以及通道数。
(1):若算子的类型为卷积算子,对应的网络层为卷积层,算子内参为卷积核,且卷积核的尺寸为:Nk*k*k*ic:其中,Nk表示卷积核的数量,且Nk=oc,k表示卷积核长度和宽度,ic表示卷积核的通道数。在将算子进行拆分时,是按照卷积核将特征图进行拆分,得到多个特征子图,不同的特征子图具有相同的卷积核,不同的PE阵列采用相同的卷积核分别对不同的特征子图进行卷积处理。按照对应特征子图在特征图中的位置,将各个PE阵列得到的卷积结果进行拼接后,得到对特征图的卷积处理结果。因此在算子进行拆分时,可以基于卷积核的尺寸、以及PE阵列的尺寸,确定计算任务的数量。
每个计算任务需要有n个权值进行计算。针对同一个计算任务,多个PE阵列具有相同的权重元素。但不同PE阵列的输入特征图不同。
(2):若算子类型为全连接,对应的网络层为全连接层,算子内参为全连接权重,且全连接层的权重的尺寸为:Ns*ih*iw*ic。其中,Ns表示全连接权重的数量,其和输出特征图中的特征元素的数量相关,ih、iw、ic分别表示全连接权重的高度、宽度以及通道数。对于全连接层,需要利用权重对具有相同尺寸的输入特征图中的特征进行加权求和处理,得到输出特征图中的一个特征元素。在全连接处理过程中,由于要采用Ns组全连接权重,对相同的特征图进行Ns次全连接处理,最终得到的输出特征图中,存在Ns个特征数据,因此,针对输出特征图中的不同特征元素,对应的输入特征图不变,而全连接权重发生变化。因此,可以基于全连接权重进行全连接算子的拆分,也即,将不同的全连接算子给与不同的PE阵列,使得这些PE阵列能够利用不同的全连接算子,对相同的输入特征图进行全连接处理;将各个PE阵列分别得到的结果拼接在一起,即可以得到用Ns个全连接权重对同一输入特征图进行全连接处理的输出特征图。
且针对同一个计算任务,多个PE阵列具有不同的全连接权重,但不同PE阵列的输入特征图相同。
控制单元还可以基于所述计算任务在执行时需要占用的内存、以及所述运算单元的算力信息,估算访存任务的所述第一执行周期、以及计算任务的第二执行周期。
在具体实施中,运算单元的算力信息,例如包括运算单元每秒所执行运算次数(operations per second,ops);其中,例如可以采用下述方式确定各个运算单元的算力信息:确定运算单元中包括的PE的数量,其中,一个PE每秒能够执行f次运算,其表征一个PE的算力信息;根据运算单元中包括的PE的数量、以及每个PE的算力信息,确定运算单元的算力信息,也即一个运算单元的总ops数,其中,运算单元的算力信息满足:(n*n)*M*f。其中,n*n表示一个运算单元中PE的数量,M表示算子执行单元中包括的运算单元的数量。
在基于计算任务在执行时需要占用的内存、以及所述运算单元的算力信息,估算执行所述计算任务所需要的执行时长时,例如可以基于所述算子在执行时所需要占用的内存、以及所述运算单元对所述内存的访存带宽,确定访存任务对应的第一执行周期;以及基于所述计算任务中的每个子任务中的各计算步骤所需要的算力信息,以及所述每个运算单元的算力信息,确定计算任务的第二执行周期。
其中,计算任务在执行时所需要访问的内存,能够表征计算任务在执行时所要处理的数据量;由于算子的类型已知,进而在执行算子时的各个子任务的计算步骤是可以确定的,因此可以根据PE在执行一种计算步骤时所需要的ops确定执行一个子任务所需要的ops。例如,PE为乘加器,其能够用于执行乘加操作,每次乘加操作,需要2个ops;各个子任务的计算步骤已知,也即需要的计算任务的具体计算步骤已知,进而能够根据各个计算步骤分别对应操作所需要的ops,确定每个计算步骤需要消耗的ops;然后根据子任务的具体计算步骤,确定一个子任务的计算时长;一个计算任务包括通过多个PE并行执行的多个子任务,例如,一个计算任务包括:利用4*4的PE阵列,同步对4*4个特征元素进行卷积处理,因此,每个子任务的计算时长,也即计算任务的计算时长,也即第二执行周期。
根据一个计算任务对应的访存任务所需要访问内存的数据量、以及访问带宽,确定计算任务的访存时长。
基于计算时长、以及访存时长,确定执行一个计算任务所需要的执行时长。
示例性的,算子例如为矩阵乘算子,每个计算任务中的矩阵乘任务满足:CMN=AMK*BKN,其中,M和K分别表示操作数A的尺寸;K和N分别表示操作数B的尺寸;每个数据需要占用b个比特数,则算子在执行时所需要访问内存的数据量(访存数据量)为(M*K+K*N+M*N)*b/8字节。其中,M*K表示需要从内存中读取的操作数A的数据量;K*N表示需要从内存中读取的操作数B的数据量;M*N表示要将计算结果存入内存中的数据量。算子执行单元中用于执行算子的每个运算单元中乘加器(也即PE)的数量为M*K*N。
则执行该算子的一个计算任务时需要的计算时长为:f*M*K*N÷运算单元的总OPS数。
运算单元在执行算子的一个计算任务所需要的访存时长,也即第一执行周期为:访存数据量÷访存带宽,也即:((M*K+K*N+M*N)*b/8)÷访存带宽。
控制单元将算子拆分为多个待执行任务后,可以生成与算子对应的调度表,在该调度表中,保存有任务执行信息,并将该调度表下发给调度器。
调度器,可以基于该调度表,执行任务调度过程。
参见图2所示,本公开实施例提供一种调度器执行任务调度的具体方法的流程图,在多个调度周期中的每个调度周期执行步骤S201~S203,其中:
S201:响应于触发当前调度周期,基于多个神经网络分别对应的访存任务,确定候选访存任务;
S202:基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可调度计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;
S203:基于当前已调度的目标访存任务的第二执行周期总数、以及当前可调度计算任务的第一执行周期总数,从当前调度周期对应的候选计算任务中,确定目标计算任务,并调度所述目标计算任务。
下面针对上述S201~S203分别加以详细说明。
针对S201,调度周期,是指对访存任务、以及计算任务进行调度的一个周期。对访存任务的调度,例如是在结束前一访存任务后,确定一新的需要执行的访存任务(此时,能存在正在等待执行的访存任务,也可能未存在正在执行的访存任务)。对计算任务的调度,例如是在确定了要调度某个访存任务后,对当前能够调度的至少一个计算任务进行调度,使其能够被执行。此处,存在当前可执行计算任务、以及当前可调度计算任务;其中,当前可调度算任务是指:还未被调度的、但对应的访存任务已经被执行完成的计算任务;当前可执行计算任务,是指从当前可调度计算任务中,确定目标计算任务,在该目标计算任务确定后,对其进行调度,将其存入计算任务的执行队列中,等待某运算单元将当前正在执行的计算任务执行完毕后,从执行队列中获取新的可执行计算任务。
这样,保证在当前的计算任务执行完毕后,有另一计算任务对应的访存任务已经执行完毕,运算单元无需等待,可以直接利用已经执行完毕的访存任务从内存中获取的待访存数据执行计算任务。从而实现了通过调度访存任务进行待访存数据的预取,并利用运算单元连续执行多个已被调度的计算任务,达到尽量减小访存的带宽资源、以及计算单元的计算资源处于空余状态的目的,从而提升算子执行单元中硬件资源的利用率。
在具体实施中,针对多个调度周期:
A:响应于当前调度周期为首个调度周期,触发当前调度周期,包括:
在无负载状态下接收到多个所述神经网络中任一神经网络对应的待执行任务。
其中,无负载状态,是指算子执行单元20当前并未负载任何的待执行任务。该无负载状态,例如可以在下述情况中任一情况中出现:数据处理***启动后、且未分配任何待执行任务;已经分配的待执行任务均已处理完毕、且未分配新的待执行任务。
在上述情况下,算子执行单元20均可能处于无负载状态。
若调度器21在算子执行单元20处于无负载状态下,若接收到任一神经网络对应的待执行任务,即触发首个调度周期。
B:响应于当前调度周期为非首个调度周期,触发当前调度周期,包括:
所述当前调度周期对应的前一调度周期确定的目标访存任务执行完毕和/或,历史调度周期确定的目标计算任务执行完毕。
其中,若当前调度周期对应的前一调度周期确定的目标访存任务被执行完毕,则可以进行下一访存任务的执行,在该种情况下,可以触发当前调度周期,从而实现待访存数据的连续预取,提升算子执行单元20对于访问带宽的利用率。
若历史调度周期确定的目标计算任务被执行完毕,该被执行完毕的目标计算任务对应的待访存数据会从寄存器中被释放,从而寄存器中存在能够存放新的待访存数据的存储空间,此时,可以触发当前调度周期,从而可以充分利用用于存放待访存数据的存储空间,保证待访存数据被预取的效率及时程度,减少由于待访存数据预取不及时导致的PE阵列的等待情况,提升算子执行单元20的硬件利用率。
在触发了当前调度周期后,可以基于多个神经网络分别对应的访存任务,确定当前调度周期对应的候选访存任务。
在具体实施中,可以针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务。示例性的,若神经网络有4个,则当前调度周期确定的候选访存任务也有4个,分别来源于4个神经网网络。
其中,响应于当前调度周期为首个调度周期,可以针对每个神经网络,将该神经网络对应的目标网络层中,将第1个执行的计算任务所需要待访存数据的访存任务,确定为该神经网络对应的候选访存任务。
响应于当前调度周期为非首个调度周期,可以针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务。
例如,假如对某个神经网络的目标网络层有v个访存任务、以及与v个访存任务一一对应的计算任务。v个访存任务分别为U1~Uv。针对U1~Uv个访存任务,可以依次将U1~Uv作为候选访存任务。在第1个调度周期,将U1作为该神经网络对应的候选访存任务。若在该调度周期,将U1确定为要调度的目标访存任务,则在第二个调度周期,U2~Uv即为当前未调度访存任务,因此在第2个调度周期,将U2确定为候选访存任务。
此处,控制单元可以向调度器下发调度表。在该调度表中,在保存待执行任务的任务数量、以及与每个待执行任务对应的执行周期的同时,还可以保存当前未调度的访存任务中,下一个要作为候选访存任务的访存任务对应的标识、以及该下一个要作为候选访存任务的访存任务对应待访存数据在内存中的地址信息。假设某一算子对应的全部n个访存任务的标识分别为:1~n,则针对首个调度周期,当前未调度的访存任务,为对应算子的所有访存任务,则当前未调度的访存任务中的下一个要作为候选访存任务的访存任务,为标识为1的访存任务。若当前未调度的访存任务为对应算子的部分访存任务,且前一被调度的访存任务的标识为j,则当前未调度的访存任务中的下一个要作为候选访存任务的访存任务,为标识为j+1的访存任务。
调度器根据该调度表,可以确定当前调度周期的候选访存任务。
另外,在响应于当前调度周期为首个调度周期,所述针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务时,例如可以从前一调度周期确定的目标访存任务所属的第一神经网络对应的当前未调度访存任务中,确定所述第一神经网络在当前调度周期的候选访存任务;
以及将前一调度周期除目标访存任务外的其他候选访存任务,确定为除所述第一神经网络外的其他神经网络在当前调度周期的候选访存任务。
示例性的,可以针对候选访存任务确定以候选访存任务队列。该候选访存任务队列中存储了当前调度周期确定的所有候选访存任务。这些访存任务可以按照候选访存任务进入队列的先后顺序排布。在候选访存任务队列为空时,例如第1个调度周期还未开始的情况下,在第1个调度周期,可以按照多个神经网络对应的任务接收顺序,依次从神经网络对应的访存任务中确定第1个调度周期所需要的候选访存任务,并放入候选访存任务队列中。在非第1个调度周期,若在上一调度周期将候选访存任务队列中的某个访存任务确定为目标访存任务,则要将该目标访存任务从候选访存任务队列中删除,并在当前调度周期确定一个新的候选访存任务放入候选访存任务队列的队尾。
另外,也可以为可调度计算任务生成一候选计算任务队列。将当前的可调度计算任务存储至候选计算任务队列中。在需要从可调度计算任务中确定目标计算任务时,可以按照可调度计算任务在候选计算任务队列中的顺序,依次确定可调度计算任务是否可以作为目标计算任务。每一调度周期内,确定的目标计算任务可以是0个、1个或者多个。
可调度计算任务在候选计算任务队列中的位置,可以基于各可调度计算任务对应的访存任务被调度的顺序来确定。例如,对应访存任务被调度的越早,则对可调度计算任务在候选计算任务队列中的排序越靠前,也就越有更大的可能性被确定为目标计算任务。。
若在当前调度周期中,确定了某一候选访存任务为目标访存任务,在将该目标访存任务进行调度后,可以将该目标访存任务从候选访存任务队列中删除。另外,可以从目标访存任务对应的神经网络L的调度表中,按照上述方式新确定一访存任务,将该新确定的访存任务作为下一调度周期,与该神经网络L对应的候选访存任务,并存入候选访存任务队列。同时,候选访存任务队列中保留的其他候选访存任务,即为其他神经网络分别对应的候选访存任务。
另外,在当前调度周期确定了目标访存任务,并对目标访存任务进行调度后,还可以更新目标访存任务对应的调度表中,记录的下一个要作为候选访存任务的访存任务的标识、以及该下一个要作为候选访存任务的访存任务对应待访存数据在内存中的地址信息。
这里,在不同的调度周期,随着算子执行单元20中被分配的待执行任务所属的神经网络的增加、或减少,调度周期所确定的候选访存任务也会增加或者减少。
例如,若针对第i个调度周期,算子执行单元20中被分配的待执行任务所属的神经网络有4个,则第i个调度周期确定的候选访存任务也有4个;若在第i+1个调度周期,算子执行单元20被分配了新的一个神经网络对应的待执行任务,则第i+1个调度周期确定的候选访存任务有5个。若在i+2个调度周期,算子执行单元20中某个神经网络对应的待执行任务在第i+1个调度周期中被全部执行完,则第i+2个调度周期确定的候选访存任务有4个。
在确定了当前调度周期对应的候选访存任务后,即可从候选访存任务中,确定目标访存任务。
针对上述S202:参见图3所示,本公开实施例还提供一种从候选访存任务中确定目标访存任务的具体示例,包括:
S301:从多个所述候选访存任务中,确定当前候选访存任务;
S302:基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可调度计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件;
S303:响应于确定所述当前候选访存任务满足所述预设条件,将所述当前候选访存任务确定为所述目标访存任务;
S304:响应于确定所述当前候选访存任务未满足所述预设条件,返回至从多个所述候选访存任务中,确定当前候选访存任务的步骤。
在具体实施中,并非是所有的候选访存任务,均可以作为目标访存任务。
因此,在上述301中,可以基于各个候选访存任务在候选访存任务队列中的位置,确定当前候选访存任务,然后,判断该当前候选访存任务是否满足预设条件。若满足,则将该当前候选访存任务确定为目标访存任务;若不满足,则重新确定一个当前候选访存任务是否满足预设条件。直至从中确定出目标访存任务,或者确定出当前所有候选访存任务均不满足预设条件为止。
在确定当前候选访存任务是否满足预设条件时,例如可以采用下述方式:
步骤3021:确定存储与所述访存任务对应的待访存数据的存储空间,是否满足所述当前候选访存任务对应的待访存数据的存储条件。
此处,存储空间例如包括:算子执行单元中用于存储待访存数据的寄存器;若寄存器中空余空间的大小,能够容纳当前候选访存任务对应的待访存数据,则表示当前候选访存任务满足存储条件。若否,则表示当前候选访存任务不满足存储条件。
其中,在确定存储条件时,可以确定当前候选访存任务对应的待访存数据的第一数据量、以及确定存储与所述访存任务对应的待访存数据的存储空间的当前空余空间,并将第一数据量和当前空余空间进行比对;若第一数据量小于或者等于当前空余空间,则表示满足存储条件。若第一数据量大于当前空余空间,则表示不满足存储条件。
在本公开另一实施例中,还可以在各个调度周期记录在当前调度周期,要填充剩余寄存器容量所需要的执行周期数RM_C。在需要确定某个候选访存任务是否满足存储条件时,可以将该候选访存任务对应的第一执行周期数、和该RM_C进行比对;若第一执行周期数小于或者等于RM_C,则表示满足存储条件;若第一执行周期数大于RM_C,则表示不满足存储条件。
采用该种方案,只需要每个调度周期确定了目标访存任务后,基于该目标访存任务对应的第一执行周期数,对该调度周期的RM_C进行更新即可。RM_C随着目标访存任务的确定而减少。其中,减小的值,与确定为目标访存任务对应的第一执行周期数相同。
另外,在执行完某个计算任务后,由于会从寄存器释放与该执行完的计算任务对应的待访存数据,此时,寄存器的剩余容量会增加,因此,也会响应增大填充剩余寄存器容量所需要的执行周期数RM_C。其中,RM_C增大的值,与释放的待访存数据对应的访存任务的第一执行周期数相同。
步骤3022:响应于满足所述当前候选访存任务对应的待访存数据的存储条件,确定当前可执行计算任务的第一执行周期总数是否小于预设的执行周期数阈值。
此处,在确定执行周期数阈值时,可以在多个迭代周期中执行下述过程:在第一个迭代周期中,设置一原始执行周期数阈值,并基于该原始执行周期数阈值,利用数据处理***执行多个神经网络的推理任务,确定推理任务在第1个迭代周期的执行时长;在除第1个迭代周期外的第i个迭代周期中,对第前一个迭代周期确定的执行周期数阈值进行调整,得到当前迭代周期对应的新的执行周期数阈值,然后,基于该当前迭代周期的新的执行周期数阈值,利用数据处理***执行多个神经网络的推理任务,确定推理任务在第i个迭代周期的执行时长;将第i-1个迭代周期的执行时长和第i个迭代周期的执行时长进行比对,并基于比对结果,对第i-1个迭代周期确定的执行周期数进行调整,得到第i个迭代周期的执行周期数阈值;如此执行多个迭代周期,直至持续的多个迭代周期中,执行时长不再发生变化,将最后一个迭代周期确定的执行周期数确定为执行周期数阈值。
当前可执行计算任务,是指在历史调度周期中,被确定为目标计算任务被调度、但还未被执行的计算任务。当前可执行计算任务可能存在,也可能不存在;在存在当前可执行计算任务的情况下,可以将所有当前可执行计算任务分别对应的第二执行周期相加,得到所有当前可执行计算任务对应的第一执行周期总数。
步骤3023:响应于所述第一执行周期总数小于所述执行周期数阈值,将所述候选访存任务对应的第一执行周期数和所述候选访存任务对应的计算任务的第二执行周期数进行比对;
步骤3024:响应于所述候选访存任务对应的第一执行周期数小于所述候选访存任务对应的计算任务的第二执行周期数,确定所述当前候选访存任务满足所述预设条件。
此处,步骤3022、步骤3023以及步骤3024相互配合,在当前可执行计算任务对应的第一执行周期总数过小的情况下,为了保证在当前可执行计算任务执行完毕前,有其他的计算任务对应的待访存数据被准备好,需要从当前所有的候选访存任务中,挑选第一执行周期数小于对应计算任务的第二执行周期数的候选访存任务,使得在将该候选访存任务确定为目标访存任务进行调度后,当前可执行计算任务对应的第一执行周期总数的增长数量、较之目标访存任务被调度后,当前已调度的目标访存任务的第二执行周期总数对应的第二执行周期总数的增长数量更多,从而在执行周期上,使得计算任务、和访存任务得到负载均衡,避免在当前可执行计算任务执行完毕前,下一个需要执行的计算任务对应的待访存数据还未准备好的情况。
另外,在确定当前候选访存任务是否满足预设条件时,承接于上述步骤3022,还包括:
步骤3025:响应于所述第一执行周期总数大于或者等于所述执行周期数阈值,确定所述当前候选访存任务满足所述预设条件。
此处,在当前可执行计算任务对应的第一执行周期总数较大的情况下(相较于执行周期数阈值),则利用目标访存任务,对计算任务、和访存任务进行执行周期的负载均衡的需求较弱,因此,可以将当前候选访存任务确定为目标访存任务。且在该种情况下,也不容易出现当前可执行计算任务执行完毕前,下一个需要执行的计算任务对应的待访存数据还未准备好的情况。
另外,若确定出当前所有候选访存任务均不满足预设条件,也即确定从当前调度周期对应的多个候选访存任务中,确定目标访存任务失败,可以退出调度周期,直至当前正在执行的计算任务执行完毕,触发下一调度周期。
在本公开另一实施例中,为了更加充分的对算子执行单元的带宽资源进行利用,还可以响应于从多个所述候选访存任务中确定所述目标访存任务失败,基于所述当前可执行计算任务的第二执行周期数、以及所述当前可执行计算任务对应的访存任务的第一执行周期数,从所述当前可执行计算任务中,确定优先执行的第一计算任务;
响应于结束当前正在执行的计算任务,执行所述第一计算任务。
其中,在从当前可执行计算任务中,确定优先执行的第一计算任务时,可以从多个可执行计算任务中,确定满足第一筛选条件的计算任务,作为第一计算任务,该第一筛选条件例如包括下述至少一种:
a1:当前可执行计算任务对应的第二执行周期数,小于当前可执行计算任务对应的访存任务的第一执行周期数。这样,保证了待访存数据占用存储空间更大的计算任务会被优先执行,从而快速释放较大的存储空间。
a2:当前可执行计算任务对应的第二执行周期数,小于预设的第一执行周期数阈值。这样,保证了在执行第一计算任务具有更少的执行时间,从而可以快速释放对应待访存数据占用的存储空间。
a3:当前可执行计算任务对应访存任务的第一执行周期数,小于预设的第二执行周期数阈值。这样,保证了在执行第一计算任务后,能够有更大的存储空间被释放。
在结束当前正在执行的计算任务后,该计算任务对应待访存数据所占用的存储空间就会被释放,因此可以将存储空间空余出来,以存放其他计算任务对应的待访存数据。
结束当前正在执行的计算任务,例如包括下述任一种:
将所述当前正在执行的计算任务执行完毕,以及释放所述当前正在执行的计算任务。
在具体实施中,可以基于当前正在执行的计算任务的实际情况,确定要采用哪一种方式结束当前正在执行的计算任务。
示例性的:可以基于当前正在执行的计算任务对应的第二执行周期数、以及所述当前正在执行的计算任务对应的访存任务的第一执行周期数,确定是否将所述当前正在执行的计算任务释放。
在确定时,可以确定当前正在执行的计算任务是否满足第二筛选条件,如满足,则确定将当前正在执行的计算任务释放。该第二筛选条件例如包括下述至少一种:
b1:当前正在执行的计算任务对应的第二执行周期数,大于预设的第三执行周期数阈值。这样,可以将需要执行时间较久的计算任务先释放,以用于执行所需要执行时间较短的第一计算任务,从而可以快速释放对应待访存数据占用的存储空间。
b2:当前正在执行的计算任务对应访存任务的第一执行周期数,大于预设的第四执行周期数阈值。这样,可以将待访存数据占用存储空间较大计算任务释放,使得能够有更大的存储空间被释放。
b3:当前正在执行的计算任务所需要的剩余执行周期数,大于预设的第五执行周期数阈值。此处,由于当前正在执行的计算任务已经执行了一定时长,还需要的执行周期数,即为剩余执行周期数;若剩余执行周期数,小于或者等于预设的第五执行周期数阈值,则表征即使接着执行该当前正在执行的计算任务,也无需花费太多的时间,因此可以选择等待该正在执行的计算任务执行完毕,结束该任务。反之,若剩余执行周期数大于预设的第五执行周期数阈值,则表征还需要较久的时间执行该计算任务,使得存储空间无法释放,因此,可以释放该正在执行的计算任务,转而执行确定的第一计算任务,以保证对应待访存数据占用的存储空间被快速释放。
在本公开另一实施例中,在释放当前正在执行的计算任务后,还会记录所述当前正在执行任务的执行进度信息;
所述执行进度信息用于在重新调度所述当前正在执行的计算任务时,基于所述执行进度信息,继续执行所述当前正在执行的计算任务。
此处,该执行进度信息例如包括:待访存数据在内存中对应的地址信息,该新的地址信息,可以是基于当前正在执行的计算任务的当前执行进度,确定的新的地址信息。
另外,该进度信息例如还包括:运算单元中各个PE的状态、和/或产生的中间数据(可以是数据,也可以是在内存中的存储地址)。
这样,可以在该被释放的计算任务重新计算时,根据执行进度信息,恢复执行进度,并继续执行当前正在执行的计算任务的后续执行过程。
在本公开另一实施例中,还会某个计算任务释放后,将该计算任务所属的神经网络对应、与该被释放的计算任务之间具有依赖关系的当前候选访存任务,从候选访存任务队列中删除,并将该被释放的计算任务放入候选访存任务队列中,以保证待执行任务的正确执行。
针对上述S203:在确定了当前调度周期的目标访存任务后,当前调度周期对应的可调度计算任务有至少一个,该至少一个可调度计算任务,包括:目标访存任务对应的计算任务。
若在当前调度周期的前一调度周期中,存在未被确定为该前一调度周期对应的目标计算任务的可调度计算任务,则当前调度周期的可调度计算任务有多个。
在具体实施中,例如可以采用下述方式,从当前调度周期对应的可调度计算任务中,确定目标计算任务:
基于当前调度周期确定的目标访存任务的第一执行周期数、以及当前第一参数,确定当前调度周期的目标第一参数;其中,所述当前第一参数是基于历史目标访存任务的第一执行周期数确定的;
示例性的,第一参数用于跟踪当前已经调度的所有目标访存任务对应的第一执行周期的总数。在开始调度前,将该第一参数赋值为预设值,例如赋值为0。每将一个候选访存任务确定为目标访存任务,则将第一参数的值增加与目标访存任务对应的第一执行周期数。
迭代执行下述确定过程,直至当前第二参数大于或者等于所述目标第一参数:
从所述至少一个当前可调度计算任务中,确定当前计算任务;
将所述目标第一参数和当前第二参数进行比对;其中,所述当前第二参数,是基于历史目标计算任务的第二执行周期确定的;
响应于所述当前第二参数小于所述目标第一参数,将所述当前计算任务确定为目标计算任务;以及
基于所述当前计算任务对应的第二执行周期,更新所述第二参数,得到新的第二参数;
并将所述新的第二参数作为新的当前第二参数,返回至将所述目标第一参数和当前第二参数进行比对的步骤。
在具体实施中,第一参数用于跟踪当前已经被调度的所有访存任务的执行周期总数,第二参数用于跟踪当前已经被调度的所有计算任务的执行周期总数。
在该实施方式中,若第一参数大于第二参数,则证明访存任务预取待访存数据的速度,要快于计算任务被调度执行的速度,则此时可以继续增加被调度的计算任务的数量,也能够保证数据预取速度大于计算速度,因此能减少运算单元空载的概率。
若第一参数等于或者小于第二参数,则证明访存任务预取待访存数据的速度和计算任务被调度执行的速度基本持平,或者访存任务预取待访存数据的速度,要小于计算任务被调度执行的速度,这样,如果继续增加被调度的计算任务的数量,很可能会造成当某个被调度的计算任务执行完毕后,执行下一计算任务所需要的待访存数据还未被准备完毕,导致运算单元需要等待对应待访存数据准备完毕后,才可以执行,这样,就造成运算单元出现空载的情况,造成运算单元计算资源的浪费。
因此,本公开实施例中,在确定当前计算任务是否要确定为需要被调度的目标计算任务时,将目标第一参数、和当前第二参数进行比对。如果目标第一参数大于当前第二参数,则表征可以继续增加被调度的计算任务,因此,将当前计算任务确定为目标计算任务。如果目标第一参数小于当前第二参数,则表征若继续增加被调度的计算任务,可能造成运算单元空载的情况,导致计算资源的浪费,因而不能将当前计算任务确定为目标计算任务。
这样,通过上述过程,可以最大限度的实现计算任务和访存任务之间执行周期的负载均衡,减少硬件资源的浪费。
本公开实施例通过基于多个神经网络分别对应的访存任务,确定候选访存任务,并基于候选访存任务对应的第一执行周期数、候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;然后基于目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从当前可调度计算任务中,确定目标计算任务,并调度目标计算任务,实现了通过访存任务进行数据预取、以及利用预取的待访存数据执行对应计算任务之间的执行周期的均衡控制,从而实现计算任务和内存访存任务之间的负载均衡,提升硬件资源的利用率。
参见图4所示,本公开实施例还提供了基于不同调度方式下,访存任务和计算任务的具体执行情况。在该示例中,神经网络有4个,分别为神经网络1、神经网络2、神经网络3和神经网络4。
如图4中(a)所示,示出了时间段片轮询(Round Robin,RR)调度方式下,访存任务和计算任务的执行情况,在该调度方式下,在某个时间片中,执行一个计算任务、以及一个访存任务(两者并无对应关系)。且在该时间片内,若访存任务优先于计算任务执行完毕,访存任务的执行进入等待状态,而不会继续调度下一访存任务;相似的,若该时间片内,计算任务优先于访存任务执行完毕,计算任务的执行进入等待状态,而不会继续执行下一计算任务。
如在时间片Part-1中,执行与神经网络2对应的访存任务,并执行与神经网络1对应的计算任务,且与神经网络2对应的访存任务执行完毕后,进入等待状态。在时间片Part-2中,执行与神经网络3对应的访存任务,并能够与神经网络2对应的计算任务,且神经网络2对应的计算任务执行完毕后,对神经网络3对应的访存任务还未执行完毕,用于执行计算任务的相关电路进入等待状态。可以看出,在该种调度方式下,计算任务和访存任务都存在大量等待时间,造成算子执行单元中访存带宽、以及PE阵列的计算资源的极大浪费。
如图4中(b)所示,示出了在普通的待访存数据预取调度方式下,访存任务和计算任务的执行情况,在该调度方式下,虽然可以连续执行不同神经网络的访存任务,也即访存带宽并未造成浪费,但在执行计算任务时,可能存在对应访存任务未执行完毕的情况;可以看出,在该种调度方式下,访存任务虽然未存在等待时间,但计算任务仍然存在大量的等待时间,造成PE阵列中计算资源的极大浪费。
如图4中(c)所示,示出了在本公开实施例提供的待访存数据预取、与计算任务合并的调度方式下,访存任务和计算任务的执行情况。在该调度方式下,能够利用本公开实施例提供的任务调度方法,灵活确定计算任务的调度顺序、以及访存任务的调度顺序,在每个调度周期导调度了目标访存任务后,再进行目标计算任务的调度,且将调度的计算任务存储至执行队列Avl.CBs中。运算单元在执行计算任务时,从执行队列中按照计算任务的执行顺序,依次获取目标计算任务并执行。
如在第1个调度周期,对神经网络1的访存任务1进行调度,此时将该访存任务1对应的计算任务3存储至执行队列中。
在第2个调度周期,对神经网络2的访存任务2进行调度,并将与该访存任务2对应的计算任务6作为调度的计算任务,存储至执行队列中;。
在第3个调度周期,对神经网络1的访存任务4进行调度,并将与该访存任务4对应的计算任务7作为调度的计算任务,存储至执行队列中。
在第4个调度周期,对神经网络3的访存任务5进行调度,并将与该访存任务5对应的计算任务11作为调度的计算任务,存储至执行队列中。
在第5个调度周期,对神经网络2的访存任务8进行调度,并将与该访存任务8对应的计算任务12作为调度的计算任务,存储至执行队列中。
在执行队列中的各个计算任务被执行的过程中:在该访存任务1结束后,执行计算任务3,此时,将计算任务3从执行队列中删除;在将计算任务3执行完毕后,计算任务6对应的访存任务2已经执行完毕,因此可以继续执行计算任务6,在执行计算任务6时,将计算任务6从执行队列中删除;在将计算任务6执行完毕后,计算任务7对应的访存任务4已经执行完毕,因此可以继续执行计算任务7,在执行计算任务7时,将计算任务7从执行队列中删除;在将计算任务7执行完毕后,计算任务11对应的访存任务5已经执行完毕,因此可以继续执行计算任务11,在执行计算任务11时,将计算任务11从执行队列中删除。
可以看出,除首个计算任务开始前需要等待一定时间,在后续过程中并未存在访存任务等待和计算任务等待。可以看出,本公开实施例提供的调度方式,对算子执行单元中访存带宽、以及PE阵列的计算资源进行了充分的利用,提升硬件资源的利用率。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与任务调度方法对应的任务调度装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述任务调度方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图5所示,为本公开实施例提供的一种任务调度装置的示意图,所述装置包括:调度器51、以及运算单元52;其中,
调度器51,用于响应于接收到任务执行信息,基于所述任务执行信息,在多个调度周期中的每个调度周期执行:响应于触发当前调度周期,基于多个神经网络分别对应的访存任务,确定候选访存任务;基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,并调度所述目标计算任务;
运算单元52,用于执行被调度的所述目标访存任务、以及被调度的所述目标计算任务。
一种可能的实施方式中,调度器51,在多个调度周期之前,还用于:
获取多个神经网络中每个神经网络中目标网络层对应的任务执行信息;所述任务执行信息包括:待执行任务的任务数量、以及与每个待执行任务对应的执行周期;所述待执行任务包括:所述访存任务、以及与所述访存任务对应的计算任务;所述执行周期包括:执行所述访存任务的所述第一执行周期、以及执行所述计算任务的所述第二执行周期。
一种可能的实施方式中,响应于当前调度周期为首个调度周期,所述调度器51用于采用如下方式触发当前调度周期:
在无负载状态下接收到多个所述神经网络中任一神经网络对应的待执行任务;
响应于所述当前调度周期为非首个调度周期,所述调度器51用于采用如下方式触发当前调度周期:
所述当前调度周期对应的前一调度周期确定的目标访存任务执行完毕和/或,历史调度周期确定的目标计算任务执行完毕。
一种可能的实施方式中,所述调度器51,在基于多个神经网络分别对应的访存任务,确定候选访存任务时,用于:
针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务。
一种可能的实施方式中,响应于当前调度周期为首个调度周期,所述调度器51,在针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务时,用于:
从前一调度周期确定的目标访存任务所属的第一神经网络对应的当前未调度访存任务中,确定所述第一神经网络在当前调度周期的候选访存任务;
以及将前一调度周期除目标访存任务外的其他候选访存任务,确定为除所述第一神经网络外的其他神经网络在当前调度周期的候选访存任务。
一种可能的实施方式中,所述候选访存任务有多个;
所述调度器51,在基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可调度计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务时,用于:
从多个所述候选访存任务中,确定当前候选访存任务;
基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可调度计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件;
响应于确定所述当前候选访存任务满足所述预设条件,将所述当前候选访存任务确定为所述目标访存任务;
响应于确定所述当前候选访存任务未满足所述预设条件,返回至从多个所述候选访存任务中,确定当前候选访存任务的步骤。
一种可能的实施方式中,所述调度器51,在基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可执行计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件时,用于:
确定存储与所述访存任务对应的待访存数据的存储空间,是否满足所述当前候选访存任务对应的待访存数据的存储条件;
响应于满足所述当前候选访存任务对应的待访存数据的存储条件,确定当前可执行计算任务的第一执行周期总数是否小于预设的执行周期数阈值;
响应于所述第一执行周期总数小于所述执行周期数阈值,将所述候选访存任务对应的第一执行周期数和所述候选访存任务对应的计算任务的第二执行周期数进行比对;
响应于所述候选访存任务对应的第一执行周期数小于所述候选访存任务对应的计算任务的第二执行周期数,确定所述当前候选访存任务满足所述预设条件。
一种可能的实施方式中,所述调度器51,在基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可调度计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件时,还用于:
响应于所述第一执行周期总数大于或者等于所述执行周期数阈值,确定所述当前候选访存任务满足所述预设条件。
一种可能的实施方式中,所述调度器51,还用于:
响应于从多个所述候选访存任务中确定所述目标访存任务失败,基于所述当前可执行计算任务的第二执行周期数、以及所述当前可执行计算任务对应的访存任务的第一执行周期数,从所述当前可执行计算任务中,确定优先执行的第一计算任务;
响应于结束当前正在执行的计算任务,执行所述第一计算任务。
一种可能的实施方式中,所述调度器51,在结束当前正在执行的计算任务时,用于:
将所述当前正在执行的计算任务执行完毕;
或者,释放所述当前正在执行的计算任务。
一种可能的实施方式中,所述调度器51,在将当前正在执行的计算任务释放时,用于:
基于当前正在执行的计算任务对应的第二执行周期数、以及所述当前正在执行的计算任务对应的访存任务的第一执行周期数,确定是否将所述当前正在执行的计算任务释放;
响应于确定将所述当前正在执行的计算任务释放,释放所述当前正在执行的计算任务。
一种可能的实施方式中,所述调度器51,在释放所述当前正在执行的计算任务时,还用于:
记录所述当前正在执行任务的执行进度信息;
所述执行进度信息用于在重新调度所述当前正在执行的计算任务时,基于所述执行进度信息,继续执行所述当前正在执行的计算任务。
一种可能的实施方式中所述当前可调度计算任务包括至少一个;所述调度器51,在基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务时,用于:
基于当前调度周期确定的目标访存任务的第一执行周期数、以及当前第一参数,确定当前调度周期的目标第一参数;其中,所述当前第一参数是基于历史目标访存任务的第一执行周期数确定的;
迭代执行下述确定过程,直至当前第二参数大于或者等于所述目标第一参数:
所述至少一个当前可调度计算任务中,确定当前计算任务;
将所述目标第一参数和当前第二参数进行比对;其中,所述当前第二参数,是基于历史目标计算任务的第二执行周期确定的;
响应于所述当前第二参数,小于所述目标第一参数,将所述当前计算任务确定为目标计算任务;以及
基于所述当前计算任务对应的第二执行周期,更新所述第二参数,得到新的第二参数;
并将所述新的第二参数作为新的当前第二参数,返回至将所述目标第一参数和当前第二参数进行比对的步骤。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本公开实施例还提供了一种芯片,包括如本公开实施例所述的任务处理***、或者如本公开实施例所述的任务调度装置。
本公开可选实现方式还提供一种电子设备,包括如本公开实施例所述的芯片。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的任务调度方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的任务调度方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
若本公开技术方案涉及个人信息,应用本公开技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本公开技术方案涉及敏感个人信息,应用本公开技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (20)
1.一种数据处理***,其特征在于,包括:
控制单元,用于向执行单元下发多个神经网络分别对应的任务执行信息;所述任务执行信息包括;至少一个待执行任务分别对应的执行周期;所述待执行任务包括:所述访存任务、以及与所述访存任务对应的计算任务;
算子执行单元,基于接收的任务执行信息,在多个调度周期中的每个当前调度周期执行:从多个神经网络分别对应的访存任务中,确定候选访存任务;基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,并调度所述目标计算任务。
2.根据权利要求1所述的数据处理***,其特征在于,所述控制单元,在向执行单元下发多个神经网络分别对应的任务执行信息之前,还用于:
响应于接收多个任务处理请求,基于多个任务处理请求,确定与多个任务处理请求分别对应的神经网络;对各个神经网络进行解析,从各个神经网络中,确定被分配至所述执行单元进行处理的目标网络层对应的算子;基于所述算子,生成所述任务执行信息。
3.根据权利要求1或2所述的数据处理***,其特征在于,所述算子执行单元包括:调度器以及多个运算单元;
所述调度器,用于响应于接收到所述任务执行信息,基于所述任务执行信息,在多个调度周期中的每个调度周期执行:响应于触发当前调度周期,基于多个神经网络分别对应的访存任务,确定候选访存任务;基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,并调度所述目标计算任务;
所述运算单元,用于执行被调度的所述目标访存任务、以及被调度的所述目标计算任务。
4.根据权利要求1-3任一项所述的数据处理***,所述算子执行单元,在多个调度周期之前,还用于:
获取多个神经网络中每个神经网络中目标网络层对应的任务执行信息;所述任务执行信息包括:待执行任务的任务数量、以及与每个待执行任务对应的执行周期;所述待执行任务包括:所述访存任务、以及与所述访存任务对应的计算任务;所述执行周期包括:执行所述访存任务的所述第一执行周期、以及执行所述计算任务的所述第二执行周期。
5.根据权利要求1-4任一项所述的数据处理***,其特征在于,响应于当前调度周期为首个调度周期,采用如下方式触发当前调度周期:
在无负载状态下接收到多个所述神经网络中任一神经网络对应的待执行任务;
响应于所述当前调度周期为非首个调度周期,采用如下方式触发当前调度周期:
所述当前调度周期对应的前一调度周期确定的目标访存任务执行完毕和/或,历史调度周期确定的目标计算任务执行完毕。
6.根据权利要求1-5任一项所述的数据处理***,其特征在于,所述算子执行单元,在基于多个神经网络分别对应的访存任务,确定候选访存任务时,用于:
针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务。
7.根据权利要求6所述的数据处理***,其特征在于,所述算子执行单元,在响应于当前调度周期为首个调度周期,所述针对多个神经网络中的每个神经网络,从该神经网络对应的当前未调度访存任务中,确定与该神经网络对应的候选访存任务时,用于:
从前一调度周期确定的目标访存任务所属的第一神经网络对应的当前未调度访存任务中,确定所述第一神经网络在当前调度周期的候选访存任务;
以及将前一调度周期除目标访存任务外的其他候选访存任务,确定为除所述第一神经网络外的其他神经网络在当前调度周期的候选访存任务。
8.根据权利要求1-7任一项所述的数据处理***,其特征在于,所述候选访存任务有多个;
所述算子执行单元,在基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可调度计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务时,用于:
从多个所述候选访存任务中,确定当前候选访存任务;
基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可调度计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件;
响应于确定所述当前候选访存任务满足所述预设条件,将所述当前候选访存任务确定为所述目标访存任务;
响应于确定所述当前候选访存任务未满足所述预设条件,返回至从多个所述候选访存任务中,确定当前候选访存任务的步骤。
9.根据权利要求8所述的数据处理***,其特征在于,所述算子执行单元,在基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可执行计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件时,用于:
确定存储与所述访存任务对应的待访存数据的存储空间,是否满足所述当前候选访存任务对应的待访存数据的存储条件;
响应于满足所述当前候选访存任务对应的待访存数据的存储条件,确定当前可执行计算任务的第一执行周期总数是否小于预设的执行周期数阈值;
响应于所述第一执行周期总数小于所述执行周期数阈值,将所述候选访存任务对应的第一执行周期数和所述候选访存任务对应的计算任务的第二执行周期数进行比对;
响应于所述候选访存任务对应的第一执行周期数小于所述候选访存任务对应的计算任务的第二执行周期数,确定所述当前候选访存任务满足所述预设条件。
10.根据权利要求9所述的数据处理***,其特征在于,所述算子执行单元,在基于当前候选访存任务对应的第一执行周期数、所述当前候选访存任务对应的计算任务的第二执行周期数、以及当前可调度计算任务的第一执行周期总数,确定所述当前候选访存任务是否满足预设条件时,还用于:
响应于所述第一执行周期总数大于或者等于所述执行周期数阈值,确定所述当前候选访存任务满足所述预设条件。
11.根据权利要求8-10任一项所述的数据处理***,其特征在于,所述算子执行单元,还用于:
响应于从多个所述候选访存任务中确定所述目标访存任务失败,基于所述当前可执行计算任务的第二执行周期数、以及所述当前可执行计算任务对应的访存任务的第一执行周期数,从所述当前可执行计算任务中,确定优先执行的第一计算任务;
响应于结束当前正在执行的计算任务,执行所述第一计算任务。
12.根据权利要求10所述的数据处理***,其特征在于,所述算子执行单元,在结束当前正在执行的计算任务时,用于包括:
将所述当前正在执行的计算任务执行完毕;
或者,释放所述当前正在执行的计算任务。
13.根据权利要求12所述的调度方法,其特征在于,所述算子执行单元,在将当前正在执行的计算任务释放时,用于:
基于当前正在执行的计算任务对应的第二执行周期数、以及所述当前正在执行的计算任务对应的访存任务的第一执行周期数,确定是否将所述当前正在执行的计算任务释放;
响应于确定将所述当前正在执行的计算任务释放,释放所述当前正在执行的计算任务。
14.根据权利要求12或13所述的调度方法,其特征在于,所述算子执行单元,在释放所述当前正在执行的计算任务之前,还用于:
记录所述当前正在执行任务的执行进度信息;
所述执行进度信息用于在重新调度所述当前正在执行的计算任务时,基于所述执行进度信息,继续执行所述当前正在执行的计算任务。
15.根据权利要求1-14任一项所述的数据处理***,其特征在于,所述当前可调度计算任务包括至少一个;所述算子执行单元,在基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务时,用于:
基于当前调度周期确定的目标访存任务的第一执行周期数、以及当前第一参数,确定当前调度周期的目标第一参数;其中,所述当前第一参数是基于历史目标访存任务的第一执行周期数确定的;
迭代执行下述确定过程,直至当前第二参数大于或者等于所述目标第一参数:
所述至少一个当前可调度计算任务中,确定当前计算任务;
将所述目标第一参数和当前第二参数进行比对;其中,所述当前第二参数,是基于历史目标计算任务的第二执行周期确定的;
响应于所述当前第二参数,小于所述目标第一参数,将所述当前计算任务确定为目标计算任务;以及
基于所述当前计算任务对应的第二执行周期,更新所述第二参数,得到新的第二参数;
并将所述新的第二参数作为新的当前第二参数,返回至将所述目标第一参数和当前第二参数进行比对的步骤。
16.一种任务调度方法,其特征在于,包括:在多个调度周期中的每个调度周期执行:
响应于触发当前调度周期,基于多个神经网络分别对应的访存任务,确定候选访存任务;
基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;
基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,并调度所述目标计算任务。
17.一种任务调度装置,其特征在于,包括:
调度器,用于响应于接收到任务执行信息,基于所述任务执行信息,在多个调度周期中的每个调度周期执行:响应于触发当前调度周期,基于多个神经网络分别对应的访存任务,确定候选访存任务;基于所述候选访存任务对应的第一执行周期数、所述候选访存任务对应的计算任务的第二执行周期数、当前可执行计算任务的第一执行周期总数,从所述候选访存任务中,确定目标访存任务,并调度确定的所述目标访存任务;基于所述目标访存任务的第一执行周期、以及当前可调度计算任务的第二执行周期数,从所述当前可调度计算任务中,确定目标计算任务,并调度所述目标计算任务;
运算单元,用于执行被调度的所述目标访存任务、以及被调度的所述目标计算任务。
18.一种芯片,其特征在于,包括:如权利要求1-15任一项所述的数据处理***,或者如权利要求17所述的任务调度装置。
19.一种电子设备,其特征在于,包括:如权利要求18所述的芯片。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被电子设备运行时,所述电子设备执行如权利要求16所述的任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210147686.1A CN114490002A (zh) | 2022-02-17 | 2022-02-17 | 数据处理***、任务调度方法、装置、芯片、及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210147686.1A CN114490002A (zh) | 2022-02-17 | 2022-02-17 | 数据处理***、任务调度方法、装置、芯片、及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114490002A true CN114490002A (zh) | 2022-05-13 |
Family
ID=81481481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210147686.1A Pending CN114490002A (zh) | 2022-02-17 | 2022-02-17 | 数据处理***、任务调度方法、装置、芯片、及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114490002A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024037173A1 (zh) * | 2022-08-17 | 2024-02-22 | 华为技术有限公司 | 一种调度器、作业调度方法及相关设备 |
-
2022
- 2022-02-17 CN CN202210147686.1A patent/CN114490002A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024037173A1 (zh) * | 2022-08-17 | 2024-02-22 | 华为技术有限公司 | 一种调度器、作业调度方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6898496B2 (ja) | 計算グラフの処理 | |
CN107239829B (zh) | 一种优化人工神经网络的方法 | |
US9298760B1 (en) | Method for shard assignment in a large-scale data processing job | |
CN110389816B (zh) | 用于资源调度的方法、装置以及计算机可读介质 | |
WO2017083399A2 (en) | Training neural networks represented as computational graphs | |
CN109542512B (zh) | 一种数据处理方法、装置和存储介质 | |
CN110427256A (zh) | 基于优先级的作业调度优化方法、设备、存储介质及装置 | |
CN111695672A (zh) | 用于提高ai引擎mac利用率的方法 | |
CN113051053B (zh) | 异构资源调度方法、装置、设备和计算机可读存储介质 | |
CN111104211A (zh) | 基于任务依赖的计算卸载方法、***、设备及介质 | |
CN111984400A (zh) | 神经网络的内存分配方法及装置 | |
CN113886080A (zh) | 高性能集群任务调度方法、装置、电子设备及存储介质 | |
CN116991560A (zh) | 针对语言模型的并行调度方法、装置、设备及存储介质 | |
CN115860066A (zh) | 一种基于批处理的神经网络推理流水线复用的方法 | |
CN114490002A (zh) | 数据处理***、任务调度方法、装置、芯片、及电子设备 | |
CN112286623B (zh) | 一种信息处理方法及装置、存储介质 | |
CN109445863B (zh) | 一种基于fpga的数据处理方法、装置、设备及介质 | |
CN115309502A (zh) | 一种容器调度方法及装置 | |
Kiselev et al. | The energy efficiency evaluating method determining energy consumption of the parallel program according to its profile | |
CN115470901A (zh) | 支持移动端异构处理器分载的混合精度训练方法及设备 | |
CN114021733A (zh) | 模型训练优化方法、装置、计算机设备及存储介质 | |
CN115168014A (zh) | 一种作业调度方法及装置 | |
CN114466014A (zh) | 一种服务调度方法、装置、电子设备及存储介质 | |
CN112667241B (zh) | 机器学习指令的转换方法及装置、板卡、主板、电子设备 | |
CN109739649B (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 |