CN111191777A - 一种神经网络处理器及其控制方法 - Google Patents

一种神经网络处理器及其控制方法 Download PDF

Info

Publication number
CN111191777A
CN111191777A CN201911403452.3A CN201911403452A CN111191777A CN 111191777 A CN111191777 A CN 111191777A CN 201911403452 A CN201911403452 A CN 201911403452A CN 111191777 A CN111191777 A CN 111191777A
Authority
CN
China
Prior art keywords
processor
neural network
core
network processor
task
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
CN201911403452.3A
Other languages
English (en)
Other versions
CN111191777B (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.)
Shenzhen Intellifusion Technologies Co Ltd
Original Assignee
Shenzhen Intellifusion Technologies 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
Application filed by Shenzhen Intellifusion Technologies Co Ltd filed Critical Shenzhen Intellifusion Technologies Co Ltd
Priority to CN201911403452.3A priority Critical patent/CN111191777B/zh
Publication of CN111191777A publication Critical patent/CN111191777A/zh
Priority to PCT/CN2020/124099 priority patent/WO2021129116A1/zh
Priority to US17/623,621 priority patent/US11537862B2/en
Application granted granted Critical
Publication of CN111191777B publication Critical patent/CN111191777B/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/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
    • 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/5044Allocation 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 hardware capabilities
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请属于芯片技术领域,尤其涉及一种神经网络处理器及其控制方法。所述神经网络处理器包括由多个单核神经网络处理器和外围模块构成的神经网络处理器簇;所述外围模块包括主控单元和DMA模块;所述DMA模块用于将第一任务描述符搬运至所述主控单元;所述主控单元用于对所述第一任务描述符进行解析,根据解析结果确定分配至各个选定处理器中的子任务;对所述第一任务描述符进行修改,得到与各个所述选定处理器分别对应的第二任务描述符;将各个第二任务描述符配置给对应的各个所述选定处理器,并启动各个所述选定处理器处理对应的子任务。通过主控单元对各个单核神经网络处理器的统一调度管理,使得神经网络处理器可以充分发挥其运算性能。

Description

一种神经网络处理器及其控制方法
技术领域
本申请属于芯片技术领域,尤其涉及一种神经网络处理器及其控制方法。
背景技术
随着人工智能技术的飞速发展,在各种应用场景下对于神经网络处理器的算力要求也越来越高,单核的神经网络处理器已经难以满足现有的应用需求。在这种情况下,多核的神经网络处理器应运而生,通过多个单核神经网络处理器的并行运算,极大提升了整体算力。但是,在现有技术中,各个单核神经网络处理器之间往往缺乏有效的协调控制,极易导致任务重复配置、漏配以及配置不均的情况出现,难以充分发挥多核神经网络处理器的性能。
发明内容
有鉴于此,本申请实施例提供了一种神经网络处理器及其控制方法,以解决在现有的多核神经网络处理器中,各个单核神经网络处理器之间往往缺乏有效的协调控制,极易导致任务重复配置、漏配以及配置不均的情况出现,难以充分发挥其性能的问题。
本申请实施例的第一方面提供了一种神经网络处理器,所述神经网络处理器包括由N个单核神经网络处理器和外围模块构成的神经网络处理器簇,N为大于1的整数;
所述外围模块包括主控单元和DMA模块;
所述DMA模块用于将第一任务描述符搬运至所述主控单元,所述第一任务描述符用于描述分配至所述神经网络处理器中的任务的信息;
所述主控单元用于对所述第一任务描述符进行解析,根据解析结果确定分配至各个选定处理器中的子任务;对所述第一任务描述符进行修改,得到与各个所述选定处理器分别对应的第二任务描述符;将各个第二任务描述符配置给对应的各个所述选定处理器,并启动各个所述选定处理器处理对应的子任务;所述选定处理器为从N个所述单核神经网络处理器中选取的用于执行所述任务的处理器,所述第二任务描述符用于描述分配至所述选定处理器中的子任务的信息。
进一步地,所述外围模块还可以包括簇接口、信箱模块、总线转发模块、程序存储器和数据存储器;
所述簇接口为所述神经网络处理器簇的从接口,用于所述神经网络处理器簇的外部CPU访问和配置所述外围模块以及每个单核神经网络处理器的内部资源;
所述信箱模块用于存放所述单核神经网络处理器或者所述神经网络处理器簇的配置信息以及运行过程中的状态信息;
所述总线转发模块为所述神经网络处理器簇的顶层AXI请求的收集分发模块,用于收集各个单核神经网络处理器以及所述神经网络处理器簇顶层的主控单元的AXI请求,并将请求经过处理之后发到芯片顶层;
所述程序存储器用于存放所述主控单元的程序;
所述数据存储器用于存放所述主控单元运行过程中产生的数据。
进一步地,所述单核神经网络处理器包括:单核接口、单核信箱模块和总线模块;
所述单核接口为所述单核神经网络处理器的从接口,用于所述神经网络处理器簇的外部CPU或者所述主控单元访问和配置所述单核神经网络处理器的内部资源;
所述单核信箱模块用于存放所述单核神经网络处理器的配置信息以及所述单核神经网络处理器运行过程中的状态信息;
所述总线模块为所述单核神经网络处理器的AXI总线。
进一步地,所述单核神经网络处理器还包括共享参数搬运模块,所述共享参数搬运模块用于将共享的参数从所述单核神经网络处理器外部搬运至所述单核神经网络处理器内部的数据存储器中;
所述总线转发模块中包括与各个单核神经网络处理器分别对应的参数共享逻辑模块,所述参数共享逻辑模块用于进行所述单核神经网络处理器之间参数共享逻辑的判断以及流程控制;
所述参数共享逻辑模块包括命令缓存和数据缓存,所述命令缓存用于缓存所述单核神经网络处理器发出的参数读取命令,所述数据缓存用于缓存所述参数共享逻辑模块读回的数据。
所述神经网络处理器执行预设的计算机程序时实现如下步骤:
获取第一任务描述符,所述第一任务描述符用于描述分配至所述神经网络处理器中的任务的信息;
对所述第一任务描述符进行解析,根据解析结果确定分配至各个选定处理器中的子任务,所述选定处理器为从N个所述单核神经网络处理器中选取的用于执行所述任务的处理器;
对所述第一任务描述符进行修改,得到与各个所述选定处理器分别对应的第二任务描述符,所述第二任务描述符用于描述分配至所述选定处理器中的子任务的信息;
将各个第二任务描述符配置给对应的各个所述选定处理器,并启动各个所述选定处理器处理对应的子任务。
进一步地,在确定分配至各个所述单核神经网络处理器中的子任务之后,还可以包括:
选取一个所述选定处理器作为主核处理器,并将除所述主核处理器之外的其它所述选定处理器均作为从核处理器;
进一步地,在启动各个所述选定处理器处理对应的子任务之后,还可以包括:
将所述主核处理器读取的参数共享至各个所述从核处理器。
进一步地,所述将所述主核处理器读取的参数共享至各个所述从核处理器可以包括:
若接收到所述主核处理器发出的参数读取命令,则将所述参数读取命令缓存至所述主核处理器对应的命令缓存中,并将所述主核处理器对应的标志位设置为第一数值;当所述参数读取命令之前的命令均发出之后,将所述参数读取命令发送至总线;
若接收到任一所述从核处理器发出的参数读取命令,则将所述参数读取命令缓存至所述从核处理器对应的命令缓存中,并将所述从核处理器对应的标志位设置为第二数值;
将读回的参数缓存至所述主核处理器对应的数据缓存中,并将所述主核处理器对应的标志位设置为所述第二数值;
当各个所述选定处理器对应的标志位均为所述第二数值时,从所述主核处理器对应的数据缓存中读取所述参数,并将所述参数广播至各个所述选定处理器。
本申请实施例的第二方面提供了一种神经网络处理器的控制方法,所述方法应用于多核神经网络处理器中,所述多核神经网络处理器包括N个单核神经网络处理器,N为大于1的整数,
所述神经网络处理器为多核神经网络处理器,其中包括N个单核神经网络处理器(Neural Network Processor,NNP),N为大于1的整数,所述方法可以包括:
获取第一任务描述符,所述第一任务描述符用于描述分配至所述多核神经网络处理器中的任务的信息;
对所述第一任务描述符进行解析,根据解析结果确定分配至各个选定处理器中的子任务,所述选定处理器为从N个所述单核神经网络处理器中选取的用于执行所述任务的处理器;
对所述第一任务描述符进行修改,得到与各个所述选定处理器分别对应的第二任务描述符,所述第二任务描述符用于描述分配至所述选定处理器中的子任务的信息;
将各个第二任务描述符配置给对应的各个所述选定处理器,并启动各个所述选定处理器处理对应的子任务。
进一步地,所述对所述第一任务描述符进行修改可以包括:
若所述第一任务描述符中指示的处理模式为多核单批模式,则将所述第一任务描述符中的第一分片信息地址分别修改为各个第二分片信息地址,所述第一分片信息地址为所述多核神经网络处理器的分片信息的地址,所述第二分片信息地址为所述选定处理器的分片信息的地址。
进一步地,在将所述第一任务描述符中的第一分片信息地址分别修改为各个第二分片信息地址之前,所述方法还可以包括:
对所述特征图进行分片切割,得到所述特征图的各个分片;
根据所述选定处理器的数量进行分片分配,确定各个所述选定处理器的分片信息;
将各个所述选定处理器的分片信息存储至指定地址。
进一步地,所述对所述第一任务描述符进行修改还可以包括:
若所述第一任务描述符中指示的处理模式为多核多批模式,则将所述第一任务描述符中的第一输入数据地址分别修改为各个第二输入数据地址,所述第一输入数据地址为所述多核神经网络处理器的输入数据的缓存地址,所述第二输入数据地址为所述选定处理器的输入数据的缓存地址;
将所述第一任务描述符中的第一输出数据地址分别修改为各个第二输出数据地址,所述第一输出数据地址为所述多核神经网络处理器的输出数据的缓存地址,所述第二输出数据地址为所述选定处理器的输出数据的缓存地址。
进一步地,在确定分配至各个所述单核神经网络处理器中的子任务之后,所述方法还可以包括:
选取一个所述选定处理器作为主核处理器,并将除所述主核处理器之外的其它所述选定处理器均作为从核处理器;
进一步地,在启动各个所述选定处理器处理对应的子任务之后,所述方法还可以包括:
将所述主核处理器读取的参数共享至各个所述从核处理器。
进一步地,所述将所述主核处理器读取的参数共享至各个所述从核处理器可以包括:
若接收到所述主核处理器发出的参数读取命令,则将所述参数读取命令缓存至所述主核处理器对应的命令缓存中,并将所述主核处理器对应的标志位设置为第一数值;当所述参数读取命令之前的命令均发出之后,将所述参数读取命令发送至总线;
若接收到任一所述从核处理器发出的参数读取命令,则将所述参数读取命令缓存至所述从核处理器对应的命令缓存中,并将所述从核处理器对应的标志位设置为第二数值;
将读回的参数缓存至所述主核处理器对应的数据缓存中,并将所述主核处理器对应的标志位设置为所述第二数值;
当各个所述选定处理器对应的标志位均为所述第二数值时,从所述主核处理器对应的数据缓存中读取所述参数,并将所述参数广播至各个所述选定处理器。
进一步地,所述获取第一任务描述符可以包括:
通过DMA模块将主控程序搬运至主控单元的程序存储器中;
启动所述主控单元并执行所述主控程序;
通过任务接口接收任务管理器下发的任务通知;
根据所述任务通知配置所述DMA模块,并通过所述DMA模块将指定地址中的所述第一任务描述符搬运至所述主控单元的数据存储器中。
本申请实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种神经网络处理器的控制方法的步骤。
本申请实施例的第四方面提供了一种终端设备,所述终端设备包括上述任一种神经网络处理器。
本申请实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在神经网络处理器上运行时,使得神经网络处理器执行上述任一种神经网络处理器的控制方法的步骤。
本申请实施例与现有技术相比存在的有益效果是:本申请实施例中设置了主控单元来对各个单核神经网络处理器进行有效的协调控制,由该主控单元整体接收DMA模块搬运过来的待处理的任务的信息(也即所述第一任务描述符),对该信息进行统一的解析和任务分配,拆解出各个子任务的信息(也即所述第二任务描述符),并将这些子任务的信息配置给对应的单核神经网络处理器进行处理。通过主控单元对各个单核神经网络处理器的统一调度管理,避免了出现任务重复配置、漏配以及配置不均等情况,使得多核神经网络处理器可以充分发挥其运算性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例中一种神经网络处理器的架构示意图;
图2为本申请实施例中一种神经网络处理器的控制方法的一个实施例流程图;
图3为将将一个特征图进行分片切割的示意图;
图4为数据缓存分配的示意图;
图5为在多核神经网络处理器之间进行参数共享的示意图;
图6为本申请实施例中一种终端设备的示意框图。
具体实施方式
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本申请一部分实施例,而非全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1所示为本申请实施例提供的一种神经网络处理器的架构示意图,所述神经网络处理器为多核神经网络处理器,其中包括N个单核神经网络处理器(Neural NetworkProcessor,NNP),N为大于1的整数。所述多核神经网络处理器可以看作是由这N个单核神经网络处理器以及一些外围模块共同构成的一个神经网络处理器簇(NNP cluster)。
图1中示出了4个单核神经网络处理器,即N=4的情况,但需要注意的是,该图仅为示例,而非具体限定,在实际应用中,所述多核神经网络处理器可以包括更多或者更少的单核神经网络处理器。
以任意一个单核神经网络处理器为例,所述单核神经网络处理器主要用于卷积神经网络(Convolutional Neural Networks,CNN)模型的各层计算。
所述单核神经网络处理器可以包括:单核接口(NSI)、单核信箱模块(Mailbox)和总线模块(NOC)。
其中,NSI是所述单核神经网络处理器的从(slave)接口,用于NNP cluster外部CPU或者NNP cluster顶层的主控单元(CU)访问和配置所述单核神经网络处理器的内部资源;
Mailbox主要用于存放所述单核神经网络处理器的一些配置信息以及所述单核神经网络处理器运行过程中的一些状态信息;
NOC为所述单核神经网络处理器的AXI总线。
所述多核神经网络处理器还可以包括簇接口(CSI)、信箱模块(Mailbox)、总线转发模块(AXI Hub)、主控单元(CU)、程序存储器(PM)、数据存储器(CM)、DMA等外围模块。
其中,CSI为NNP cluster的slave接口,主要用于NNP cluster外部CPU访问和配置NNP cluster中的外围模块以及每个NNP的内部资源;
Mailbox用于存放一些NNP或者NNP cluster的配置信息以及运行过程中的状态信息,同时用于完成与芯片顶层中断控制器以及任务管理模块(task manager)的交互;
AXI Hub为NNP cluster顶层AXI请求的收集分发模块,用于收集各个NNP以及NNPcluster顶层的主控单元的AXI请求,并将请求经过处理之后发到芯片顶层,AXI Hub同时还能够实现多核多批(batch)模式以及多核单批模式下的多核之间的参数共享,降低芯片带宽;
CU为NNP cluster顶层的主控单元,用于进行任务的解析、NNP资源分配等NNPcluster顶层流程控制。其中,CU可以根据任务描述符进行任务的解析,所述任务描述符用于描述分配至所述多核神经网络处理器中的任务的信息
PM为CU的程序存储器,用于存放CU的程序;
CM为CU的数据存储器,用于存放CU运行过程中产生的数据;
DMA为NNP cluster顶层的数据搬运单元,用于CU的主控程序的搬运以及NNPcluster任务描述符(即第一任务描述符)的搬运。
如图2所示,本申请实施例中一种神经网络处理器的控制方法的一个实施例可以包括:
步骤S201、获取第一任务描述符。
NNP cluster启动之后,首先通过芯片顶层的CPU配置NNP cluster内部的DMA模块,通过DMA模块将主控程序从指定的存储器(例如DDR)中搬运至所述主控单元的程序存储器中,当所述主控程序搬运完成之后,启动所述主控单元并执行所述主控程序。之后所述主控单元便进入任务等待状态,此时整个NNP cluster除了所述主控单元以及mailbox模块之外,其它模块都处于不工作状态。任务初始数据准备好之后,芯片顶层CPU会将任务数、任务的上下游模块配置给芯片顶层的task manager,通过task manager完成整个芯片任务的监控。
当某个任务需要使用NNP cluster时,task manager会在上游模块数据准备好后,通过任务接口(task interface)通知NNP cluster,所述主控单元通过所述任务接口接收到task manager下发的任务通知之后,可以根据所述任务通知配置所述DMA模块,并通过所述DMA模块将指定地址中的所述第一任务描述符搬运至所述主控单元的数据存储器中,之后所述主控单元就可以进入描述符解析阶段。
步骤S202、对所述第一任务描述符进行解析,根据解析结果确定分配至各个选定处理器中的子任务。
所述选定处理器为从N个所述单核神经网络处理器中选取的用于执行所述任务的处理器。
所述第一任务描述符用于描述分配至所述多核神经网络处理器中的任务的信息,主要可以包括如下表所示的字段内容:
Figure BDA0002341565640000091
Figure BDA0002341565640000101
所述主控单元在获取到所述第一任务描述符之后,需要对任务描述符进行解析。此时主要解析batch_size以及core_num,这两个任务描述符信息主要用来决定该任务需要的NNP核的数量。batch_size不等于1的情况下,batch_size就是需要用到的NNP的核数,batch_size等于1的情况下,core_num就是需要用到的NNP的核数。确定需要的NNP核数量之后,所述主控单元需要结合当前NNP cluster内部每个NNP的状态进行资源划分,将空闲的NNP按照一定的分配原则分配给当前任务。如果空闲NNP核数少于需要的NNP核数,则所述主控单元需要等待,直到有足够NNP核空闲,才能再进行NNP核的任务分配。
步骤S203、对所述第一任务描述符进行修改,得到与各个所述选定处理器分别对应的第二任务描述符。
所述第二任务描述符用于描述分配至所述选定处理器中的子任务的信息。
任务分配完成之后,所述主控单元需要将NNP cluster的描述符(即所述第一任务描述符)进行适当修改,转变为每个NNP的描述符(即所述第二任务描述符)。NNP cluster描述符转变为NNP描述符,主要有以下几点信息需要修改:
1、对于分片信息地址(tile_info_addr)的修改:
若所述第一任务描述符中指示的处理模式为多核单批模式(即batch_size=1且core_num!=1),则将所述第一任务描述符中的第一分片信息地址分别修改为各个第二分片信息地址,所述第一分片信息地址为所述多核神经网络处理器的分片信息的地址,所述第二分片信息地址为所述选定处理器的分片信息的地址。
在多核单批模式的情况下,tile_info结构体中描述了NNP cluster内部每个NNP需要执行的分片信息,每个NNP需要读取各自的tile_info,它们的起始地址不同,因此需要修改每个NNP描述符中的tile_info_addr。
tile_info是在编译阶段根据任务所需要的NNP核数通过工具链提前产生好的,由于单个NNP支持的特征图(featuremap)长宽有限,所以需要在获取到待处理的特征图之后,对所述特征图进行分片切割,得到所述特征图的各个分片,并根据所述选定处理器的数量进行分片分配,确定各个所述选定处理器的分片信息。将所述特征图切割为多个分片之后,NNP就可以按照分片分别进行神经网络的计算,每个分片经过计算之后,最终在外部存储器将输出的特征图进行拼接。在这种方式下,不同分片实际上对应的就是同一个特征图的不同位置。如果采用多核分别完成不同分片的计算,则可以大大提速一个模型的运行。
图3所示即为将一个特征图进行分片切割的例子。进行分片切割之后,最多会有9种类型的分片,分别记为:tile-tl(即第1行第1列的分片)、tile-tr(即第1行最后1列的分片)、tile-t(即第1行中除tile-tl和tile-tr之外的其它分片)、tile-bl(即最后1行第1列的分片)、tile-br(即最后1行最后1列的分片)、tile-b(即最后1行中除tile-bl和tile-br之外的其它分片)、tile-l(即第1列中除tile-tl和tile-bl之外的其它分片)、tile-r(即最后1列中除tile-tr和tile-br之外的其它分片)和tile-m(即特征图中除以上8种类型的分片之外的其它分片)。这9种类型的分片在长、宽、padding方式等方面会有细微的差别。例如tile-m的宽度是106,tile-l的宽度是107;tile-m上下左右没有padding,tile-l在左侧可能有padding。
在编译阶段,神经网络处理器编译器完成分片切割,并将不同的分片分配给不同的NNP核,不同的NNP核执行那些分片,需要通过编译器产生的tile_info来指定。tile_info主要可以包括如下表所示的字段内容:
Figure BDA0002341565640000111
Figure BDA0002341565640000121
编译完成之后,会为所用到的NNP核产生各自的分片信息,并将这些分片信息存储至事先约定好的指定地址,当NNP启动之后,NNP会读取到各自的分片信息,并根据分片信息的描述,按照顺序执行各自的分片。单个NNP的所有分片都执行完毕之后,需要和其它的NNP进行同步,等到所有核的所有分片都执行完毕,才可以继续进行后续操作。
通过以上方式,在多核单批模式下,多核可以共同完成同一个模型的不同分片,协作完成一个模型,从而大大减小单个模型的运行时间。
2、对于输入数据地址(data_in_addr)和输出数据地址(data_out_addr)的修改:
若所述第一任务描述符中指示的处理模式为多核多批模式(即batch_size!=1),则将所述第一任务描述符中的第一输入数据地址分别修改为各个第二输入数据地址,并将所述第一任务描述符中的第一输出数据地址分别修改为各个第二输出数据地址。所述第一输入数据地址为所述多核神经网络处理器的输入数据的缓存地址,所述第二输入数据地址为所述选定处理器的输入数据的缓存地址,所述第一输出数据地址为所述多核神经网络处理器的输出数据的缓存地址,所述第二输出数据地址为所述选定处理器的输出数据的缓存地址。
在多核多批模式的情况下,多核可以并行处理多个batch。在NNP cluster的描述符中,data_in_addr和data_out_addr是整个NNP cluster任务中第一个子任务的输入数据地址和输出数据地址。多batch情况下,为每个NNP分配不同的子任务,所以需要将每个NNP的子任务的输入数据地址和输出数据地址进行修改。例如图4所示,表示了batch_size=4的情况下,每个NNP描述符中data_in_addr修改的方式。图4中,一个NNP cluster任务有8个输入数据buffer,batch_size=4的情况下,每个batch分配2个输入数据buffer,分别对应两个子任务。NNP cluster任务做到一定程度需要上报中断的时候,需要将cluster看作一个整体,所以需要按照子任务的顺序为NNP分配buffer或子任务。buffer0和buffer4分配给NNP0,buffer1和buffer5分配给NNP1,buffer2和buffer6分配给NNP2,buffer3和buffer7分配给NNP3。
通过以上方式,在多核多批模式下,多核可以共同完成同一个NNP cluster任务的不同子任务,协作完成一个完整的NNP cluster任务,从而大大减小NNP cluster任务的运行时间。
步骤S204、将各个第二任务描述符配置给对应的各个所述选定处理器,并启动各个所述选定处理器处理对应的子任务。
所述主控单元可以通过load store指令,将修改后得到的所述第二任务描述符直接配置给对应的NNP,最后启动对应NNP即可开始工作,处理对应的子任务。
在本申请实施例中,设置了主控单元来对各个单核神经网络处理器进行有效的协调控制,由该主控单元整体接收DMA模块搬运过来的待处理的任务的信息,对该信息进行统一的解析和任务分配,拆解出各个子任务的信息,并将这些子任务的信息配置给对应的单核神经网络处理器进行处理。通过主控单元对各个单核神经网络处理器的统一调度管理,避免了出现任务重复配置、漏配以及配置不均等情况,使得多核神经网络处理器可以充分发挥其运算性能。
进一步地,考虑到在多核多批模式下,每个NNP处理不同的批或者子任务。在这种情况下,每个NNP的输入特征图不同,但是处理过程中所使用到的参数是相同的,所以参数是可以在NNP cluster内部多个NNP之间共享的。而在多核单批模式下,每个NNP的输入分片不同,但是处理过程中所使用到的参数也是相同的,所以参数也是可以在NNP cluster内部多个NNP之间共享的。
在本申请实施例中,每个所述单核神经网络处理器还可以包括共享参数搬运模块(即ewdma),用于将共享的参数从NNP核外部搬运至NNP核内部的数据存储器中。
在确定分配至各个所述单核神经网络处理器中的子任务之后,还可以选取一个所述选定处理器作为主核处理器,并将除所述主核处理器之外的其它所述选定处理器均作为从核处理器。而在启动各个所述选定处理器处理对应的子任务之后,则可以将所述主核处理器读取的参数共享至各个所述从核处理器。
图5所示为本申请实施例在所述多核神经网络处理器之间进行参数共享的示意图。
如图5所示,所述多核神经网络处理器中的AXI Hub还用于实现多个NNP之间的参数共享。在所述AXI Hub中,对应每个NNP都有一个参数共享逻辑模块(即图5中的wsharelogic),该模块用于实现多核NNP之间参数共享逻辑的判断以及流程控制。每个参数共享逻辑模块中均包括命令缓存(即图5中的ARBUF)和数据缓存(即图5中的RBUF),其中,所述命令缓存用于缓存各NNP发出的参数读取命令(即ewdma读命令),所述数据缓存用于缓存主核处理器的ewdma读回的数据。
AXI Hub在接收到任意一个NNP发出的命令之后,对应该NNP的wsharelogic首先检查该命令是否为参数读取命令,以及当前是否为多核模式(包括多核多批模式和多核单批模式)。
若该命令不是参数读取命令,或当前不是多核模式,则可以直接将该命令发送至外部axi总线。
若该命令是参数读取命令,且当前是多核模式,则进一步判断发出命令的该NNP是否为主核处理器。
若该NNP为主核处理器,则在该NNP对应的wsharelogic中ARBUF有空间的情况下,将所述参数读取命令缓存至该ARBUF中,并将所述主核处理器对应的标志位(data_ready)设置为第一数值,表示数据还没有准备好;当在该ARBUF中所述参数读取命令之前的命令均发出之后,则可将所述参数读取命令发送至外部axi总线。
若该NNP为从核处理器,则在该NNP对应的wsharelogic中ARBUF有空间的情况下,将所述参数读取命令缓存至该ARBUF中,并将所述从核处理器对应的标志位设置为第二数值。但需要注意的是,这种情况下不会将所述参数读取命令发送至外部axi总线。
所述第一数值和所述第二数值的具体取值可以根据实际情况进行设置,优选地,可以将所述第一数值设置为0,将所述第一数值设置为1。
当有数据从DDR中读取回来之后,该数据对应的NNP的wsharelogic首先判断读回来的数据是否为ewdma读命令对应的数据,以及当前是否为多核模式。
若该数据不是ewdma读命令对应的数据,或当前不是多核模式,则可以直接将该数据发送至与该数据对应的NNP。
若该数据是ewdma读命令对应的数据,且当前是多核模式,则可以判断该数据即为需在各NNP之间共享的参数,此时将读回的参数缓存至所述主核处理器对应的wsharelogic的RBUF中。当参数缓存完毕之后,将所述主核处理器对应的标志位设置为所述第二数值。
当各个所述选定处理器对应的标志位均为所述第二数值时,从所述主核处理器对应的wsharelogic的RBUF中读取所述参数,并将所述参数广播至各个所述选定处理器,实现参数共享。
通过上述过程,在采用多核架构的情况下,在多核多批模式时,能够实现参数共享,有效降低DDR带宽,在多核单批模式时,能够多核共同协作完成同一个模型,这样可大大减小模型的运行时间,并在分片之间实现参数共享,有效降低DDR带宽。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图6示出了本申请实施例提供的一种终端设备的示意框图,为了便于说明,仅示出了与本申请实施例相关的部分。
如图6所示,该实施例的终端设备6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机程序62。所述处理器60即为上述的多核神经网络处理器,所述处理器60执行所述计算机程序62时实现上述各个神经网络处理器的控制方法实施例中的步骤,例如图2所示的步骤S201至步骤S204。
示例性的,所述计算机程序62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述终端设备6中的执行过程。
所述终端设备6可以是桌上型计算机、笔记本、掌上电脑、智能手机及服务器等计算设备。本领域技术人员可以理解,图6仅仅是终端设备6的示例,并不构成对终端设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备6还可以包括输入输出设备、网络接入设备、总线等。
所述存储器61可以是所述终端设备6的内部存储单元,例如终端设备6的硬盘或内存。所述存储器61也可以是所述终端设备6的外部存储设备,例如所述终端设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述终端设备6所需的其它程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
所述终端设备6还可以包括通信模块,所述通信模块可以提供应用在网络设备上的包括无线局域网(Wireless Local Area Networks,WLAN)(如Wi-Fi网络),蓝牙,Zigbee,移动通信网络,全球导航卫星系统(Global Navigation Satellite System,GNSS),调频(Frequency Modulation,FM),近距离无线通信技术(Near Field Communication,NFC),红外技术(Infrared,IR)等通信的解决方案。所述通信模块可以是集成至少一个通信处理模块的一个或多个器件。该通信模块可以包括天线,该天线可以只有一个阵元,也可以是包括多个阵元的天线阵列。所述通信模块可以通过天线接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器。所述通信模块还可以从处理器接收待发送的信号,对其进行调频、放大,经天线转为电磁波辐射出去。
所述终端设备6还可以包括电源管理模块,所述电源管理模块可以接收外接电源、电池和/或充电器的输入,为所述处理器、所述存储器和所述通信模块等供电。
所述终端设备6还可以包括显示模块,所述显示模块可用于显示由用户输入的信息或提供给用户的信息。所述显示模块可包括显示面板,可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板。进一步的,触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给所述处理器以确定触摸事件的类型,随后所述处理器根据触摸事件的类型在所述显示面板上提供相应的视觉输出。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在神经网络处理器上运行时,使得神经网络处理器执行上述任一种神经网络处理器的控制方法的步骤。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种神经网络处理器,其特征在于,所述神经网络处理器包括由N个单核神经网络处理器和外围模块构成的神经网络处理器簇,N为大于1的整数;
所述外围模块包括主控单元和DMA模块;
所述DMA模块用于将第一任务描述符搬运至所述主控单元,所述第一任务描述符用于描述分配至所述神经网络处理器中的任务的信息;
所述主控单元用于对所述第一任务描述符进行解析,根据解析结果确定分配至各个选定处理器中的子任务;对所述第一任务描述符进行修改,得到与各个所述选定处理器分别对应的第二任务描述符;将各个第二任务描述符配置给对应的各个所述选定处理器,并启动各个所述选定处理器处理对应的子任务;所述选定处理器为从N个所述单核神经网络处理器中选取的用于执行所述任务的处理器,所述第二任务描述符用于描述分配至所述选定处理器中的子任务的信息。
2.根据权利要求1所述的神经网络处理器,其特征在于,所述外围模块还可以包括簇接口、信箱模块、总线转发模块、程序存储器和数据存储器;
所述簇接口为所述神经网络处理器簇的从接口,用于所述神经网络处理器簇的外部CPU访问和配置所述外围模块以及每个单核神经网络处理器的内部资源;
所述信箱模块用于存放所述单核神经网络处理器或者所述神经网络处理器簇的配置信息以及运行过程中的状态信息;
所述总线转发模块为所述神经网络处理器簇的顶层AXI请求的收集分发模块,用于收集各个单核神经网络处理器以及所述神经网络处理器簇顶层的主控单元的AXI请求,并将请求经过处理之后发到芯片顶层;
所述程序存储器用于存放所述主控单元的程序;
所述数据存储器用于存放所述主控单元运行过程中产生的数据。
3.根据权利要求1所述的神经网络处理器,其特征在于,所述单核神经网络处理器包括:单核接口、单核信箱模块和总线模块;
所述单核接口为所述单核神经网络处理器的从接口,用于所述神经网络处理器簇的外部CPU或者所述主控单元访问和配置所述单核神经网络处理器的内部资源;
所述单核信箱模块用于存放所述单核神经网络处理器的配置信息以及所述单核神经网络处理器运行过程中的状态信息;
所述总线模块为所述单核神经网络处理器的AXI总线。
4.根据权利要求1至3中任一项所述的神经网络处理器,其特征在于,所述单核神经网络处理器还包括共享参数搬运模块,所述共享参数搬运模块用于将共享的参数从所述单核神经网络处理器外部搬运至所述单核神经网络处理器内部的数据存储器中;
所述总线转发模块中包括与各个单核神经网络处理器分别对应的参数共享逻辑模块,所述参数共享逻辑模块用于进行所述单核神经网络处理器之间参数共享逻辑的判断以及流程控制;
所述参数共享逻辑模块包括命令缓存和数据缓存,所述命令缓存用于缓存所述单核神经网络处理器发出的参数读取命令,所述数据缓存用于缓存所述参数共享逻辑模块读回的数据。
5.一种神经网络处理器的控制方法,其特征在于,所述方法应用于多核神经网络处理器中,所述多核神经网络处理器包括N个单核神经网络处理器,N为大于1的整数,所述方法包括:
获取第一任务描述符,所述第一任务描述符用于描述分配至所述多核神经网络处理器中的任务的信息;
对所述第一任务描述符进行解析,根据解析结果确定分配至各个选定处理器中的子任务,所述选定处理器为从N个所述单核神经网络处理器中选取的用于执行所述任务的处理器;
对所述第一任务描述符进行修改,得到与各个所述选定处理器分别对应的第二任务描述符,所述第二任务描述符用于描述分配至所述选定处理器中的子任务的信息;
将各个第二任务描述符配置给对应的各个所述选定处理器,并启动各个所述选定处理器处理对应的子任务。
6.根据权利要求5所述的方法,其特征在于,所述对所述第一任务描述符进行修改包括:
若所述第一任务描述符中指示的处理模式为多核单批模式,则将所述第一任务描述符中的第一分片信息地址分别修改为各个第二分片信息地址,所述第一分片信息地址为所述多核神经网络处理器的分片信息的地址,所述第二分片信息地址为所述选定处理器的分片信息的地址。
7.根据权利要求6所述的方法,其特征在于,在将所述第一任务描述符中的第一分片信息地址分别修改为各个第二分片信息地址之前,还包括:
获取待处理的特征图;
对所述特征图进行分片切割,得到所述特征图的各个分片;
根据所述选定处理器的数量进行分片分配,确定各个所述选定处理器的分片信息;
将各个所述选定处理器的分片信息存储至指定地址。
8.根据权利要求5所述的方法,其特征在于,所述对所述第一任务描述符进行修改包括:
若所述第一任务描述符中指示的处理模式为多核多批模式,则将所述第一任务描述符中的第一输入数据地址分别修改为各个第二输入数据地址,所述第一输入数据地址为所述多核神经网络处理器的输入数据的缓存地址,所述第二输入数据地址为所述选定处理器的输入数据的缓存地址;
将所述第一任务描述符中的第一输出数据地址分别修改为各个第二输出数据地址,所述第一输出数据地址为所述多核神经网络处理器的输出数据的缓存地址,所述第二输出数据地址为所述选定处理器的输出数据的缓存地址。
9.根据权利要求5至8中任一项所述的方法,其特征在于,在确定分配至各个所述单核神经网络处理器中的子任务之后,还包括:
选取一个所述选定处理器作为主核处理器,并将除所述主核处理器之外的其它所述选定处理器均作为从核处理器;
在启动各个所述选定处理器处理对应的子任务之后,还包括:
将所述主核处理器读取的参数共享至各个所述从核处理器。
10.根据权利要求9所述的方法,其特征在于,所述将所述主核处理器读取的参数共享至各个所述从核处理器包括:
若接收到所述主核处理器发出的参数读取命令,则将所述参数读取命令缓存至所述主核处理器对应的命令缓存中,并将所述主核处理器对应的标志位设置为第一数值;当所述参数读取命令之前的命令均发出之后,将所述参数读取命令发送至总线;
若接收到任一所述从核处理器发出的参数读取命令,则将所述参数读取命令缓存至所述从核处理器对应的命令缓存中,并将所述从核处理器对应的标志位设置为第二数值;
将读回的参数缓存至所述主核处理器对应的数据缓存中,并将所述主核处理器对应的标志位设置为所述第二数值;
当各个所述选定处理器对应的标志位均为所述第二数值时,从所述主核处理器对应的数据缓存中读取所述参数,并将所述参数广播至各个所述选定处理器。
CN201911403452.3A 2019-12-27 2019-12-27 一种神经网络处理器及其控制方法 Active CN111191777B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201911403452.3A CN111191777B (zh) 2019-12-27 2019-12-27 一种神经网络处理器及其控制方法
PCT/CN2020/124099 WO2021129116A1 (zh) 2019-12-27 2020-10-27 一种神经网络处理器及其控制方法
US17/623,621 US11537862B2 (en) 2019-12-27 2020-10-27 Neural network processor and control method of neural network processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911403452.3A CN111191777B (zh) 2019-12-27 2019-12-27 一种神经网络处理器及其控制方法

Publications (2)

Publication Number Publication Date
CN111191777A true CN111191777A (zh) 2020-05-22
CN111191777B CN111191777B (zh) 2022-07-26

Family

ID=70709689

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911403452.3A Active CN111191777B (zh) 2019-12-27 2019-12-27 一种神经网络处理器及其控制方法

Country Status (3)

Country Link
US (1) US11537862B2 (zh)
CN (1) CN111191777B (zh)
WO (1) WO2021129116A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831330A (zh) * 2020-07-10 2020-10-27 深圳致星科技有限公司 用于联邦学习的异构计算系统设备交互方案
CN112099850A (zh) * 2020-09-10 2020-12-18 济南浪潮高新科技投资发展有限公司 一种多核Hourglass网络加速方法
WO2021129116A1 (zh) * 2019-12-27 2021-07-01 深圳云天励飞技术股份有限公司 一种神经网络处理器及其控制方法
CN114238184A (zh) * 2021-12-18 2022-03-25 山东云海国创云计算装备产业创新中心有限公司 一种多功能dma的传输方法、装置及存储介质
CN114860417A (zh) * 2022-06-15 2022-08-05 中科物栖(北京)科技有限责任公司 多核神经网络处理器及用于该处理器多任务分配调度方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116151345B (zh) * 2023-04-20 2023-09-26 西安紫光展锐科技有限公司 数据传输方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108416433A (zh) * 2018-01-22 2018-08-17 上海熠知电子科技有限公司 一种基于异步事件的神经网络异构加速方法和系统
CN109426553A (zh) * 2017-08-21 2019-03-05 上海寒武纪信息科技有限公司 任务切分装置及方法、任务处理装置及方法、多核处理器
US20190340010A1 (en) * 2018-05-04 2019-11-07 Apple Inc. Compiling and scheduling transactions in neural network processor
CN110489213A (zh) * 2018-05-15 2019-11-22 华为技术有限公司 一种任务处理方法及处理装置、计算机系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190180183A1 (en) * 2017-12-12 2019-06-13 Amazon Technologies, Inc. On-chip computational network
TWI680375B (zh) * 2018-08-23 2019-12-21 慧榮科技股份有限公司 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法
CN111191777B (zh) * 2019-12-27 2022-07-26 深圳云天励飞技术股份有限公司 一种神经网络处理器及其控制方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109426553A (zh) * 2017-08-21 2019-03-05 上海寒武纪信息科技有限公司 任务切分装置及方法、任务处理装置及方法、多核处理器
CN108416433A (zh) * 2018-01-22 2018-08-17 上海熠知电子科技有限公司 一种基于异步事件的神经网络异构加速方法和系统
US20190340010A1 (en) * 2018-05-04 2019-11-07 Apple Inc. Compiling and scheduling transactions in neural network processor
CN110489213A (zh) * 2018-05-15 2019-11-22 华为技术有限公司 一种任务处理方法及处理装置、计算机系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JOO-YOUNG KIM 等: "An attention controlled multi-core architecture for energy efficient object recognition", 《SIGNAL PROCESSING: IMAGE COMMUNICATION》 *
钱 艺 等: "一种神经网络并行处理器的体系结构", 《一种神经网络并行处理器的体系结构 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021129116A1 (zh) * 2019-12-27 2021-07-01 深圳云天励飞技术股份有限公司 一种神经网络处理器及其控制方法
CN111831330A (zh) * 2020-07-10 2020-10-27 深圳致星科技有限公司 用于联邦学习的异构计算系统设备交互方案
CN112099850A (zh) * 2020-09-10 2020-12-18 济南浪潮高新科技投资发展有限公司 一种多核Hourglass网络加速方法
CN114238184A (zh) * 2021-12-18 2022-03-25 山东云海国创云计算装备产业创新中心有限公司 一种多功能dma的传输方法、装置及存储介质
CN114238184B (zh) * 2021-12-18 2024-05-14 山东云海国创云计算装备产业创新中心有限公司 一种多功能dma的传输方法、装置及存储介质
CN114860417A (zh) * 2022-06-15 2022-08-05 中科物栖(北京)科技有限责任公司 多核神经网络处理器及用于该处理器多任务分配调度方法
CN114860417B (zh) * 2022-06-15 2023-05-02 中科物栖(北京)科技有限责任公司 多核神经网络处理器及用于该处理器多任务分配调度方法

Also Published As

Publication number Publication date
US20220207341A1 (en) 2022-06-30
WO2021129116A1 (zh) 2021-07-01
US11537862B2 (en) 2022-12-27
CN111191777B (zh) 2022-07-26

Similar Documents

Publication Publication Date Title
CN111191777B (zh) 一种神经网络处理器及其控制方法
CN109408205B (zh) 基于hadoop集群的任务调度方法和装置
CN108536526B (zh) 一种基于可编程硬件的资源管理方法以及装置
US8424007B1 (en) Prioritizing tasks from virtual machines
US9396028B2 (en) Scheduling workloads and making provision decisions of computer resources in a computing environment
KR20150084098A (ko) 스트림 데이터 분산 처리 시스템 및 그 방법
CN112306719B (zh) 一种任务调度方法与装置
US20120297216A1 (en) Dynamically selecting active polling or timed waits
CN110019496B (zh) 数据读写方法和系统
CN110162393B (zh) 任务调度方法、装置及存储介质
US11354156B2 (en) Master device for managing distributed processing of task by using resource information
US20240160474A1 (en) Multi-core processor task scheduling method, and device and storage medium
CN110806928A (zh) 一种作业提交方法及系统
CN115617494B (zh) 多cpu环境下的进程调度方法、装置、电子设备和介质
US11038783B2 (en) Method and apparatus for managing network connection, and storage medium
CN114579285A (zh) 一种任务运行系统、方法及计算设备
KR101065436B1 (ko) 불확실한 계산량을 가진 실시간 병렬 작업을 위한 멀티코어 프로세서의 확률적 스케줄링 방법
KR102320324B1 (ko) 쿠버네티스 환경에서의 이종 하드웨어 가속기 활용 방법 및 이를 이용한 장치
US20140229940A1 (en) Methods and apparatus for synchronizing multiple processors of a virtual machine
CN103077081B (zh) 资源调整的方法及装置
CN111382141B (zh) 主从架构配置方法、装置、设备以及计算机可读存储介质
CN110837419B (zh) 基于弹性批处理的推理引擎系统、方法及电子设备
CN113760638A (zh) 一种基于kubernetes集群的日志服务方法和装置
CN111381946B (zh) 任务处理方法、装置及相关产品
CN111767126A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 518000 1/F, 17 Building, Shenzhen Dayun Software Town, 8288 Longgang Avenue, Henggang Street, Longgang District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen Yuntian lifeI Technology Co.,Ltd.

Address before: 518000 1/F, 17 Building, Shenzhen Dayun Software Town, 8288 Longgang Avenue, Henggang Street, Longgang District, Shenzhen City, Guangdong Province

Applicant before: SHENZHEN INTELLIFUSION TECHNOLOGIES Co.,Ltd.

GR01 Patent grant
GR01 Patent grant