CN110825502A - 神经网络处理器和用于神经网络处理器的任务调度方法 - Google Patents
神经网络处理器和用于神经网络处理器的任务调度方法 Download PDFInfo
- Publication number
- CN110825502A CN110825502A CN201810911674.5A CN201810911674A CN110825502A CN 110825502 A CN110825502 A CN 110825502A CN 201810911674 A CN201810911674 A CN 201810911674A CN 110825502 A CN110825502 A CN 110825502A
- Authority
- CN
- China
- Prior art keywords
- task
- neural network
- module
- information
- network processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请实施例公开了神经网络处理器和用于神经网络处理器的任务调度方法。该神经网络处理器的一具体实施例包括:任务存储模块、调度模块以及任务执行模块;任务存储模块用于存储外部处理器分配的任务信息,任务信息包括用于指示任务的任务类型的信息;调度模块用于将任务存储模块所存储的任务信息分配给任务执行模块;任务执行模块执行任务信息所指示的任务。缩短了任务执行模块在完成上一次的计算任务以及接收到下一次的计算任务期间的空闲时间,提高了神经网络处理器的利用率,延长了神经网处理器的有效工作时间。从而可以缩短对神经网络进行训练或使用神经网络进行预测所需的时间。
Description
技术领域
本申请实施例涉及集成电路技术领域,具体涉及人工智能技术领域,尤其涉及神经网络处理器和用于神经网络处理器的任务调度方法。
背景技术
随着人工智能技术的快速发展,深度神经网络的模型规模越来越大、训练数据也越来越多,使用专用的神经网络处理器来进行深度神经网络训练与预测计算的趋势愈发明显。
神经网络处理器直接针对深度神经网络中典型的、高计算密集型的计算任务进行特殊的优化,例如矩阵计算(或矩阵计算中涉及到的乘累加)、激活运算、向量运算等。一般来讲,神经网络处理器包含若干不同的执行单元。由外部处理器对每个执行单元的所执行的任务进行调度。每个执行单元可以接收外部处理器分配的任务并执行。
发明内容
本申请实施例提出了一种神经网络处理器和用于神经网络处理器的任务调度方法。
第一方面,本申请实施例提供了一种神经网络处理器,该神经网络处理器包括:任务存储模块、调度模块以及任务执行模块;所述任务存储模块用于存储外部处理器分配的任务信息,所述任务信息包括用于指示任务的任务类型的信息;所述调度模块用于将任务存储模块所存储的任务信息分配给任务执行模块;所述任务执行模块执行任务信息所指示的任务。
在一些实施例中,所述任务存储模块包括至少一个先进先出存储器,每一个所述先进先出存储器用于存储多个任务信息。
在一些实施例中,每一个所述先进先出存储器所存储的多个任务信息中,至少两个任务信息各自指示的任务类型不相同。
在一些实施例中,所述任务执行模块包括多个任务执行单元;所述任务执行单元在完成所述调度模块分配的任务之后,向所述调度模块发送用于指示任务完成的反馈信息。
在一些实施例中,所述任务执行模块中的多个所述任务执行单元中,至少两个任务执行单元各自对应的任务类型不相同。
在一些实施例中,每一先进先出存储器中存储了一个任务队列;以及调度模块响应于接收到每一任务执行单元的反馈信息,确定该任务执行单元对应的任务类型,从每一任务队列的对头所对应的任务信息中确定出与该任务类型对应的任务信息,将所确定的任务信息分配给该任务执行单元;并向外部处理器发送中断请求。
在一些实施例中,所述外部处理器与所述神经网络处理器之间通过PCIE总线实现通信连接。
第二方面,本申请实施例提供了一种用于神经网络处理器的任务调度方法,所述神经网络处理器包括任务存储模块、调度模块以及任务执行模块,所述方法包括:所述调度模块响应于接收到所述任务执行模块发送的用于指示任务完成的反馈信息,从所述任务存储模块所存储的多个任务信息中选取与所述任务执行模块对应的任务信息分配给所述任务执行模块;其中,所述任务存储模块存储了由外部处理器分配的多个任务信息,所述任务信息包括用于指示任务的任务类型的信息;所述调度模块根据所述反馈信息生成中断请求,将所述中断请求发送给外部处理器。
在一些实施例中,所述任务存储模块包括至少一个先进先出存储器,每一个先进先出存储器用于存储多个任务信息,每一个先进先出存储器所存储的多个任务信息形成一个任务队列;以及所述从所述任务存储模块所存储的多个任务信息中选取与所述任务执行模块对应的任务信息分配给所述任务执行模块,包括:确定所述任务执行模块对应的任务类型;从多个任务队列的队头所对应的任务信息中确定出与该任务类型对应的任务信息分配给所述任务执行模块。
在一些实施例中,所述任务执行模块包括多个任务执行单元,所述多个任务执行单元中的至少两个任务执行单元各自所对应的任务类型不相同,以及所述响应于接收到所述任务执行模块发送的用于指示任务完成的反馈信息,从所述任务存储模块所存储的多个任务信息中选取与所述任务执行模块对应的任务信息分配给所述任务执行模块,包括:响应于接收到每一任务执行单元发送的所述反馈信息,确定该任务执行单元所对应的任务类型;将从多个任务队列的队头所对应的任务信息中确定出的与该任务类型对应的任务信息分配给该任务执行单元。
第三方面,本申请实施例提供了一种电子设备,包括第一方面中任一实现方式的神经网络处理器。
本申请实施例提供的神经网络处理器和用于神经网络处理器的任务调度方法,通过在神经网络处理器中设置任务存储模块、调度模块以及任务执行模块,由任务存储模块存储外部处理器分配的任务信息,当任务执行模块执行完上一次的任务之后,调度模块将存储在任务存储模块的任务信息分配给任务执行模块,以使任务执行模块执行下一次任务。同时调度模块向外部处理器发送中断请求。由于调度模块在向外部处理器发送中断请求的同时,向任务执行模块分配下一次的任务。这样一来,不需要由外部处理器根据所捕捉到的任务执行模块发出的中断请求之后再向任务执行模块分配下一次计算任务的任务信息,缩短了任务执行模块在完成上一次的计算任务以及接收到下一次的计算任务期间的空闲时间,提高了神经网络处理器的利用率,延长了神经网处理器的有效工作时间。从而可以缩短对神经网络进行训练或使用神经网络进行预测所需的时间。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是现有的用于神经网络处理器的任务调度的时序图;
图2是本申请的一个实施例的神经网络处理器的示例性架构图;
图3是根据本申请实施例的神经网络处理器各模块运行的时序图;
图4是根据本申请的另一个实施例的神经网络处理器的示例性架构图;
图5是根据本申请的又一个实施例的神经网络处理器的示例性架构图;
图6是根据本申请的一个实施例用于神经网络处理器的任务调度方法的流程示意图;
图7是根据本申请的一个实施例的电子设备的计算机系统结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
通常采用神经网络处理器与外部处理器组成异构系统来对各种神经网络相关的计算任务进行加速。其中外部处理器(如中央处理器)负责计算任务中的逻辑控制、分支跳转等工作。神经网络处理器负责对大规模的数据进行处理与计算。
也就是说,外部处理器解析计算任务,为神经网络处理器准备好计算数据并向神经网络处理器下发对应的指令。神经网络处理器接收外部处理器下发的指令之后,执行计算任务。也即,由外部处理器实现对神经网络处理器的计算任务的调度。
上述调度方法的一个实现方式是神经网络处理器在完成上一次的计算任务之后,向外部处理器发送一次中断请求。外部处理器捕获到神经网络处理器发送的中断请求之后,再为神经网络处理器准备下一次计算任务需要的数据和指令。在准备好神经网络处理器的下一次计算任务需要的数据和指令之后,外部处理器将数据和指令下发给神经网络处理器。神经网络处理器接收到新的数据和指令之后,开始下一次的计算任务。
请参考图1,图1示出了神经网络处理器的任务调度过程示意图100。
如图1所示,神经网络处理器102完成第一次计算任务103后,向外部处理器101发送中断请求105。外部处理器101捕获到中断请求105之后,响应中断请求105,为神经网络处理器准备下一次计算任务104。然后,外部处理器101把下一次计算任务104下发到神经网络处理器102。从图1可以看出在神经网络处理器102在向外部处理器101发送中断请求105,到接收到外部处理器101下发的下一次计算任务104期间,神经网络处理器102处于空闲状态。上述空闲状态所持续的时间至少包括神经网络处理器102向外部处理器101发送中断请求105需要的时间T0、外部处理器101捕获上述中断请求105需要的时间T1、神经网络处理器102响应中断请求105需要的时间T2、外部处理器101为神经网络处理器102准备下一次计算任务104需要的数据和指令所需的时间T3以及外部处理器101将下一次计算任务104所需的数据和指令下发给神经网络处理器102所需的时间T4。此外,由于外部处理器101还需要处理通用计算、以及与其他外设之前的交互任务等,外部处理器101响应神经网络处理器102发送的中断请求所需的时间T2有可能比较长。在对神经网络进行训练或使用神经网络进行预测时,需要处理大量的计算任务,在上述任务调度过程中,神经网络处理器102将会有比较多的时间处于空闲状态,使得神经网络处理器102的计算能力受到限制,将会延长对神经网络进行训练或使用神经网络进行预测所需的时间。
为了改善上述问题,本申请提出了一种神经网络处理器和用于神经网络处理器的任务调度方法。
请参考图2,图2示出了本申请的一个实施例的神经网络处理器的示例性架构200。
如图2所示,神经网络处理器201可以包括任务存储模块202、调度模块203和任务执行模块204。
其中,任务存储模块202用于存储外部处理器分配的任务信息。任务信息可以包括用于指示任务的任务类型的信息。
在本实施例中,上述任务存储模块可以是各种类型的存储器。例如静态随机访问存储器、动态随机访问存储器、同步静态随机访问存储器、同步动态随机访问存储器以及闪存等。
上述任务存储模块202中可以存储多个任务信息。上述多个任务信息对应至少一个任务类型。也就是说,任务存储模块202中可以存储一个任务类型的任务信息,也可以存储两个以上任务类型的任务信息。
调度模块203用于将任务存储模块202所存储的任务信息分配给任务执行模块204。
调度模块203中可以包括用于任务调度的程序的程序模块,该程序模块中包括多个预设指令。调度模块203通过运行程序模块中的多条预设指令,为任务执行模块204分配计算任务。
任务执行模块204可以执行任务信息所指示的任务。任务信息中包括任务对应的参数信息。在上述任务对应的参数信息中包括任务对应的数据和指令等。
任务执行模块204可以根据任务对应的数据和指令来执行相应的计算任务。
本实施例中所提到的任务可以是训练神经网络或使用神经网络进行预测所涉及到的各种计算任务,例如:矩阵计算(或矩阵计算中涉及到的乘累加运算)、激活运算、向量运算等。
在本实施例的一些可选的实现方式中,上述神经网络处理器201可以通过PCIE(peripheral component interconnect express,一种高速串行计算机扩展总线标准)与外部处理器205实现通信连接。
外部处理器205可以通过PCIE向神经网络处理器201的任务存储模块202分配任务信息。外部处理器205可以是具有数据运算以及逻辑控制功能的各种处理器,例如ARM系列处理器、Intel系列处理器等。
外部处理器205可以将训练神经网络或者使用神经网络进行预测的任务进行拆分,拆分成多个计算任务,并根据多个计算任务生成多个任务信息。然后外部处理器205将各任务信息分配给神经网络处理器201的任务存储模块202。上述任务信息可以包括用于指示任务的任务类型的信息和任务对应的参数信息。上述参数信息可以包括任务对应的数据和相关指令。
请参考图3,其示出了根据本申请实施例的神经网络处理器各模块运行的时序图300。
如图3所示,在t10时刻,任务存储模块202预先存储了来自外部处理器205的多个任务的任务信息302、303和304。此外,在t10时刻,任务执行模块204开始执行调度模块203分配的、之前存储在任务存储模块202的任务信息301所对应的计算任务。在t11时刻,任务执行模块204完成任务信息301所对应的计算任务。调度模块203可以通过各种方式了解任务执行模块204的状态,例如根据接收到的任务执行模块204发送的用于指示任务完成的反馈信息,来了解任务执行模块204的状态。在t12时刻调度模块203可以将任务存储模块202中的任务信息302分配给任务执行模块204。任务执行模块204开始处理任务信息302对应的计算任务。从任务执行模块204向调度模块203发送反馈信息,到接收到调度模块203分配的任务信息302所用的时间为T1’,T1’=t12-t11。此外,调度模块203在t11时刻接收到任务执行模块204的反馈信息之后,可以向外部处理器205发送中断请求305。外部处理器205在t13时刻捕获到上述中断请求305。外部处理器205在t14时刻响应上述中断请求。外部处理器205可以在t15时刻处理中断请求对应的任务,例如为任务存储模块202准备下一个计算任务的任务信息306。然后将任务信息306分配给神经网络处理器的任务存储模块202。可以看出,任务执行模块204完成上一次的计算任务后,在调度模块203从t11时刻向外部处理器205发送中断请求305,到外部处理器205在t15时刻处理上述中断请求305的这个时间段内,任务执行模块204已经开始处理下一个计算任务了。因此,本实施例提供的神经网络处理器可以缩短任务执行模块的空闲时间,可以有效提高神经网络处理器的利用率。有利于缩短对神经网络进行训练或者利用神经网络进行预测所用的时间。
本实施例提供的神经网络处理器,由于在神经网络处理器中设置了任务存储模块以及调度模块,在任务执行模块完成上一次的计算任务之后,可以由调度模块将任务存储模块所存储的任务信息分配给任务执行模块,这样一来,不需要由外部处理器根据所捕捉到的任务执行模块发出的中断请求之后再向任务执行模块分配下一次计算任务的任务信息,缩短了任务执行模块在完成上一次的计算任务以及接收到下一次计算任务期间的空闲时间,提高了神经网络处理器的利用率,延长了神经网处理器的有效工作时间。从而可以缩短对神经网络进行训练或使用神经网络进行预测所需的时间。
继续参考图4,其示出了本申请的另一个实施例的神经网络处理器的示例性架构400:
神经网络处理器401可以包括与图2所示实施例相同的调度模块403和任务执行模块404。
与图2所示实施例不同的是,本实施例的神经网络处理器401中的任务存储模块402包括至少一个先入先出存储器4021。
每一个先入先出存储器4021用于存储多个任务信息。在每一个先入先出存储器4021中,所存储的多个任务信息形成一个任务队列。
在一些应用场景中,每一个先入先出存储器4021中所存储多个任务信息所指示的任务类型可以相同。
在另一些应用场景中,每一个先入先出存储器4021中所存储的多个任务信息中,至少两个任务信息各自指示的任务类型可以不相同。也就是说,每一个先入先出存储器4021中所存储的多个任务信息的类型可以不相同。
每一个先入先出存储器4021中存储了一个任务队列:任务00、任务01、任务02、…等。调度模块403可以将先入先出存储器4021中的任务队列的对头对应的任务信息分配给任务执行模块404。
任务存储模块402的每一个先入先出存储器4021可以从外部处理器接收任务信息,并将任务信息存入该先入先出存储器4021的任务队列的对尾。
在一些应用场景中,神经网络处理器401可以将每一个先入先出存储器4021对应的寄存器通过共享内存的方式,映射到外部处理器的地址空间。对于每一个先入先出存储器,上述外部处理器可以通过上述地址空间将任务信息写入该先入先出存储器4021对应的寄存器中,先入先出存储器4021再将寄存器中的上述任务信息添加到该先入先出存储器4021存储的任务队列的队尾。
调度模块403可以接收任务执行模块404发送的用于指示任务完成的反馈信息。调度模块403响应于接收到任务执行模块404发送的上述反馈信息,根据各种预设规则从各个先入先出存出器4021的对头各自对应的任务信息中选取出任务执行模块404下一次需要执行的任务信息,并将所确定的任务信息分配给任务执行模块404。
本实施例中,在神经网络处理器中添加了多个先入先出存储器。按照不同计算任务的先后顺序以及预设的分配规则为每一个任务信息分配对应的先入先出存储器,并确定该任务信息在任务队列中的位次。从而可以将优先处理的计算任务信息设置在不同任务队列的对头,以使任务执行模块对这些需要优先处理的计算任务优先进行处理。有利于缩短对神经网络进行训练或者利用神经网络进行预测所用的时间。
继续参考图5,其示出了本申请的又一个实施例的神经网络处理器的示例性架构500。
神经网络处理器501可以包括与图4所示实施例相同的任务存储模块502、调度模块503。
与图4所示实施例不同的是,本实施例的神经网络处理器501中的任务执行模块504包括多个任务执行单元5041。
每一个任务执行单元5041可以独立执行一个计算任务。多个任务执行单元5041可以并行执行各自的计算任务。
每一个任务执行单元5041在执行完上一次的计算任务之后,可以向调度模块503发送用于指示任务完成的反馈信息。这样一来,调度模块503可以了解各个任务执行单元5041的状态。
在一些应用场景中,每一个任务执行单元5041可以执行同一个类型的计算任务。在这些应用场景中,任务执行模块504中的多个任务执行单元5041中,至少两个任务执行单元5041各自对应的任务类型不相同。也就是说,任务执行模块504所包括的多个任务执行单元5041可以完成不同类型的计算任务。
在另外一些应用场景中,每一个任务执行单元5041还可以执行不同类型的计算任务。
任务存储模块502包括多个先入先出存储器,每一个先入先出存储器用于存储一个任务队列。
调度模块503响应于接收到每一任务执行单元5041的反馈信息,确定该任务执行单元5041下一次执行的任务的任务类型。然后从每一任务队列的对头所对应的任务信息中确定出与该任务类型对应的任务信息,将所确定的任务信息分配给该任务执行单元5041。
调度模块503响应于接收到每一任务执行单元5041的反馈信息,向该任务执行单元5041下发下一个任务信息的同时,可以向外部处理器发送中断请求。外部处理器可以在捕获到上述中断请求时,响应上述中断请求,并处理中断请求对应的任务。
在一些应用场景中,上述外部处理器可以在捕获到上述中断请求后,向神经网络处理器501的任务存储模块502分配新的任务信息。
本申请的上述实施例提供的方法,任务执行模块包括多个任务执行单元,多个任务执行单元可并行处理任务,调度模块可以根据每一个执行单元的反馈信息向该执行单元分配计算任务。可以提高神经网络处理器的计算能力。从而可以进一步缩短对神经网络进行训练或者利用神经网络进行预测所用的时间。
进一步参考图6,其示出了根据本申请的用于神经网络处理器的任务调度方法的一个实施例的流程600。神经网络处理器可以包括任务存储模块、调度模块以及任务执行模块。该用于神经网络处理器的任务调度方法方法,包括以下步骤:
步骤601,调度模块响应于接收到任务执行模块发送的用于指示任务完成的反馈信息,从任务存储模块所存储的多个任务信息中选取与任务执行模块对应的任务信息分配给任务执行模块。
在本实施例中,神经网络处理器的任务执行模块可以完成训练神经网络或者使用神经网络进行预测所需的各种计算任务,例如矩阵计算(或矩阵计算中涉及到的乘累加运算)、激活运算、向量运算等。神经网络处理器的任务存储模块可以存储来自外部处理器的任务信息。
在本实施例中,任务存储模块中可以预先存储了外部处理器分配给神经网络处理器的多个任务信息。上述多个任务信息各自对应的任务类型可以相同,也可以不相同。
在本实施例中,任务执行模块在执行完上一次的计算任之后,可以向调度模块发送用于指示任务完成的反馈信息。调度模块可以根据各种方法确定任务执行模块下一次所执行的任务信息。从任务存储模块所存储的多个任务信息中选取出上述任务信息,并将所选取的任务信息分配给任务执行模块。
此外,外部处理器还可以根据任务存储模块中的任务信息被执行的情况向任务执行模块分配计算任务。
步骤602,调度模块根据反馈信息生成中断请求,将中断请求发送给外部处理器。
调度模块可以根据任务执行模块发送的用于指示任务完成的反馈信息,生成中断请求,然后将中断请求发送给外部处理器。
在本实施例中,神经网络处理器与外部处理器之间可以通过总线例如PCIE进行通信连接。
这里的外部处理器是与神经网络处理器相对而言的,外部处理器可以是类型的处理器,例如ARM系列处理器、Intel系列处理器等。
外部处理器在接收到中断请求之后,可以对中断请求进行响应。
这里的中断请求例如可以包括请求下一个计算任务的中断请求等等。
可以理解的是,步骤601和步骤602的执行顺序可以互相交换。
本实施例提供的用于神经网络处理器的任务调度方法,通过设置在神经网络处理器内的调度模块来将存储在神经网络处理器的任务存储模块中的任务信息分配给任务执行模块,可以缩短任务执行模块的空闲时间,提高任务执行模块的利用率,从而可以提高神经网络处理器的利用率。有利于缩短对神经网络进行训练或者利用神经网络进行预测所用的时间。
在本实施例的一些可选的实现方式中,任务存储模块包括至少一个先进先出存储器。每一个先进先出存储器用于存储多个任务信息,每一个先进先出存储器所存储的多个任务信息形成一个任务队列。
在这些可选的实现方式中,上述步骤601可以包括如下子步骤:
子步骤6011,确定任务执行模块对应的任务类型。
在这些可选的实现方式中,上述神经网络处理器的调度模块在接收到了任务执行模块发送的用于指示任务完成的反馈信息之后,可以确定任务执行模块下一次计算任务的任务类型。这里若任务执行模块只可以处理一种计算任务,例如矩阵乘法,调度模块则可以直接确定出任务执行模块对应的任务类型为矩阵乘法类型。若任务执行模块可以处理多种计算任务,调度模块可以根据预设规则确定出任务执行模块进行下一次计算任务所对应的任务类型。
每一个先进先出存储器所存储的多个任务信息各自对应的任务类型可以相同,也可以不同。
子步骤6012,从多个任务队列的队头所对应的任务信息中确定出与该任务类型对应的任务信息分配给任务执行模块。
神经网络处理器的调度模块可以对每一个先进先出存储器所存储的任务队列的对头对应的任务信息进行确认,以确认任务信息的类型。
通常,存储在任务队列中的任务信息中包括了用于指示任务的任务类型的预设字段。上述任务类型例如可以包括矩阵相乘、激活运算等。上述预设字段中可以对应任务类型的标识。上述任务类型的标识例如可以是数字组合等。上述调度模块可对每一个任务队列对头所存储的任务信息的上述预设字段中进行解析,已确认该任务信息所指示的任务的任务类型。
在得到了每一个任务队列对头所存储的任务信息对应的任务类型之后,上述调度模块可以从多个任务队列的对头各自对应的任务信息中确定出与任务执行模块对应的任务类型匹配的任务信息,并将所确定的任务信息分配给任务执行模块。
在这些可选的实现方式中,通过在神经网络处理器中设置多个先入先出存储器,可以将优先处理的任务设置在不同先入先出存储器的对头,在任务执行模块完成上一次的计算任务之后,调度模块可以将位于先入先出存储器所存储的任务队列的对头对应的任务信息优先分配给任务执行模块执行。有利于缩短对神经网络进行训练或者利用神经网络进行预测所用的时间。
在本实施例的一些可选的实现方式中,所述任务执行模块包括多个任务执行单元。上述多个任务执行单元中的至少两个任务执行单元各自所对应的任务类型不相同
在这些可选的实现方式中,上述步骤601可以包括如下子步骤:
子步骤6013,响应于接收到每一任务执行单元发送的所述反馈信息,确定该任务执行单元所对应的任务类型。
在一些应用场景中,每一个任务执行单元可以执行一个任务类型的计算任务。不同任务执行单元可以执行一个相同任务类型的计算任务。调度模块可以预先了解每一个任务执行单元可以完成的任务的任务类型。
神经网络的调度模块可以与任务执行模块的多个任务执行单元进行通信。
任务执行模块的每一个任务执行单元可以在完成了上一次的计算任务之后,向调度模块发送用于指示任务完成的反馈信息。这里的反馈信息例如可以是一个由字母和/或数字组成的标识。在上述反馈信息中可以包括任务执行单元的标识以及用于指示任务完成的标识。
在接收到了一个任务执行单元发送的用于指示任务完成的反馈信息之后,上述调度模块可以确定该任务执行单元所能执行的任务的任务类型。例如,上述调度模块可以根据认任务执行单元的标识在预先存储的各任务执行单元可以完成的任务的任务类型的信息中查找该任务执行单元可以完成的任务的任务类型。
子步骤6014,将从多个任务队列的队头所对应的任务信息中确定出的与该任务类型对应的任务信息分配给该任务执行单元。
在子步骤6013中确定出该任务执行单元对应的任务类型之后,上述神经网络的调度模块可以确认每一个先进先出存储器所存储的任务队列的对头中存储的任务信息的类型。
通常,存储在任务队列中的任务信息中包括了指示任务信息所属类型的预设字段。任务类型例如可以包括矩阵相乘、激活运算等。上述调度模块可对每一个任务队列对头所对应的任务信息的上述预设字段中进行解析,以确认该任务信息所指示的任务的类型。
在得到了每一个任务队列对头所存储的任务信息对应的任务类型之后,上述调度模块可以从多个任务队列的对头各自对应的任务信息中确定出与该任务执行单元对应的任务类型匹配的任务信息,并将所确定的任务信息分配给该任务执行单元。
需要说明的是,每一个任务执行单元还可以执行不同任务类型的计算任务。若每一个任务执行单元可以执行不同任务类型的计算任务时,上述调度模块在每一个任务执行单元完成上一次的计算任务之后,通过预设规则确定该任务执行单元下一个计算任务对应的任务类型。然后从多个任务队列的对头中选取与上述任务类型对应的任务信息分配该该任务执行单元。
在这些可选的实现方式中,任务执行模块包括多个任务执行单元,多个任务执行单元可并行处理不同类型的计算任务,调度模块可以根据每一个执行单元的反馈信息向该执行单元分配计算任务。可以提高神经网络处理器的计算能力,从而可以进一步缩短对神经网络进行训练或者利用神经网络进行预测所用的时间。
下面参考图7,其示出了适于用来实现本申请一个实施例的电子设备的计算机系统700的结构示意图。图7示出的电子设备的计算机系统仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU,Central Processing Unit)701,其可以根据存储在只读存储器(ROM,Read Only Memory)702中的程序或者从存储部分708加载到随机访问存储器(RAM,Random Access Memory)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU中的部分数据处理可以由神经网络处理器712来执行。CPU 701、ROM 702、RAM 703以及神经网络处理器712通过总线704彼此相连。输入/输出(I/O,Input/Output)接口705也连接至总线704。此外计算机系统700还包括神经网络处理器712。神经网络处理器712可以为如图2、图4或图5所示实施例中的神经网络处理器。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT,Cathode Ray Tube)、液晶显示器(LCD,Liquid Crystal Display)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN(局域网,Local AreaNetwork)卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (11)
1.一种神经网络处理器,包括:任务存储模块、调度模块以及任务执行模块;
所述任务存储模块用于存储外部处理器分配的任务信息,所述任务信息包括用于指示任务的任务类型的信息;
所述调度模块用于将任务存储模块所存储的任务信息分配给任务执行模块;
所述任务执行模块执行任务信息所指示的任务。
2.根据权利要求1所述的神经网络处理器,其中,所述任务存储模块包括至少一个先进先出存储器,每一个所述先进先出存储器用于存储多个任务信息。
3.根据权利要求2所述的神经网络处理器,其中,每一个所述先进先出存储器所存储的多个任务信息中,至少两个任务信息各自指示的任务类型不相同。
4.根据权利要求2或3所述的神经网络处理器,其中,所述任务执行模块包括多个任务执行单元;
所述任务执行单元在完成所述调度模块分配的任务之后,向所述调度模块发送用于指示任务完成的反馈信息。
5.根据权利要求4所述的神经网络处理器,其中,所述任务执行模块中的多个所述任务执行单元中,至少两个任务执行单元各自对应的任务类型不相同。
6.根据权利要求4所述的神经网络处理器,其中,每一先进先出存储器中存储了一个任务队列;以及
调度模块响应于接收到每一任务执行单元发送的所述反馈信息,确定该任务执行单元对应的任务类型,从每一任务队列的对头所对应的任务信息中确定出与该任务类型对应的任务信息,将所确定的任务信息分配给该任务执行单元;并向外部处理器发送中断请求。
7.根据权利要求1所述的神经网络处理器,其中,所述外部处理器与所述神经网络处理器之间通过PCIE总线实现通信连接。
8.一种用于神经网络处理器的任务调度方法,所述神经网络处理器包括任务存储模块、调度模块以及任务执行模块,所述方法包括:
所述调度模块响应于接收到所述任务执行模块发送的用于指示任务完成的反馈信息,从所述任务存储模块所存储的多个任务信息中选取与所述任务执行模块对应的任务信息分配给所述任务执行模块;其中,所述任务存储模块存储了由外部处理器分配的多个任务信息,所述任务信息包括用于指示任务的任务类型的信息;
所述调度模块根据所述反馈信息生成中断请求,将所述中断请求发送给外部处理器。
9.根据权利要求8所述的方法,其中,所述任务存储模块包括至少一个先进先出存储器,每一个先进先出存储器用于存储多个任务信息,每一个先进先出存储器所存储的多个任务信息形成一个任务队列;以及
所述从所述任务存储模块所存储的多个任务信息中选取与所述任务执行模块对应的任务信息分配给所述任务执行模块,包括:
确定所述任务执行模块对应的任务类型;
从多个任务队列的队头所对应的任务信息中确定出与该任务类型对应的任务信息分配给所述任务执行模块。
10.根据权利要求9所述的方法,其中,所述任务执行模块包括多个任务执行单元,所述多个任务执行单元中的至少两个任务执行单元各自所对应的任务类型不相同,以及
所述响应于接收到所述任务执行模块发送的用于指示任务完成的反馈信息,从所述任务存储模块所存储的多个任务信息中选取与所述任务执行模块对应的任务信息分配给所述任务执行模块,包括:
响应于接收到每一任务执行单元发送的所述反馈信息,确定该任务执行单元所对应的任务类型;
将从多个任务队列的队头所对应的任务信息中确定出的与该任务类型对应的任务信息分配给该任务执行单元。
11.一种电子设备,包括如权利要求1-7中任一所述的神经网络处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810911674.5A CN110825502B (zh) | 2018-08-10 | 2018-08-10 | 神经网络处理器和用于神经网络处理器的任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810911674.5A CN110825502B (zh) | 2018-08-10 | 2018-08-10 | 神经网络处理器和用于神经网络处理器的任务调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825502A true CN110825502A (zh) | 2020-02-21 |
CN110825502B CN110825502B (zh) | 2023-01-17 |
Family
ID=69541467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810911674.5A Active CN110825502B (zh) | 2018-08-10 | 2018-08-10 | 神经网络处理器和用于神经网络处理器的任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110825502B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419830A (zh) * | 2021-06-23 | 2021-09-21 | 鹤壁国立光电科技股份有限公司 | 一种基于神经网络的多维度调度方法及系统 |
CN113496275A (zh) * | 2020-04-08 | 2021-10-12 | 北京地平线机器人技术研发有限公司 | 指令执行方法、装置和电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160335119A1 (en) * | 2015-05-12 | 2016-11-17 | minds.ai inc | Batch-based neural network system |
CN106557471A (zh) * | 2015-09-24 | 2017-04-05 | 上海汽车集团股份有限公司 | 任务调度方法及装置 |
CN107704922A (zh) * | 2017-04-19 | 2018-02-16 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
US20180081715A1 (en) * | 2016-09-16 | 2018-03-22 | Advanced Micro Devices, Inc. | Network interface controller-based scheduling of processing tasks in a distributed computing system |
CN107888669A (zh) * | 2017-10-31 | 2018-04-06 | 武汉理工大学 | 一种基于深度学习神经网络的大规模资源调度系统及方法 |
CN108037993A (zh) * | 2017-11-07 | 2018-05-15 | 大国创新智能科技(东莞)有限公司 | 基于大数据和深度学习神经网络的云计算调度方法及系统 |
-
2018
- 2018-08-10 CN CN201810911674.5A patent/CN110825502B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160335119A1 (en) * | 2015-05-12 | 2016-11-17 | minds.ai inc | Batch-based neural network system |
CN106557471A (zh) * | 2015-09-24 | 2017-04-05 | 上海汽车集团股份有限公司 | 任务调度方法及装置 |
US20180081715A1 (en) * | 2016-09-16 | 2018-03-22 | Advanced Micro Devices, Inc. | Network interface controller-based scheduling of processing tasks in a distributed computing system |
CN107704922A (zh) * | 2017-04-19 | 2018-02-16 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107888669A (zh) * | 2017-10-31 | 2018-04-06 | 武汉理工大学 | 一种基于深度学习神经网络的大规模资源调度系统及方法 |
CN108037993A (zh) * | 2017-11-07 | 2018-05-15 | 大国创新智能科技(东莞)有限公司 | 基于大数据和深度学习神经网络的云计算调度方法及系统 |
Non-Patent Citations (1)
Title |
---|
郭兵等: "基于BP神经网络的处理器节能技术研究", 《工程科学与技术》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113496275A (zh) * | 2020-04-08 | 2021-10-12 | 北京地平线机器人技术研发有限公司 | 指令执行方法、装置和电子设备 |
CN113496275B (zh) * | 2020-04-08 | 2023-07-25 | 北京地平线机器人技术研发有限公司 | 指令执行方法、装置和电子设备 |
CN113419830A (zh) * | 2021-06-23 | 2021-09-21 | 鹤壁国立光电科技股份有限公司 | 一种基于神经网络的多维度调度方法及系统 |
CN113419830B (zh) * | 2021-06-23 | 2023-02-03 | 鹤壁国立光电科技股份有限公司 | 一种基于神经网络的多维度调度方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110825502B (zh) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9501318B2 (en) | Scheduling and execution of tasks based on resource availability | |
CN110389816B (zh) | 用于资源调度的方法、装置以及计算机可读介质 | |
CN110308982B (zh) | 一种共享内存复用方法及装置 | |
CN104714785A (zh) | 任务调度装置、方法及并行处理数据的设备 | |
CN108205469B (zh) | 一种基于MapReduce的资源分配方法及服务器 | |
CN109840149B (zh) | 任务调度方法、装置、设备及存储介质 | |
EP2738675B1 (en) | System and method for efficient resource management of a signal flow programmed digital signal processor code | |
WO2023082575A1 (zh) | 一种面向神经网络模型计算的图执行流水并行方法和装置 | |
CN111708639A (zh) | 任务调度系统及方法、存储介质及电子设备 | |
CN116467061B (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
CN114217966A (zh) | 基于资源调整的深度学习模型动态批处理调度方法和系统 | |
CN110825502B (zh) | 神经网络处理器和用于神经网络处理器的任务调度方法 | |
CN114637536A (zh) | 任务处理方法、计算协处理器、芯片及计算机设备 | |
CN111767121A (zh) | 运算方法、装置及相关产品 | |
US11481250B2 (en) | Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values | |
CN107832154B (zh) | 一种多进程处理方法、处理装置及应用 | |
CN115775199A (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
EP3343370A1 (en) | Method of processing opencl kernel and computing device therefor | |
CN115564635A (zh) | 一种gpu资源调度方法、装置、电子设备及存储介质 | |
CN112114967A (zh) | 一种基于服务优先级的gpu资源预留方法 | |
CN111782482B (zh) | 接口压力测试方法及相关设备 | |
CN118132279B (zh) | 任务处理方法、装置、电子设备和计算机可读存储介质 | |
CN116185670B (zh) | 内存间的数据交换方法、装置、电子设备及存储介质 | |
US20240311199A1 (en) | Software-defined compute unit resource allocation mode | |
CN110968418A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210930 Address after: Baidu building, No. 10, Shangdi 10th Street, Haidian District, Beijing 100086 Applicant after: Kunlun core (Beijing) Technology Co.,Ltd. Address before: 2 / F, baidu building, 10 Shangdi 10th Street, Haidian District, Beijing 100085 Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |