CN116627614A - 任务同步方法、处理器、设备、存储介质及程序产品 - Google Patents
任务同步方法、处理器、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN116627614A CN116627614A CN202310667564.XA CN202310667564A CN116627614A CN 116627614 A CN116627614 A CN 116627614A CN 202310667564 A CN202310667564 A CN 202310667564A CN 116627614 A CN116627614 A CN 116627614A
- Authority
- CN
- China
- Prior art keywords
- task
- target
- sub
- kernel
- target kernel
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000004891 communication Methods 0.000 claims abstract description 62
- 230000001360 synchronised effect Effects 0.000 claims abstract description 60
- 230000004044 response Effects 0.000 claims abstract description 7
- 238000004590 computer program Methods 0.000 claims description 16
- 238000013528 artificial neural network Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000000694 effects Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
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
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Architecture (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Multi Processors (AREA)
Abstract
本申请提供的一种任务同步方法、处理器、设备、存储介质及程序产品,其中,处理器包括同步装置和多个内核,每个内核包括通信单元、以及与通信单元连接的多个子计算单元。该方法包括:响应于任务同步指令,目标内核通过目标内核中的多个子计算单元执行任务同步指令对应的目标任务,目标内核在执行完目标任务后,通过目标内核中的通信单元向同步装置发送任务完成信号,在同步装置接收目标内核发送的任务完成信号后,向目标内核发送唤醒信号,唤醒信号用于指示目标内核可用于执行其它任务。本申请通过同步装置对多个内核进行管理,不需要内核间互连线,极大简化了硬件架构,对布局布线较友好,同时减少了同步程序设计的复杂度。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种任务同步方法、处理器、设备、存储介质及程序产品。
背景技术
目前,使用神经网络处理器(Neural-network Processing Unit,NPU)加速的AI视觉芯片已被广泛地应用于大数据、智能驾驶和图像处理等领域。随着神经网络对算力的要求越来越高,可以通过多核NPU对神经网络进行处理。
多核NPU通常包含多组控制核心,将计算任务部署在多核上并行计算以提高算力,而多核NPU在设计中广泛存在数据竞争、资源竞争等问题,然而,如何实现多核NPU的任务的同步执行,以避免多核之间的数据竞争和资源竞争,是一个亟待解决的问题。
发明内容
本申请提供一种任务同步方法、处理器、设备、存储介质及程序产品,用以解决实现多核NPU的任务的同步执行时,多核之间的数据竞争和资源竞争的问题。
第一方面,本申请提供一种任务同步方法,应用于多核神经网络处理器NPU中,所述多核NPU包括同步装置和多个内核,每个内核包括通信单元、以及与所述通信单元连接的多个子计算单元,所述同步装置分别与所述多个内核的通信单元连接;所述方法包括:
响应于任务同步指令,目标内核通过所述目标内核中的多个子计算单元执行所述任务同步指令对应的目标任务,所述多个内核包括所述目标内核,所述目标内核的数量为N,所述N为大于1的整数;
所述目标内核在执行完所述目标任务后,通过所述目标内核中的通信单元向所述同步装置发送任务完成信号;
在所述同步装置接收N个所述目标内核发送的N个任务完成信号后,向N个所述目标内核发送唤醒信号,所述唤醒信号用于指示所述目标内核可用于执行其它任务。
在一种可能的实现方式中,响应于任务同步指令,目标内核通过所述目标内核中的多个子计算单元执行所述任务同步指令对应的目标任务,包括:
响应于所述任务同步指令,所述目标内核确定所述目标任务对应的多个子任务;
所述目标内核在所述多个子任务中,确定所述目标内核中各子计算单元对应的子任务;
所述目标内核通过各子计算单元执行对应的子任务。
在一种可能的实现方式中,所述目标内核通过各子计算单元执行对应的子任务,包括:
所述目标内核获取任务列表,所述任务列表中包括所述任务同步指令;
所述目标内核确定所述任务同步指令的执行时刻;
所述目标内核在所述执行时刻,通过各子计算单元执行对应的子任务。
在一种可能的实现方式中,针对所述目标内核中的任意一个子计算单元;所述目标内核在所述执行时刻,通过所述子计算单元执行对应的子任务,包括:
在所述执行时刻,所述目标内核通过目标内核的通信单元向所述子计算单元发送执行指令,所述执行指令用于指示所述子计算单元执行所述子任务;
所述目标内核通过目标内核的通信单元接收所述子计算单元发送的执行完成指令,所述执行完成指令用于指示所述子计算单元执行完成所述子任务。
在一种可能的实现方式中,针对所述目标内核中的任意一个子计算单元;所述目标内核在所述执行时刻,通过所述子计算单元执行对应的子任务,包括:
确定所述子计算单元对应的同步资源;
在所述执行时刻,通过所述同步资源调用所述子计算单元执行对应的子任务。
在一种可能的实现方式中,所述方法还包括:
所述目标内核获取所述目标内核中各子计算单元的任务执行进度,所述任务执行进度为已完成或者未完成;
若所述目标内核中存在子计算单元的任务执行进度为所述未完成,则将所述目标内核中的第一子计算单元的状态设置为等待状态,所述第一子计算单元的任务执行进度为所述已完成;
若所述目标内核中的各子计算单元的任务执行进度分别为所述已完成,则将所述第一子计算单元的状态设置为工作状态。
在一种可能的实现方式中,所述同步装置还包括第一存储单元和第二存储单元;所述第一存储单元和所述第二存储单元分别支持只读的总线访问;
所述第一存储单元用于存储内核执行信息,所述内核执行信息包括当前每个同步资源对应的处于等待状态的内核的内核标识;
所述第二存储单元用于存储同步信息,所述同步信息包括当前每个同步资源对应的未进入等待状态的内核数量。
在一种可能的实现方式中,所述方法还包括:
所述同步装置接收所述任务完成信号,所述任务完成信号中包括所述目标内核的内核标识和同步资源;
根据所述任务完成信号,更新所述第一存储单元和所述第二存储单元中的信息。
第二方面,本申请提供一种多核神经网络处理器NPU,包括:同步装置和多个内核,每个内核包括通信单元、以及与所述通信单元连接的多个子计算单元,所述同步装置分别与所述多个内核的通信单元连接;
目标内核,用于响应于任务同步指令,通过所述目标内核中的多个子计算单元执行所述任务同步指令对应的目标任务,所述多个内核包括所述目标内核,所述目标内核的数量为N,所述N为大于1的整数;
所述目标内核,还用于在执行完所述目标任务后,通过所述目标内核中的通信单元向所述同步装置发送任务完成信号;
所述同步装置,用于在接收N个所述目标内核发送的N个任务完成信号后,向N个所述目标内核发送唤醒信号,所述唤醒信号用于指示所述目标内核可用于执行其它任务。
在一种可能的实现方式中,所述目标内核具体用于:
响应于所述任务同步指令,所述目标内核确定所述目标任务对应的多个子任务;
所述目标内核在所述多个子任务中,确定所述目标内核中各子计算单元对应的子任务;
所述目标内核通过各子计算单元执行对应的子任务。
在一种可能的实现方式中,所述目标内核具体用于:
所述目标内核获取任务列表,所述任务列表中包括所述任务同步指令;
所述目标内核确定所述任务同步指令的执行时刻;
所述目标内核在所述执行时刻,通过各子计算单元执行对应的子任务。
在一种可能的实现方式中,针对所述目标内核中的任意一个子计算单元;所述目标内核具体用于:
在所述执行时刻,所述目标内核通过目标内核的通信单元向所述子计算单元发送执行指令,所述执行指令用于指示所述子计算单元执行所述子任务;
所述目标内核通过目标内核的通信单元接收所述子计算单元发送的执行完成指令,所述执行完成指令用于指示所述子计算单元执行完成所述子任务。
在一种可能的实现方式中,针对所述目标内核中的任意一个子计算单元;所述目标内核具体用于:
确定所述子计算单元对应的同步资源;
在所述执行时刻,通过所述同步资源调用所述子计算单元执行对应的子任务。
在一种可能的实现方式中,所述目标内核还用于:
所述目标内核获取所述目标内核中各子计算单元的任务执行进度,所述任务执行进度为已完成或者未完成;
若所述目标内核中存在子计算单元的任务执行进度为所述未完成,则将所述目标内核中的第一子计算单元的状态设置为等待状态,所述第一子计算单元的任务执行进度为所述已完成;
若所述目标内核中的各子计算单元的任务执行进度分别为所述已完成,则将所述第一子计算单元的状态设置为工作状态。
在一种可能的实现方式中,所述同步装置还包括第一存储单元和第二存储单元;所述第一存储单元和所述第二存储单元分别支持只读的总线访问;
所述第一存储单元用于存储内核执行信息,所述内核执行信息包括当前每个同步资源对应的处于等待状态的内核的内核标识;
所述第二存储单元用于存储同步信息,所述同步信息包括当前每个同步资源对应的未进入等待状态的内核数量。
在一种可能的实现方式中,所述同步装置还用于:
所述同步装置接收所述任务完成信号,所述任务完成信号中包括所述目标内核的内核标识和同步资源;
根据所述任务完成信号,更新所述第一存储单元和所述第二存储单元中的信息。
第三方面,本申请提供一种电子设备,所述电子设备包括:如权利要求9所述的多核NPU,以及与所述多核NPU通信连接的存储器;
所述存储器存储计算机执行指令;
所述多核NPU执行所述存储器存储的计算机执行指令,以实现如第一方面所述的任务同步方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被计算机执行时用于实现如第一方面所述的任务同步方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,所述计算机程序被计算机执行时用于实现第一方面所述的任务同步方法。
第六方面,本申请实施例提供一种芯片,所述芯片上存储有计算机程序,所述芯片上集成了多核NPU,所述计算机程序被所述多核NPU执行时使得第一方面所述的任务同步方法被执行。
在一种可能的实施方式中,所述芯片为芯片模组中的芯片。
第七方面,本申请实施例提供一种模组设备,所述模组设备包括电源模组、存储模组以及芯片模组;
其中,所述电源模组用于为所述模组设备提供电能;
所述存储模组用于存储数据和指令;
所述芯片模组用于执行第一方面所述的任务同步方法。
第八方面,本申请提供一种片上系统SOC,所述SOC存储有计算机程序,所述SOC集成了多核NPU,所述计算机程序被所述多核NPU执行时使得第一方面所述的任务同步方法被执行。
本申请提供的一种任务同步方法、处理器、设备、存储介质及程序产品,其中,多核NPU包括同步装置和多个内核,每个内核包括通信单元、以及与通信单元连接的多个子计算单元,同步装置分别与多个内核的通信单元连接。响应于任务同步指令,N个目标内核通过目标内核中的多个子计算单元执行任务同步指令对应的目标任务,N个目标内核在执行完目标任务后,通过目标内核中的通信单元向同步装置发送任务完成信号,在同步装置接收N个目标内核发送的N个任务完成信号后,向N个目标内核发送唤醒信号,唤醒信号用于指示目标内核可用于执行其它任务。本申请通过同步装置对多个内核进行管理,不需要内核间互连线,极大简化了硬件架构,对布局布线较友好,同时减少了同步程序设计的复杂度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请提供的一种多核NPU的结果示意图;
图2为本申请提供的一种同步装置的结构示意图;
图3为本申请实施例提供的一种任务同步方法的流程示意图;
图4为本申请实施例提供的另一种任务同步方法的流程示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
多核NPU通常包含多组控制核心,并将计算任务部署在多核上并行计算以提高算力,多核NPU设计中广泛存在数据竞争、资源竞争等问题。需要一种机制保障内核间计算过程同步以避免上述问题。对于每个内核,每个内核通常包含若干个子计算单元,在计算过程同步时,若干个子计算单元的运行状态需要通过内核进行控制。
目前,对于多个内核之间的同步,多个内核之间可以通过线连接,以实现多个内核之间的任务同步,而且依赖于主核的概念,限制了同步程序设计的自由度,同时提高了布局布线的难度。
而且对于内核中的子计算单元,目前未实现在内核与子计算单元之间的同步信号的传递,使得上述同步方式无法适用于现有的多核NPU架构。
所以,本申请提供一种任务同步方法,通过增加同步装置、以及内核中的通信单元,通过同步装置对多个内核的同步进行管理,内核可以通过其通信单元与子计算单元进行状态的交互,使得内核可以确定其对应的各个子计算单元的任务执行状态,在确定各个子计算单元均完成对应任务的子任务后,向同步装置发送任务完成信号,使得同步装置可以基于任务完成信号,控制内核可以继续执行其他任务。本申请通过同步装置对多个内核进行管理,不需要内核间互连线,极大简化了硬件架构,对布局布线较友好,同时减少了同步程序设计的复杂度。
示例性的,下面结合图1的示例,对本申请实施例的多核NPU进行说明。
图1为本申请提供的一种多核NPU的结果示意图,请参见图1,多核NPU10包括:同步装置101、内核102、内核103和内核104,每个内核中包括通信单元和多个子计算单元。可以理解,多核NPU可以包括多个内核,图中仅示出3个。
同步装置101与内核102、内核103和内核104中的通信单元连接,每个内核通过通信单元与多个子计算单元连接。在一种可能的实现方式中,这里说的连接可以是通过布线以实现电连接,还可以是其他连接方式,本申请对此不作限制。
在一种可能的实现方式中,同步装置101的结构可以如图2所示,图2为本申请提供的一种同步装置的结构示意图。请参加图2,同步装置101可以包括同步信息接收模块1011、同步信息存储模块1012以及同步释放驱动模块1013,其中,同步信息接收模块1011用于接收多个内核中的目标内核的通信单元发送的任务完成信号,然后通过同步释放驱动模块1013向目标内核的通信单元发送唤醒信号,以指示目标内核可用于执行其他任务。
在一种可能的实现方式中,同步信息存储模块1012可以包括第一存储单元和第二存储单元,其中,第一存储单元和第二存储单元均支持只读的总线访问。
第一存储单元可以用于存储内核执行信息,内核执行信息包括当前每个同步资源对应的,处于等待状态的内核的内核标识。使得其他设备可以通过访问第一存储单元获取内核是否已经完成了一组计算任务,到达同步位置,处于等待状态。其中,对于一组计算任务的理解可以是:每个同步资源用于完成一组计算任务,即多个内核在一个同步资源上同步完成的一组任务。
第二存储单元用于存储同步信息,同步信息包括当前每个同步资源对应的未进入等待状态的内核数量。使得其他设备可以通过访问第二存储单元确定当前同步资源下,还有多少个内核未完成计算任务,未到达同步位置。
在一种可能的实现方式中,同步装置101可以基于同步信息进行参数化配置,以实现对多核NPU10中多个内核的同步控制。
需要说明的是,同步装置101可以通过软件实现,也可以通过软件和硬件结合的方式实现。每个内核中的通信单元可以通过软件实现,也可以通过软件和硬件结合的方式实现,本申请对此不作限定。
在一种可能的实现方式中,多核NPU可以集成在片上系统(System on Chip,SOC)上,也可以集成在专用集成芯片(Application Specific Integrated Circuit,ASIC)上,本申请对此不作限定。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立存在,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图3为本申请实施例提供的一种任务同步方法的流程示意图,本申请实施例的执行主体可以是图1中的多核NPU10,也可以是多核NPU10集成在的设备执行,该设备可以是SOC、也可以是芯片或者芯片模组等,参考图3,以下以执行主体为目标内核为例进行说明,目标内核是多核内核中的N个内核,其中,N为大于1的整数,该方法包括如下步骤:
S301、响应于任务同步指令,目标内核通过目标内核中的多个子计算单元执行任务同步指令对应的目标任务。
响应于任务同步指令,目标内核通过目标内核中的多个子计算单元执行任务同步指令对应的目标任务。
示例性的,任务同步指令可以在目标内核的任务列表中存在,使得目标内核按照任务列表执行任务时,执行任务同步指令后,以通过目标内核中的多个子计算单元执行目标任务。
对于任务列表,例如可以表示为以下表一的形式:
表1
Task_i_1() |
Task_i_2() |
…… |
Task_i_n() |
…… |
其中,Task_i_j()表示内核i的第j个任务,j从1至n取值
对于每个任务,可以表示为以下表二的形式:
表2
其中,op_1和op_2为该任务中的其他执行指令,op_last为该任务中最后一条计算指令,也是需要同步的位置。
sync(ID,COUNT)为任务同步指令,编译工具可以将其转化为对应指令。其中,ID表示同步资源的资源号,COUNT为本次参与目标任务的同步执行的目标内核的数量。
S302、目标内核在执行完目标任务后,通过目标内核中的通信单元向同步装置发送任务完成信号。
目标内核在执行完目标任务后,可以通过目标内核中的通信单元向同步装置发送任务完成信号。
在一种可能的实现方式中,N个目标内核的通信单元向同步装置发送任务完成信号可以部署一致的,也可以是不一致的,即存在先后顺序,同步装置在接收到N个目标内核中的部分目标内核发送的任务完成信号后,需要等待其他目标内核完成任务完成信号的发送。
S303、在同步装置接收N个目标内核发送的N个任务完成信号后,向N个目标内核发送唤醒信号,唤醒信号用于指示目标内核可用于执行其它任务。
同步装置在接收到N个目标内核发送的N个任务完成信号后,可以向N个内核发送唤醒信号,该唤醒信号用于指示目标内核可用于执行其它任务。即目标内核可以继续执行后续指令。
在一种可能的实现方式中,目标内核可以通过目标内核的通信单元可以将该唤醒信号发送至多个子计算单元,使其恢复指令的计算。
在本实施例中,响应于任务同步指令,N个目标内核通过目标内核中的多个子计算单元执行任务同步指令对应的目标任务,N个目标内核在执行完目标任务后,通过目标内核中的通信单元向同步装置发送任务完成信号,在同步装置接收N个目标内核发送的N个任务完成信号后,向N个目标内核发送唤醒信号,唤醒信号用于指示目标内核可用于执行其它任务。本申请通过同步装置对多个内核进行管理,不需要内核间互连线,极大简化了硬件架构,对布局布线较友好,同时减少了同步程序设计的复杂度。
下面,通过又一个实施例对本申请一个的另一种任务同步方法进行说明。
图4为本申请实施例提供的另一种任务同步方法的流程示意图,本申请实施例的执行主体可以是图1中的多核NPU10,也可以是多核NPU10集成在的设备执行,该设备可以是SOC、也可以是芯片或者芯片模组等,参考图4,以下以执行主体为目标内核为例进行说明,目标内核是多核内核中的N个内核,其中,N为大于1的整数,该方法包括如下步骤:
S401、响应于任务同步指令,目标内核确定目标任务对应的多个子任务。
响应于任务同步指令,目标内核可以确定目标任务对应的多个子任务。也就是说,目标任务的多个运算,可以分为多个子任务,使得分配到不同功能的子计算单元完成相应的运算。
示例性的,多个子任务可以包括以下一种或多种:矩阵相关的运算、向量相关的运算、标量数据运算等,可以理解,对应的子计算单元可以是矩阵计算单元或者累加器、向量计算单元、标量计算单元等。
S402、目标内核在多个子任务中,确定目标内核中各子计算单元对应的子任务。
示例性的,目标内核可以根据子任务的类型,从多个子计算单元中确定相应的子计算单元。以在多个子任务中,确定目标内核中各子计算单元对应的子任务。
S403、目标内核获取任务列表,任务列表中包括任务同步指令。
在一种可能的实现方式中,目标内核可以获取任务列表,该任务列表中包括任务同步指令,任务同步指令的形式可以参考上述实施例,这里不再赘述。
可以理解,本申请通过将上述任务同步指令添加到任务列表中,使得多个内核在接收到任务类别后,当任务列表中存在任务同步指令,则表示该内核为用于执行目标任务的目标内核。从而不需要单独指定内核的内核标识才能指定目标内核,给予了同步程序设计足够的自由度。
S404、目标内核确定任务同步指令的执行时刻。
目标内核获取到任务列表后,可以确定任务同步指令的执行时刻,也就是说,目标内核可以执行任务列表中的任务,当执行到任务同步指令时,确定该时刻为任务同步指令的执行时刻。
S405、目标内核在执行时刻,通过各子计算单元执行对应的子任务。
目标内核可以在执行时刻,通过各子计算单元执行对应的子任务。
具体的,对于目标内核中的任意一个子计算单元,在该执行时刻,目标内核可以通过目标内核的通信单元向子计算单元发送执行指令,该执行指令用于指示子计算单元执行其对应的子任务。
然后目标内核可以通过目标内核的通信单元接收该子计算单元发送的执行完成指令,执行完成指令用于指示子计算单元执行完成的子任务。
在一种可能的实现方式中,目标内核的多个子计算单元向该通信单元发送执行完成指令可以部署一致的,也可以是不一致的,即存在先后顺序,目标内核的通信单元在接收到多个子计算单元中的部分子计算单元发送的任务完成指令后,可以等待其他子计算单元完成任务完成指令的发送,再向同步装置发送任务完成信号。
具体的,可以获取目标内核中各子计算单元的任务执行进度,该任务执行进度为已完成或者未完成,若目标内核中存在子计算单元的任务执行进度为未完成,则将目标内核中的第一子计算单元的状态设置为等待状态,第一子计算单元的任务执行进度为已完成。
若目标内核中的各子计算单元的任务执行进度分别为已完成,则将第一子计算单元的状态设置为工作状态,即解除等待。
示例性的,目标内核可以在接收到第一子计算单元发送的任务完成信号后,获取目标内核中各子计算单元的任务执行进度,以确定目标内核中除了第一子计算单元之外的其他子计算单元是否执行完成。
在一种可能的实现方式中,针对目标内核中的任意一个子计算单元,目标内核在执行时刻通过子计算单元执行对应的子任务时,可以通过确定子计算单元对应的同步资源。可以理解,在同步任务的执行中,N个目标内核在一个同步资源上同步执行目标任务。
具体的,目标内核可以获取目标任务的同步资源的资源号,然后目标内核在执行时刻,通过同步资源调用子计算单元执行对应的子任务,即目标内核在执行时刻,通过子计算单元在该资源号对应的同步资源上执行对应的子任务。
S406、目标内核在执行完目标任务后,通过目标内核中的通信单元向同步装置发送任务完成信号。
S407、在同步装置接收N个目标内核发送的N个任务完成信号后,向N个目标内核发送唤醒信号,唤醒信号用于指示目标内核可用于执行其它任务。
对于S406和S407的相关描述,可以参考上述实施例。
对于同步装置,同步装置中可以包括存储单元,具体的,可以有以下几种可能的实现方式:
在一种可能的实现方式中,同步装置可以包括第一存储单元和第二存储单元,其中,第一存储单元和第二存储单元均支持只读的总线访问。
第一存储单元用于存储内核执行信息,内核执行信息包括当前每个同步资源对应的,处于等待状态的内核的内核标识。示例性的,内核标识可以是核号,使得其他设备可以通过访问第一存储单元获取内核是否已经完成了一组计算任务,到达同步位置,处于等待状态。
第二存储单元用于存储同步信息,同步信息包括当前每个同步资源对应的未进入等待状态的内核数量。使得其他设备可以通过访问第二存储单元获取当前同步资源下,还有多少个内核未完成计算任务,未到达同步位置。
在一种可能的实现方式中,同步装置可以包括存储单元,即同步装置中可以仅设置一个存储单元,以节省空间,通过一个存储单元对内核执行信息和/或同步信息进行存储,示例性的,可以通过对存储单元的参数进行设置,以实现对存储单元的功能设置,例如,通过修改存储单元容量,实现不同同步资源数量的设定。
示例性的,也可以通过对第一存储单元和第二存储单元的参数进行设置,以第一存储单元为例,可以设置第一存储单元的访问方式,以确定第一存储单元的实际功能,当第一存储单元的访问方式为只读的总线访问,则第一存储单元可以用于存储内核执行信息,当第一存储单元的访问方式为非只读的总线访问,则该第一存储单元支持外部设备手动修改释放处于等待状态的内核用于调试。
在一种可能的实现方式中,目标内核在执行完目标任务后,同步装置可以接收到任务完成信号,任务完成信号中包括目标内核的内核标识和同步资源。目标内核可以根据任务完成信号,更新第一存储单元和第二存储单元中的信息。
在本实施例中,响应于任务同步指令,确定目标任务对应的多个子任务,目标内核在多个子任务中,确定目标内核中各子计算单元对应的子任务。然后目标内核获取任务列表,任务列表中包括任务同步指令,目标内核确定任务同步指令的执行时刻,并在执行时刻,通过各子计算单元执行对应的子任务。N个目标内核在执行完目标任务后,通过目标内核中的通信单元向同步装置发送任务完成信号,在同步装置接收N个目标内核发送的N个任务完成信号后,向N个目标内核发送唤醒信号,唤醒信号用于指示目标内核可用于执行其它任务。本申请通过同步装置对多个内核进行管理,不需要内核间互连线,极大简化了硬件架构,对布局布线较友好,同时减少了同步程序设计的复杂度。
本申请实施例提供的一种多核神经网络处理器,请参考图1,包括:同步装置101和多个内核,每个内核包括通信单元、以及与通信单元连接的多个子计算单元,同步装置101分别与多个内核的通信单元连接。
目标内核,用于响应于任务同步指令,通过目标内核中的多个子计算单元执行任务同步指令对应的目标任务,多个内核包括目标内核,目标内核的数量为N,N为大于1的整数。
目标内核,还用于在执行完目标任务后,通过目标内核中的通信单元向同步装置101发送任务完成信号。
同步装置101,用于在接收N个目标内核发送的N个任务完成信号后,向N个目标内核发送唤醒信号,唤醒信号用于指示目标内核可用于执行其它任务。
在一种可能的实现方式中,目标内核具体用于:
响应于任务同步指令,目标内核确定目标任务对应的多个子任务。
目标内核在多个子任务中,确定目标内核中各子计算单元对应的子任务。
目标内核通过各子计算单元执行对应的子任务。
在一种可能的实现方式中,目标内核具体用于:
目标内核获取任务列表,任务列表中包括任务同步指令。
目标内核确定任务同步指令的执行时刻。
目标内核在执行时刻,通过各子计算单元执行对应的子任务。
在一种可能的实现方式中,针对目标内核中的任意一个子计算单元,目标内核具体用于:
在执行时刻,目标内核通过目标内核的通信单元向子计算单元发送执行指令,执行指令用于指示子计算单元执行子任务。
目标内核通过目标内核的通信单元接收子计算单元发送的执行完成指令,执行完成指令用于指示子计算单元执行完成子任务。
在一种可能的实现方式中,针对目标内核中的任意一个子计算单元,目标内核具体用于:
确定子计算单元对应的同步资源;
在执行时刻,通过同步资源调用子计算单元执行对应的子任务。
在一种可能的实现方式中,目标内核还用于:
目标内核获取目标内核中各子计算单元的任务执行进度,任务执行进度为已完成或者未完成。
若目标内核中存在子计算单元的任务执行进度为未完成,则将目标内核中的第一子计算单元的状态设置为等待状态,第一子计算单元的任务执行进度为已完成。
若目标内核中的各子计算单元的任务执行进度分别为已完成,则将第一子计算单元的状态设置为工作状态。
在一种可能的实现方式中,同步装置101还包括第一存储单元和第二存储单元,第一存储单元和第二存储单元分别支持只读的总线访问。
第一存储单元用于存储内核执行信息,内核执行信息包括当前每个同步资源对应的处于等待状态的内核的内核标识。
第二存储单元用于存储同步信息,同步信息包括当前每个同步资源对应的未进入等待状态的内核数量。
在一种可能的实现方式中,同步装置101还用于:
同步装置101接收任务完成信号,任务完成信号中包括目标内核的内核标识和同步资源。
根据任务完成信号,更新第一存储单元和第二存储单元中的信息。
本实施例的多核神经网络处理器,可用于执行上述方法实施例的技术方案,具体实现方式和技术效果类似,这里不再赘述。
示例性的,上述目标内核可以是内核1(内核102)、内核2(内核103)、…、内核N(内核104)中的至少两个。
图5为本申请实施例提供的一种电子设备的结构示意图,如图5所示,电子设备50可以包括:至少一个处理器501和存储器502。
存储器502,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机执行指令。
存储器502可能包含随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储器(Non-volatile Memory),例如至少一个磁盘存储器。
处理器501用于执行存储器502存储的计算机执行指令,以实现前述方法实施例所描述的方法。其中,处理器可以是多核神经网络处理器,该处理器的结构示意图可以参考图1,具体可参考上述实施例。
可选的,电子设备50还可以包括:通信接口503。在具体实现上,如果通信接口503、存储器502和处理器501独立实现,则通信接口503、存储器502和处理器501可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry StandardArchitecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口503、存储器502和处理器501集成在一块芯片上实现,则通信接口503、存储器502和处理器501可以通过内部接口完成通信。
电子设备50可以为芯片、芯片模组、SOC、智能家居设备、智能穿戴设备、智能车辆等。
本实施例的电子设备,可用于执行上述方法实施例的技术方案,具体实现方式和技术效果类似,这里不再赘述。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、RAM、磁盘或者光盘等各种可以存储计算机执行指令的介质,具体的,该计算机可读存储介质中存储有计算机执行指令,该计算机执行指令被计算机执行时使得上述方法实施例所示的技术方案被执行,具体实现方式和技术效果类似,这里不再赘述。
本申请实施例提供一种计算机程序产品,包括计算机程序,计算机程序被计算机执行时,使得上述方法实施例所示的技术方案被执行,具体实现方式和技术效果类似,这里不再赘述。
本申请实施例提供一种芯片,芯片上存储有计算机程序,计算机程序被芯片执行时,使得上述方法实施例所示的技术方案被执行。
在一种可能的实现方式中,芯片还可以为芯片模组。
本实施例的芯片可用于执行上述方法实施例所示的技术方案,具体实现方式和技术效果类似,这里不再赘述。
本申请实施例提供一种模组设备,该模组设备包括电源模组、存储模组以及芯片模组。
其中,电源模组用于为模组设备提供电能。
存储模组用于存储数据和指令。
本实施例的芯片模组可用于执行上述方法实施例所示的技术方案,具体实现方式和技术效果类似,这里不再赘述。
本申请实施例提供一种片上系统SOC,SOC存储有计算机程序,SOC集成了多核NPU,计算机程序被多核NPU执行时使得上述方法实施例所示的技术方案被执行。
本实施例的SOC可用于执行上述方法实施例所示的技术方案,具体实现方式和技术效果类似,这里不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
本申请中“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,表示前后关联对象是一种“或”的关系。
“以下至少一(项)个”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a、b和c,其中a、b、c中的每一个本身可以是元素,也可以是包含一个或多个元素的集合。
本申请中“至少一个”是指一个或多个。“多个”是指两个或两个以上。本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。例如,第一阈值和第二阈值,只是为了区分不同的阈值,而并不是表示这两个阈值的大小、优先级或者重要程度等的不同。
在本申请中,“示例的”“在一些实施例中”“在另一些实施例中”等用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请中“的(of)”、“相应的(corresponding,relevant)”、“对应的(corresponding)”、“关联的”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。本申请实施例中通信、传输有时可以混用,应当指出的是,在不强调区别是,其所表达的含义是一致的。例如传输可以包括发送和/或接收,可以为名词,也可以是动词。
本申请中“等于”可以与“小于”连用,也可以与“大于”连用,但不同时与“小于”和“大于”连用。当“等于”与“小于”连用时,适用于“小于”所采用的技术方案。当“等于”与“大于”连用时,适用于“大于”所采用的技术方案。
Claims (12)
1.一种任务同步方法,其特征在于,应用于多核神经网络处理器NPU中,所述多核NPU包括同步装置和多个内核,每个内核包括通信单元、以及与所述通信单元连接的多个子计算单元,所述同步装置分别与所述多个内核的通信单元连接;所述方法包括:
响应于任务同步指令,目标内核通过所述目标内核中的多个子计算单元执行所述任务同步指令对应的目标任务,所述多个内核包括所述目标内核,所述目标内核的数量为N,所述N为大于1的整数;
所述目标内核在执行完所述目标任务后,通过所述目标内核中的通信单元向所述同步装置发送任务完成信号;
在所述同步装置接收N个所述目标内核发送的N个任务完成信号后,向N个所述目标内核发送唤醒信号,所述唤醒信号用于指示所述目标内核可用于执行其它任务。
2.根据权利要求1所述的方法,其特征在于,响应于任务同步指令,目标内核通过所述目标内核中的多个子计算单元执行所述任务同步指令对应的目标任务,包括:
响应于所述任务同步指令,所述目标内核确定所述目标任务对应的多个子任务;
所述目标内核在所述多个子任务中,确定所述目标内核中各子计算单元对应的子任务;
所述目标内核通过各子计算单元执行对应的子任务。
3.根据权利要求2所述的方法,其特征在于,所述目标内核通过各子计算单元执行对应的子任务,包括:
所述目标内核获取任务列表,所述任务列表中包括所述任务同步指令;
所述目标内核确定所述任务同步指令的执行时刻;
所述目标内核在所述执行时刻,通过各子计算单元执行对应的子任务。
4.根据权利要求3所述的方法,其特征在于,针对所述目标内核中的任意一个子计算单元;所述目标内核在所述执行时刻,通过所述子计算单元执行对应的子任务,包括:
在所述执行时刻,所述目标内核通过所述目标内核的通信单元向所述子计算单元发送执行指令,所述执行指令用于指示所述子计算单元执行所述子任务;
所述目标内核通过所述目标内核的通信单元接收所述子计算单元发送的执行完成指令,所述执行完成指令用于指示所述子计算单元执行完成所述子任务。
5.根据权利要求3所述的方法,其特征在于,针对所述目标内核中的任意一个子计算单元;所述目标内核在所述执行时刻,通过所述子计算单元执行对应的子任务,包括:
确定所述子计算单元对应的同步资源;
在所述执行时刻,通过所述同步资源调用所述子计算单元执行对应的子任务。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
所述目标内核获取所述目标内核中各子计算单元的任务执行进度,所述任务执行进度为已完成或者未完成;
若所述目标内核中存在子计算单元的任务执行进度为所述未完成,则将所述目标内核中的第一子计算单元的状态设置为等待状态,所述第一子计算单元的任务执行进度为所述已完成;
若所述目标内核中的各子计算单元的任务执行进度分别为所述已完成,则将所述第一子计算单元的状态设置为工作状态。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述同步装置还包括第一存储单元和第二存储单元;所述第一存储单元和所述第二存储单元分别支持只读的总线访问;
所述第一存储单元用于存储内核执行信息,所述内核执行信息包括当前每个同步资源对应的处于等待状态的内核的内核标识;
所述第二存储单元用于存储同步信息,所述同步信息包括当前每个同步资源对应的未进入等待状态的内核数量。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述同步装置接收所述任务完成信号,所述任务完成信号中包括所述目标内核的内核标识和同步资源;
根据所述任务完成信号,更新所述第一存储单元和所述第二存储单元中的信息。
9.一种多核神经网络处理器NPU,其特征在于,包括:同步装置和多个内核,每个内核包括通信单元、以及与所述通信单元连接的多个子计算单元,所述同步装置分别与所述多个内核的通信单元连接;
目标内核,用于响应于任务同步指令,通过所述目标内核中的多个子计算单元执行所述任务同步指令对应的目标任务,所述多个内核包括所述目标内核,所述目标内核的数量为N,所述N为大于1的整数;
所述目标内核,还用于在执行完所述目标任务后,通过所述目标内核中的通信单元向所述同步装置发送任务完成信号;
所述同步装置,用于在接收N个所述目标内核发送的N个任务完成信号后,向N个所述目标内核发送唤醒信号,所述唤醒信号用于指示所述目标内核可用于执行其它任务。
10.一种电子设备,其特征在于,所述电子设备包括:如权利要求9所述的多核NPU,以及与所述多核NPU通信连接的存储器;
所述存储器存储计算机执行指令;
所述多核NPU执行所述存储器存储的计算机执行指令,以实现如权利要求1-8中任一项所述的任务同步方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-8任一项所述的任务同步方法。
12.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的任务同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310667564.XA CN116627614A (zh) | 2023-06-06 | 2023-06-06 | 任务同步方法、处理器、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310667564.XA CN116627614A (zh) | 2023-06-06 | 2023-06-06 | 任务同步方法、处理器、设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116627614A true CN116627614A (zh) | 2023-08-22 |
Family
ID=87591935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310667564.XA Pending CN116627614A (zh) | 2023-06-06 | 2023-06-06 | 任务同步方法、处理器、设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116627614A (zh) |
-
2023
- 2023-06-06 CN CN202310667564.XA patent/CN116627614A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2131278A1 (en) | Scheduling of multiple tasks in a system including multiple computing elements | |
EP0289072A2 (en) | Verfahren zum Betrieb eines Multiprozessorsystems mit Synchronisierungsmitteln zur Feststellung einer globalen binären Aussage und ein Multiprozessor mit Synchronisation zum bestimmen derselben, insbesondere zur Kompaktierung. | |
CN108021449B (zh) | 一种协程实现方法、终端设备及存储介质 | |
CN110297661B (zh) | 基于amp构架dsp操作系统的并行计算方法、系统及介质 | |
DE112013000904T5 (de) | Durchführen von Aktualisierungen von Quellcode, der auf einer Vielzahl von Rechenknoten ausgeführt wird | |
EP4120077A1 (en) | Method for scheduling hardware accelerator, and task scheduler | |
US11941514B2 (en) | Method for execution of computational graph in neural network model and apparatus thereof | |
CN116382880B (zh) | 任务执行方法、装置、处理器、电子设备及存储介质 | |
CN112947857A (zh) | 一种数据搬移方法、装置、设备及计算机可读存储介质 | |
CN112486642A (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
CN111767995B (zh) | 运算方法、装置及相关产品 | |
CN116627614A (zh) | 任务同步方法、处理器、设备、存储介质及程序产品 | |
CN109992539B (zh) | 双主机协同工作装置 | |
KR20210031347A (ko) | 처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체 | |
CN109960571B (zh) | 一种多模块调度方法、装置及系统 | |
CN111258950B (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
US20230067432A1 (en) | Task allocation method, apparatus, electronic device, and computer-readable storage medium | |
CN115775199A (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
CN112506655B (zh) | 一种绘图方法、存储介质及应用服务器 | |
CN114201727A (zh) | 数据的处理方法、处理器、人工智能芯片及电子设备 | |
CN111310638B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
JPS61255461A (ja) | マルチcpu通信装置 | |
CN110618794A (zh) | 一种SSD固件访问NandFlash的方法和系统 | |
CN111258653A (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 |