[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN109426553A - 任务切分装置及方法、任务处理装置及方法、多核处理器 - Google Patents

任务切分装置及方法、任务处理装置及方法、多核处理器 Download PDF

Info

Publication number
CN109426553A
CN109426553A CN201710721049.XA CN201710721049A CN109426553A CN 109426553 A CN109426553 A CN 109426553A CN 201710721049 A CN201710721049 A CN 201710721049A CN 109426553 A CN109426553 A CN 109426553A
Authority
CN
China
Prior art keywords
task
neural network
core
cutting
instruction
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
Application number
CN201710721049.XA
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201710721049.XA priority Critical patent/CN109426553A/zh
Priority to EP18824582.3A priority patent/EP3637272A4/en
Priority to PCT/CN2018/092829 priority patent/WO2019001418A1/zh
Publication of CN109426553A publication Critical patent/CN109426553A/zh
Priority to US16/693,918 priority patent/US10901815B2/en
Priority to US16/694,176 priority patent/US11726844B2/en
Priority to US16/693,999 priority patent/US11656910B2/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/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/505Allocation 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Landscapes

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

Abstract

一种任务切分装置及方法、任务处理装置及方法、多核处理器,任务切分装置包括:粒度任务切分单元,用于采用至少一种粒度对任务进行切分形成子任务;以及任务切分粒度选择单元,用于选择采用的粒度。

Description

任务切分装置及方法、任务处理装置及方法、多核处理器
技术领域
本发明涉及数据处理领域,更具体地涉及一种任务切分装置及方法、任务调度装置及方法、多核处理器。
背景技术
神经网络(neural network)和神经网络处理器已经获得了非常成功的应用。随着神经网络的规模越来越大,多核神经网络处理器逐渐代替了单核神经网络处理器。但是传统的任务调度方式应用于多核神经网络处理器时,存在服务质量低,核利用率低,负载不均衡,能耗大的问题。因此,如何针对多核神经网络处理器对神经网络进行任务切分,任务调度成为一个亟待解决的问题。
发明内容
鉴于现有方案存在的问题,为了克服上述现有技术方案的不足,本发明提出了一种任务切分装置及方法、任务调度装置及方法、多核处理器。
根据本发明的一个方面,提供了一种任务切分装置,包括:粒度任务切分单元,用于采用至少一种粒度对任务进行切分形成子任务;以及任务切分粒度选择单元,用于选择采用的粒度。
在一些实施例中,任务切分装置用于神经网络,粒度任务切分单元包括以下单元中的至少一个,第一粒度任务切分单元,用于将任务整体作为一子任务;第二粒度任务切分单元,用于将选取任务中部分样本计算作为子任务来切分任务;第三粒度任务切分单元,用于按照神经网络的层类型进行任务切分,相同类型层的计算作为一子任务;第四粒度任务切分单元,用于按照神经网络的层间结构进行任务切分,若干相邻层的计算作为一子任务;第五粒度任务切分单元,用于按照神经网络的层内结构进行任务切分,将神经网络层内的计算切分为子任务。
在一些实施例中,所述任务切分粒度选择单元基于神经网络需要处理的样本数量、神经网络的拓扑结构以及每一层的计算量中的至少一个选择第一至第五粒度任务切分单元中的至少一个来进行任务切分。
在一些实施例中,所述按照神经网络的层内结构进行任务切分包括:对神经网络的卷积层计算、全连接层计算、池化层计算或激活层计算进行任务切分。
在一些实施例中,所述对神经网络的卷积层计算进行切分包括:当所述神经网络的卷积层输入神经元是三维矩阵(Nfin,Nxin,Nyin),权值是四维矩阵(Nfout,Nfout,Kx,Ky),输出神经元是三维矩阵(Nfout,Nxout,Nyout)时,其中Nfin是输入特征图像数量,(Nxin,Nyin)是输入特征图像大小,Nfout是输出特征图像数量,(Kx,Ky)是卷积核大小,(Nxout,Nyout)是输出特征图像大小,Nfin,Nxin,Nyin,Kx,Ky,Nfout,Nxout,Nyout均为正整数,将输出神经元按照(Bfout,Bxout,Byout)的块大小进行切分,同时对权值按照(Bfout,Bfin,Bx,By)的块大小进行切分,其中,Bfout,Bxout,Byout,Bfout,Bfin,Bx,By均为正整数,且0<Bfout≤Nfout,0<Bxout≤Nxout,0<Byout≤Nyout,0<Bfin≤Nfin,0<Bx≤Kx,0<By≤Ky。
根据本发明的另一个方面,提供一种任务处理装置,包括:任务切分装置;以及任务调度装置,所述任务调度装置包括:任务队列单元,用于缓存未调度的任务,监测单元,用于实时监测多核处理器各核工作状态;任务调度单元,用于从未调度任务中选择待调度任务,并根据所述各核工作状态向目标核分配调度待调度任务。
在一些实施例中,所述任务调度单元采用以下方式中的至少一种来分配调度待调度任务至目标核:统计每一个核私有任务队列中任务数量,选择私有任务队列中任务最少的核作为目标核;统计每一个核完成私有任务队列中所有任务的时间,选择完成任务时间最短的核作为目标核;统计待调度任务所需资源在所有核的分布情况,选择拥有资源数量最多的核作为目标核;以及采用启发式算法将待调度任务分配到目标核。
在一些实施例中,所述启发式算法包括遗传算法,蚁群算法,模拟退火算法中的至少一个。
在一些实施例中,所述任务调度单元每隔时间T进行一次任务调度,待调度任务采用以下方式中的至少一种进行选择:随机选择未调度的任务;
选择预计执行时间最长的未调度的任务;选择预计执行时间最短的未调度的任务;选择占用资源最多的未调度的任务;选择占用资源最少的未调度的任务。
在一些实施例中,所述各核工作状态包括利用率,工作负载,工作频率,核内私有任务队列中的任务数量,核内任务完成时间中的至少一个。
根据本发明的另一个方面,提供一种多核处理器,包括:J个处理核,J为正整数;以及任务处理装置。
在一些实施例中,所述处理核之间的拓扑结构采用一维线性、二维mesh,二维星形、三维立方中的至少一种。
在一些实施例中,所述处理核包括神经网络处理核,所述神经网络处理核包括:存储单元,用于存储神经网络的神经元、权值以及指令;选数单元,用于接收输入神经元和非零权值位置信息,选出非零权值对应的神经元;运算单元,用于接收输入非零权值对应的神经元和对应的非零权值,完成神经网络训练运算;以及控制单元,用于接收神经网络的指令,经过译码后生成控制信息控制所述选数单元和运算单元。
在一些实施例中,所述指令包括控制指令,数据传输指令,运算指令和逻辑指令中的至少一个。
在一些实施例中,所述运算指令用于完成神经网络的算术运算,包括矩阵运算指令,向量运算指令,标量运算指令,卷积神经网络运算指令,全连接神经网络运算指令,池化神经网络运算指令,RBM神经网络运算指令,LRN神经网络运算指令,LCN神经网络运算指令,LSTM神经网络运算指令,RNN神经网络运算指令,RELU神经网络运算指令,PRELU神经网络运算指令,SIGMOID神经网络运算指令,TANH神经网络运算指令,MAXOUT神经网络运算指令中的至少一个。
根据本发明的再一个方面,提供一种任务切分方法,用于神经网络,选择以下任务切分方式中的至少一个来进行任务切分:将任务整体作为一子任务;将选取任务中部分样本计算作为子任务来切分任务;按照神经网络的层类型进行任务切分,相同类型层的计算作为一子任务;按照神经网络的层间结构进行任务切分,若干相邻层的计算作为一子任务;按照神经网络的层内结构进行任务切分,将神经网络层内的计算切分为子任务。
在一些实施例中,基于神经网络需要处理的样本数量、神经网络的拓扑结构以及每一层的计算量中的至少一个来选择所述任务切分装置中的至少一个来进行任务切分。
在一些实施例中,所述按照神经网络的层内结构进行任务切分包括:对神经网络的卷积层计算、全连接层计算、池化层计算或激活层计算进行任务切分。
在一些实施例中,所述对神经网络的卷积层计算进行切分包括:当所述神经网络的卷积层输入神经元是三维矩阵(Nfin,Nxin,Nyin),权值是四维矩阵(Nfout,Nfout,Kx,Ky),输出神经元是三维矩阵(Nfout,Nxout,Nyout)时,其中Nfin是输入特征图像数量,(Nxin,Nyin)是输入特征图像大小,Nfout是输出特征图像数量,(Kx,Ky)是卷积核大小,(Nxout,Nyout)是输出特征图像大小,Nfin,Nxin,Nyin,Kx,Ky,Nfout,Nxout,Nyout均为正整数,将输出神经元按照(Bfout,Bxout,Byout)的块大小进行切分,同时对权值按照(Bfout,Bfin,Bx,By)的块大小进行切分,其中,Bfout,Bxout,Byout,Bfout,Bfin,Bx,By均为正整数,且0<Bfout≤Nfout,0<Bxout≤Nxout,0<Byout≤Nyout,0<Bfin≤Nfin,0<Bx≤Kx,0<By≤Ky。
根据本发明的进一步的一个方面,提供一种任务处理方法,包括:务切分方法;以及任务调度方法,所述任务调度方法包括:缓存未调度的任务,所述任务包括权利要求16-19中任一任务切分装置切分的子任务;实时监测多核处理器各核工作状态;以及从未调度任务中选择待调度任务并根据所述各核工作状态向目标核分配调度待调度任务。
在一些实施例中,所述向目标核分配调度所述待调度任务采用以下方式中的至少一种执行:统计每一个核私有任务队列中任务数量,选择私有任务队列中任务最少的核作为目标核;统计每一个核完成私有任务队列中所有任务的时间,选择完成任务时间最短的核作为目标核;统计待调度任务所需资源在所有核的分布情况,选择拥有资源数量最多的核作为目标核;以及采用启发式算法将待调度任务分配到目标核。
在一些实施例中,所述启发式算法包括遗传算法,蚁群算法,模拟退火算法中的至少一个。
在一些实施例中,每隔时间T进行一次任务调度,待调度任务采用以下方式中的至少一种进行选择:随机选择未调度的任务;选择预计执行时间最长的未调度的任务;选择预计执行时间最短的未调度的任务;选择占用资源最多的未调度的任务;选择占用资源最少的未调度的任务。
在一些实施例中,所述各核工作状态包括利用率,工作负载,工作频率,核内私有任务队列中的任务数量,核内任务完成时间中的至少一个。
从上述技术方案可以看出,本发明具有至少以下有益效果:
任务切分装置选择特定粒度将任务切分为子任务,适用于多核处理器,针对不同规模的神经网络应用使用适合的任务切分粒度,使得切分后的子任务被调度后能够满足系统的实时性;
任务调度装置基于综合考虑神经网络子任务之间的依赖关系,子任务的局部性,子任务切分粒度,各核工作状态进行任务调度,提高服务质量,提高核的利用率,保证核之间的任务均衡,减少能耗。
附图说明
图1为本发明一实施例任务切分装置的结构框图;
图2为本发明一实施例任务调度装置的结构框图;
图3为本发明再一实施例多核处理器的结构框图;
图4为本发明再一实施例中神经网络处理的每一个神经网络处理核的结构框图。
具体实施方式
本发明某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本发明的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本发明满足适用的法律要求。
在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明,本发明以下具体实施例采用神经网络中的应用进行说明,本发明的保护范围并不限于此。
本发明一实施例提供了任务切分装置,图1为本发明一实施例任务切分装置的结构框图,如图1所示,任务切分装置100包括粒度任务切分单元10和任务切分粒度选择单元20。粒度任务切分单元10采用至少一种粒度对任务进行切分形成子任务,为神经网络应用提供多粒度的任务切分选择,任务切分粒度选择单元20选择任务划分采用的粒度,指导神经网络选择最合适的任务切分粒度,使得切分后的子任务能够满足系统实时性。
在一实施例中,如图1所示,粒度任务切分单元10包括第一粒度任务切分单元11、第二粒度任务切分单元12、第三粒度任务切分单元13、第四粒度任务切分单元以及第五粒度任务切分单元15。
以下具体介绍该五个粒度任务切分单元假设神经网络应用需要完成M个样本计算,神经网络拓扑结构结构由N个层组成。其中M,N是大于0的正整数。
第一粒度任务切分单元11将任务整体作为一子任务,具体的,将完成M个样本计算作为一个子任务。这种任务切分方式只生成一个子任务,子任务之间不存在依赖关系。
第二粒度任务切分单元12将完成若干个样本计算作为一个子任务。神经网络被切分成为m个子任务,第i个任务完成Mi个样本的计算,其中m是大于1小于等于M的正整数,i=1,2,3,……m,Mi是大于0小于M的正整数,且满足M1+M2+…+Mm=M。这种任务切分方式的m个子任务之间不存在依赖关系。
第三粒度任务切分单元13可以按照神经网络的层类型对神经网络应用进行任务切分,相同类型层的计算作为一个任务。神经网络的层类型包括但不仅限于卷积层,全连接层,LSTM层,池化层,激活层,LRN层,BN层。这种任务切分方式的子任务之间存在复杂的依赖关系。
第四粒度任务切分单元14可以按照神经网络的层间结构对神经网络应用进行任务切分,相邻若干个层的计算作为一个子任务。神经网络应用被切分为n个子任务,第一个子任务完成神经网络第一层到第N1层,共计N1层计算,第二个子任务完成第N1+1层到第N1+N2层,共计N2层神经网络计算,第i个子任务完成第N1+…+Ni-1+1层到第N1+…+Ni层,共计Ni层计算。其中n是大于0小于等于N的正整数,,i=1,2,3,……n,Ni是大于0小于等于N的正整数且满足N1+N2+…+Ni+…+Nn=N。这种任务切分方式的子任务之间存在链式的依赖关系,其中第i个子任务是第i+1个子任务的前驱任务,第i+1个任务是第i个任务的后继任务,第i+1个任务必须等待第i个任务完成才能开始执行。
第五粒度任务切分单元15可以按照神经网络的层内结构对神经网络应用进行任务切分,神经网络层内的计算可以进一步被切分为子任务。按神经网络层内的计算的切分包括但不限于对神经网络的一卷积层计算、全连接层计算、池化层计算或激活层计算进行任务切分。
对神经网络的一个卷积层计算进行任务切分,卷积层输入神经元是三维矩阵(Nfin,Nxin,Nyin),权值是四维矩阵(Nfout,Nfout,Kx,Ky),输出神经元是三维矩阵(Nfout,Nxout,Nyout),其中Nfin是输入特征图像数量,(Nxin,Nyin)是输入特征图像大小,NfouL是输出特征图像数量,(Kx,Ky)是卷积核大小,(Nxout,Nyout)是输出特征图像大小。完成一个输出神经元需要Nfin×Kx×Ky次乘加运算,输出神经元数量为Nfout×Nxout×Nyout,完成整个卷积层总共需要Nfout×Nxout×Nyout×Nfin×Kx×Ky次乘加运算。在进行任务切分时,将输出神经元按照(Bfout,Bxout,Byout)的块大小进行切分,同时对权值按照(Bfout,Bfin,Bx,By)的块大小进行切分,则每一个子任务用(Bfout,Bfin,Bx,By)权值计算Bfout×Bxout×Byout个输出神经元的中间结果,每个输出神经元中间结果进行Bfin×Bx×By次乘加运算,共需要完成Bfout×Bxout×Byout×Bfin×Bx×By次乘加运算。其中Bfout是大于0小于等于Nfout的正整数,Bxout是大于0小于等于Nxout的正整数,Byout是大于0小于等于Nyout的正整数,Bfin是大于0小于等于Nfin的正整数,Bx是大于0小于等于Kx的正整数,By是大于0小于等于Ky的正整数。这种任务切分方式的子任务之间不存在依赖关系。
对神经网络的一个全连接层计算进行任务切分,全连接层输入神经元是Nin,权值是二维矩阵(Nout,Nin),输出神经元Nout,其中Nin是输入神经元数量,Nout是输出神经元数量。完成一个输出神经元需要Nin次乘加运算,输出神经元数量为Nout,完成整个全连接层总共需要Nout×Nin次乘加运算。在进行任务切分时,将输出神经元按照Bout的块大小进行切分,同时对权值按照(Bout,Bin)的块大小进行切分,则每一个子任务用(Bout,Bin)的权值矩阵计算Bout个输出神经元的中间结果,每一个输出神经元的中间需要完成Bin次乘加运算,共需要完成Bout×Bin次乘加运算。其中Bout是大于0小于等于Nout的正整数,Bin是大于0小于等于Nin的正整数。这种任务切分方法的子任务之间不存在依赖关系。
对神经网络的一个池化层计算进行任务切分,池化层输入神经元是Nin,输出神经元Nout,其中Nin,Nout是大于0的正整数,池化操作包括但不仅限于平均值池化,最大值池化,中值池化。在进行任务切分时,将输出神经元按照Bout的块大小进行切分,则每一个子任务完成Bout个输出神经元的计算。其中Bout是大于0小于等于Nout的正整数,Bin是大于0小于等于Nin的正整数。这种任务切分方式的子任务之间不存在依赖关系。
对神经网络的一个激活层计算进行任务切分,激励输入神经元是Nin,输出神经元Nout,其中Nin,Nout是大于0的正整数,激活函数包括但不仅限于sigmoid、tanh、relu、softmax。在进行任务切分时,将输出神经元按照Bout的块大小进行切分,则每一个子任务完成Bout个输出神经元的计算。其中Bout是大于0小于等于Nout的正整数。这种任务切分方式的子任务之间不存在依赖关系。
任务切分粒度选择单元20选择任务划分采用的粒度,并不限于仅选择上述的一种粒度,还可以是多种粒度的组合,例如一个神经网络应用可以组合第四粒度任务单元和第五粒度任务切分单元的切分方式。将神经网络应用首先按照第四粒度任务切分单元14的切分方法分为n个子任务,再将其中的p个子任务按照第五粒度任务切分单元1的切分方式进行切分。
在其他实施例中,粒度任务切分单元10可以包括第一至第五粒度任务切分单元中的至少一个,不一定包括全部第一至第五粒度任务切分单元。
在其他实施例中,粒度任务切分单元10还可以包括混合粒度任务切分单元,用于组合第一至第五粒度任务切分单元的切分方式,供任务切分粒度选择单元20选择。
本发明另一实施例提供一任务调度装置,图2为本发明一实施例任务调度装置的结构框图,如图2所示,任务调度装置300包括任务队列单元30、监测单元40以及任务调度单元50。神经网络任务调度装置300能够综合考虑任务之间的依赖关系,任务的局部性,任务切分粒度,核的运行频率及负载进行任务调度,提高服务质量,提高核的利用率,保证核之间的任务均衡,减少能耗。
任务队列单元30缓存所有未调度的神经网络任务,并且可选择性地存储每一个待调度任务的执行时间,任务依赖关系图,任务资源在核内处理分布情况,神经网络任务例如是上一实施例中切分的子任务。
监测单元40实时检测多核神经网络处理器的整体服务质量以及各核的工作状态,例如为每一个核的利用率,工作负载,工作频率,核内私有任务队列中的任务数量,任务完成时间。
任务调度单元50从未调度任务中选择待调度任务,根据待调度任务信息及所述各核工作状态,确定待调度任务和目标核之间的映射关系,将待调度任务分配到目标核中。
任务调度单元50可以每隔时间T对任务队列中未调度任务进行调度,T是大于0的实数。若未调度任务t的与其他任务存在依赖关系且前驱任务没有完成,则任务调度单元50不会调度任务t。
任务调度单元50选择从未调度任务中选择待调度任务方式可以采用如下至少一种方式:随机选择任务,选择预计执行时间最长的任务,选择预计执行时间最短的任务,选择占用资源最多的任务,选择占用资源最少的任务。
任务调度单元50可以采用以下调度方式中的至少一种将待调度任务分配调度至目标核。
第一种调度方式:统计每一个核私有任务队列中任务数量,选择私有任务队列中任务最少的核作为目标核,将待调度任务分给该目标核;
第二种调度方式:统计每一个核完成私有任务队列中所有任务的时间,选择完成任务时间最短的核作为目标核,将待调度任务分给该目标核;
第三种调度方式:统计待调度任务所需资源在所有核的分布情况,选择拥有资源数量最多的核作为目标核,将待调度任务分给该目标核;
第四种调度方式:采用启发式算法将待调度任务分配到目标核,启发式算法包括但不仅限于是遗传算法,蚁群算法,模拟退火算法。
本发明再一实施例提供一种多核处理器,例如为多核神经网络处理器,图3为本发明再一实施例多核处理器的结构框图,如图3所示,多核神经网络处理器1000包括:J个处理核,J是大于1的正整数,前述实施例中的任务切分装置100以及任务调度装置300。
任务切分装置100切分输入的神经网络应用,使得切分后的子任务能够满足系统实时性,任务调度装置300进行神经网络子任务调度,能够提高服务质量,提高处理核的利用率,保证处理核之间的任务均衡,减少能耗。神经网络处理核进行神经网络运算,完成神经网络子任务,J个神经网络处理核之间的拓扑结构包括但不仅限于是一维线性,二维mesh,二维星形,三维立方等。
图4为本发明再一实施例中神经网络处理的每一个神经网络处理核的结构框图,如图4所示,神经网络处理核500包括存储单元501,控制单元502、选数单元503和运算单元504。
存储单元501,用于存储神经网络的神经元、权值以及指令;当神经网络子任务处理稀疏神经网络时,存放的权值为非零权值以及非零权值的位置信息。
指令控制单元502,用于接收神经网络专用指令,经过译码后生成控制信息控制选数单元和运算单元;
所述神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中控制指令控制神经网络执行过程。数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令,向量运算指令,标量运算指令,卷积神经网络运算指令,全连接神经网络运算指令,池化神经网络运算指令,RBM神经网络运算指令,LRN神经网络运算指令,LCN神经网络运算指令,LSTM神经网络运算指令,RNN神经网络运算指令,RELU神经网络运算指令,PRELU神经网络运算指令,SIGMOID神经网络运算指令,TANH神经网络运算指令,MAXOUT神经网络运算指令。逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
其中,RBM神经网络运算指令用于实现Restricted Boltzmann Machine(RBM)神经网络运算。
其中,LRN神经网络运算指令用于实现Local Response Normalization(LRN)神经网络运算。
其中,LSTM神经网络运算指令用于实现Long Short-Term Memory(LSTM)神经网络运算。
其中,RNN神经网络运算指令用于实现Recurrent Neural Networks(RNN)神经网络运算。
其中,RELU神经网络运算指令用于实现Rectified linear unit(RELU)神经网络运算。
其中,PRELU神经网络运算指令用于实现Parametric Rectified LinearUnit(PRELU)神经网络运算。
其中,SIGMOID神经网络运算指令用于实现S型生长曲线(SIGMOID)神经网络运算
其中,TANH神经网络运算指令用于实现双曲正切函数(TANH)神经网络运算。
其中,MAXOUT神经网络运算指令用于实现(MAXOUT)神经网络运算。
更具体的,它包括Cambricon指令集。
所述Cambricon指令集的特征在于,指令集中每一条指令长度为64bit,指令由操作码和操作数组成。指令集包含四种类型的指令,分别是控制指令(controlinstructions),数据传输指令(data transfer instructions),运算指令(computationalinstructions),逻辑指令(logical instructions)。
进一步的,控制指令用于控制执行过程。控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
进一步的,数据传输指令用于完成不同存储介质之间的数据传输。数据传输指令包括加载(load)指令,存储(store)指令,搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
进一步的,运算指令用于完成神经网络算术运算。运算指令包括矩阵运算指令,向量运算指令和标量运算指令。
更进一步的,矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrixmultiply vector),向量乘矩阵(vector multiply matrix),矩阵乘标量(matrixmultiply scalar),外积(outer product),矩阵加矩阵(matrix add matrix),矩阵减矩阵(matrix subtract matrix)。
更进一步的,向量运算指令完成神经网络中的向量运算,包括向量基本运算(vector elementary arithmetics),向量超越函数运算(vector transcendentalfunctions),内积(dot product),向量随机生成(random vector generator),向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加,减,乘,除(add,subtract,multiply,divide),向量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
更进一步的,标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalar elementary arithmetics)和标量超越函数运算(scalar transcendentalfunctions)。其中标量基本运算包括标量加,减,乘,除(add,subtract,multiply,divide),标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
进一步的,逻辑指令用于神经网络的逻辑运算。逻辑运算包括向量逻辑运算指令和标量逻辑运算指令。
更进一步的,向量逻辑运算指令包括向量比较(vector compare),向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但大于,小于,等于,大于等于,小于等于和不等于。向量逻辑运算包括与,或,非。
更进一步的,标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalar logical operations)。其中标量比较包括但大于,小于,等于,大于等于,小于等于和不等于。标量逻辑运算包括与,或,非。
选数单元503,用于接收输入神经元和非零权值位置信息,选出非零权值对应的神经元。也就是说:对于每个输出神经元数据,选数单元去除掉与该输出神经元数据没有对应的非零权值数据的输入神经元数据。
运算单元504,用于接收输入非零权值对应的神经元和对应的非零权值,完成神经网络训练运算并将输出神经元重新传输给存储部分。
具体地,运算单元504根据存储单元中存储的指令对所述数据执行相应运算。运算单元504包括但不仅限于三个部分,第一部分为乘法器,第二部分为一个或多个加法器,第三部分为激活函数单元。优选的,第二部分的一个或多个加法器组成加法树。第一部分将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1×in2;第二部分将输入数据in1通过加法树逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,过称为:out=in1[1]+in1[2]+...+in1[N],和/或将输入数据(in1)通过加法数累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过称为:out=in1+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。
运算单元还可以包括池化单元,池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
所述运算单元执行运算包括但不仅限于,第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;第二部分执行加法树运算,用于将输入数据1通过加法树逐级相加,或者将所述输入数据1通过和输入数据2相加得到输出数据;第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据。以上几个部分的运算可以自由组合,从而实现各种不同功能的运算。
神经网络处理核500还可包括预处理模块505,如图4所示,该模块对原始数据进行预处理,包括切分、高斯滤波、二值化、正则化、归一化等等。
神经网络处理核500还可包括指令缓存506,非零权值缓存507,非零权值位置缓存508,输入神经元缓存509,输出神经元缓存510。指令缓存506,用于存储专用指令;非零权值缓存507,用于缓存非零权值数据;非零权值位置缓存508,用于缓存非零权值位置数据并根据非零权值位置数据将输入数据中每个权值一一对应到相应的输入神经元;输入神经元缓存509,用于缓存输入神经元;输出神经元缓510,用于缓存运算单元输出的输出神经元。
非零权值位置数据表示每个输入神经元数据和每个输出神经元数据是否有对应的权值非零的权值数据。
一种情形下非零权值位置缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示该输出神经元的连接关系。另一种情形下非零权值位置缓存一一对应的方法为采用1表示有连接,0表示无连接,每组输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示该输入神经元的连接关系。另一种情形下非零权值位置缓存一一对应的方法为将一组输出神经元第一个连接所在的输入神经元位置距离第一个输入神经元的距离、所述输出神经元第二组输入神经元距离上一个输入神经元的距离,所述输出神经元第三组输入神经元距离上一个输入神经元的距离,……,依次类推,直到穷举所述输出神经元的所有输入神经元,来表示所述输出神经元的连接关系。
上述的有连接关系为每个输入神经元数据和每个输出神经元数据有对应的非零的权值数据,无连接意思为每个输入神经元数据和每个输出神经元数据是否有对应的非零的权值数据。
神经网络处理核500还可包括直接数据存取单元DMA 512(direct memoryaccess)。
DMA用于在所述存储单元、指令缓存、非零权值缓存、非零权值位置缓存,输入神经元缓存和输出神经元缓存中进行数据或者指令读写。
在一些实施例里,公开了一种芯片,其包括了上述神经网络处理器。
在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,公开了一种电子装置,其包括了上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本发明又一实施例提供一种任务切分方法,用于神经网络,选择以下五种粒度任务切分方式中的至少一个来进行任务切分。
第一粒度任务切分方式将任务整体作为一子任务,具体的,将完成M个样本计算作为一个子任务。这种任务切分方式只生成一个子任务,子任务之间不存在依赖关系。
第二粒度任务切分方式将完成若干个样本计算作为一个子任务。神经网络被切分成为m个子任务,第i个任务完成Mi个样本的计算,其中m是大于1小于等于M的正整数,i=1,2,3,……m,Mi是大于0小于M的正整数,且满足M1+M2+…+Mm=M。这种任务切分方式的m个子任务之间不存在依赖关系。
第三粒度任务切分方式可以按照神经网络的层类型对神经网络应用进行任务切分,相同类型层的计算作为一个任务。神经网络的层类型包括但不仅限于卷积层,全连接层,LSTM层,池化层,激活层,LRN层,BN层。这种任务切分方式的子任务之间存在复杂的依赖关系。
第四粒度任务切分方式可以按照神经网络的层间结构对神经网络应用进行任务切分,相邻若干个层的计算作为一个子任务。神经网络应用被切分为n个子任务,第一个子任务完成神经网络第一层到第N1层,共计N1层计算,第二个子任务完成第N1+1层到第N1+N2层,共计N2层神经网络计算,第i个子任务完成第N1+…+Ni-1+1层到第N1+…+Ni层,共计Ni层计算。其中n是大于0小于等于N的正整数,,i=1,2,3,……n,Ni是大于0小于等于N的正整数且满足N1+N2+…+Ni+…+Nn=N。这种任务切分方式的子任务之间存在链式的依赖关系,其中第i个子任务是第i+1个子任务的前驱任务,第i+1个任务是第i个任务的后继任务,第i+1个任务必须等待第i个任务完成才能开始执行。
第五粒度任务切分单元方式按照神经网络的层内结构对神经网络应用进行任务切分,神经网络层内的计算可以进一步被切分为子任务。按神经网络层内的计算的切分包括但不限于对神经网络的一卷积层计算、全连接层计算、池化层计算或激活层计算进行任务切分。
本发明进一步一实施例提供一种任务调度方法,能够综合考虑任务之间的依赖关系,任务的局部性,任务切分粒度,核的运行频率及负载进行任务调度,提高服务质量,提高核的利用率,保证核之间的任务均衡,减少能耗。该任务调度方法包括以下步骤:
缓存所有未调度的神经网络任务;
具体地,可选择性地存储每一个待调度任务的执行时间,任务依赖关系图,任务资源在核内处理分布情况,神经网络任务例如是上一实施例中切分的子任务;
实时检测多核神经网络处理器的整体服务质量以及各核的工作状态;
具体地,各核的工作状态,例如为每一个核的利用率,工作负载,工作频率,核内私有任务队列中的任务数量,任务完成时间。
从未调度任务中选择待调度任务,根据待调度任务信息及所述各核工作状态,确定待调度任务和目标核之间的映射关系,将待调度任务分配到目标核中。
任务调度可以每隔时间T对任务队列中未调度任务进行调度,T是大于0的实数。若未调度任务t的与其他任务存在依赖关系且前驱任务没有完成,则不调度任务t。
选择从未调度任务中选择待调度任务方式可以采用如下至少一种方式:随机选择任务,选择预计执行时间最长的任务,选择预计执行时间最短的任务,选择占用资源最多的任务,选择占用资源最少的任务。
将待调度任务分配调度至目标核可以采用以下调度方式中的至少一种:第一种调度方式:统计每一个核私有任务队列中任务数量,选择私有任务队列中任务最少的核作为目标核,将待调度任务分给该目标核;
第二种调度方式:统计每一个核完成私有任务队列中所有任务的时间,选择完成任务时间最短的核作为目标核,将待调度任务分给该目标核;
第三种调度方式:统计待调度任务所需资源在所有核的分布情况,选择拥有资源数量最多的核作为目标核,将待调度任务分给该目标核;
第四种调度方式:采用启发式算法将待调度任务分配到目标核,启发式算法包括但不仅限于是遗传算法,蚁群算法,模拟退火算法。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被承载在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (24)

1.一种任务切分装置,其中,包括:
粒度任务切分单元,用于采用至少一种粒度对任务进行切分形成子任务;以及
任务切分粒度选择单元,用于选择采用的粒度。
2.根据权利要求1所述的任务切分装置,用于神经网络,其中,粒度任务切分单元包括以下单元中的至少一个,
第一粒度任务切分单元,用于将任务整体作为一子任务;
第二粒度任务切分单元,用于将选取任务中部分样本计算作为子任务来切分任务;
第三粒度任务切分单元,用于按照神经网络的层类型进行任务切分,相同类型层的计算作为一子任务;
第四粒度任务切分单元,用于按照神经网络的层间结构进行任务切分,若干相邻层的计算作为一子任务;
第五粒度任务切分单元,用于按照神经网络的层内结构进行任务切分,将神经网络层内的计算切分为子任务。
3.根据权利要求2所述的任务切分装置,其中,所述任务切分粒度选择单元基于神经网络需要处理的样本数量、神经网络的拓扑结构以及每一层的计算量中的至少一个选择第一至第五粒度任务切分单元中的至少一个来进行任务切分。
4.根据权利要求2所述的任务切分装置,其中,所述按照神经网络的层内结构进行任务切分包括:对神经网络的卷积层计算、全连接层计算、池化层计算或激活层计算进行任务切分。
5.根据权利要求4所述的任务切分装置,其中,所述对神经网络的卷积层计算进行切分包括:
当所述神经网络的卷积层输入神经元是三维矩阵(Nfin,Nxin,Nyin),权值是四维矩阵(Nfout,Nfout,Kx,Ky),输出神经元是三维矩阵(Nfout,Nxout,Nyout)时,其中Nfin是输入特征图像数量,(Nxin,Nyin)是输入特征图像大小,Nfout是输出特征图像数量,(Kx,Ky)是卷积核大小,(Nxout,Nyout)是输出特征图像大小,Nfin,Nxin,Nyin,Kx,Ky,Nfout,Nxout,Nyout均为正整数,将输出神经元按照(Bfout,Bxout,Byout)的块大小进行切分,同时对权值按照(Bfout,Bfin,Bx,By)的块大小进行切分,其中,Bfout,Bxout,Byout,Bfout,Bfin,Bx,By均为正整数,且0<Bfout≤≤Nfout,0<Bxout≤Nxout,0<Byout≤Nyout,0<Bfin≤Nfin,0<Bx≤Kx,0<By≤Ky。
6.一种任务处理装置,其中,包括:
权利要求1-5中任一所述的任务切分装置;以及
任务调度装置,所述任务调度装置包括:
任务队列单元,用于缓存未调度的任务,
监测单元,用于实时监测多核处理器各核工作状态;
任务调度单元,用于从未调度任务中选择待调度任务,并根据所述各核工作状态向目标核分配调度待调度任务。
7.根据权利要求6所述的任务处理装置,其中,所述任务调度单元采用以下方式中的至少一种来分配调度待调度任务至目标核:
统计每一个核私有任务队列中任务数量,选择私有任务队列中任务最少的核作为目标核;
统计每一个核完成私有任务队列中所有任务的时间,选择完成任务时间最短的核作为目标核;
统计待调度任务所需资源在所有核的分布情况,选择拥有资源数量最多的核作为目标核;以及
采用启发式算法将待调度任务分配到目标核。
8.根据权利要求7所述的任务处理装置,其中,所述启发式算法包括遗传算法,蚁群算法,模拟退火算法中的至少一个。
9.根据权利要求6所述的任务处理装置,其中,所述任务调度单元每隔时间T进行一次任务调度,待调度任务采用以下方式中的至少一种进行选择:
随机选择未调度的任务;
选择预计执行时间最长的未调度的任务;
选择预计执行时间最短的未调度的任务;
选择占用资源最多的未调度的任务;
选择占用资源最少的未调度的任务。
10.根据权利要求6所述的任务处理装置,其中,所述各核工作状态包括利用率,工作负载,工作频率,核内私有任务队列中的任务数量,核内任务完成时间中的至少一个。
11.一种多核处理器,其中包括:
J个处理核,J为正整数;以及
权利要求6-10中任一所述的任务处理装置。
12.根据权利要求11所述的多核处理器,其中,所述处理核之间的拓扑结构采用一维线性、二维mesh,二维星形、三维立方中的至少一种。
13.根据权利要求11所述的多核处理器,所述处理核包括神经网络处理核,所述神经网络处理核包括:
存储单元,用于存储神经网络的神经元、权值以及指令;
选数单元,用于接收输入神经元和非零权值位置信息,选出非零权值对应的神经元;
运算单元,用于接收输入非零权值对应的神经元和对应的非零权值,完成神经网络训练运算;以及
控制单元,用于接收神经网络的指令,经过译码后生成控制信息控制所述选数单元和运算单元。
14.根据权利要求13所述的多核处理器,其中,所述指令包括控制指令,数据传输指令,运算指令和逻辑指令中的至少一个。
15.根据权利要求14所述的多核处理器,其中所述运算指令用于完成神经网络的算术运算,包括矩阵运算指令,向量运算指令,标量运算指令,卷积神经网络运算指令,全连接神经网络运算指令,池化神经网络运算指令,RBM神经网络运算指令,LRN神经网络运算指令,LCN神经网络运算指令,LSTM神经网络运算指令,RNN神经网络运算指令,RELU神经网络运算指令,PRELU神经网络运算指令,SIGMOID神经网络运算指令,TANH神经网络运算指令,MAXOUT神经网络运算指令中的至少一个。
16.一种任务切分方法,其中,用于神经网络,选择以下任务切分方式中的至少一个来进行任务切分:
将任务整体作为一子任务;
将选取任务中部分样本计算作为子任务来切分任务;
按照神经网络的层类型进行任务切分,相同类型层的计算作为一子任务;
按照神经网络的层间结构进行任务切分,若干相邻层的计算作为一子任务;
按照神经网络的层内结构进行任务切分,将神经网络层内的计算切分为子任务。
17.根据权利要求16所述的任务切分方法,其中,基于神经网络需要处理的样本数量、神经网络的拓扑结构以及每一层的计算量中的至少一个来选择所述任务切分装置中的至少一个来进行任务切分。
18.根据权利要求16所述的任务切分方法,其中,所述按照神经网络的层内结构进行任务切分包括:对神经网络的卷积层计算、全连接层计算、池化层计算或激活层计算进行任务切分。
19.根据权利要求18所述的任务切分方法,其中,所述对神经网络的卷积层计算进行切分包括:
当所述神经网络的卷积层输入神经元是三维矩阵(Nfin,Nxin,Nyin),权值是四维矩阵(Nfout,Nfout,Kx,Ky),输出神经元是三维矩阵(Nfout,Nxout,Nyout)时,其中Nfin是输入特征图像数量,(Nxin,Nyin)是输入特征图像大小,Nfout是输出特征图像数量,(Kx,Ky)是卷积核大小,(Nxout,Nyout)是输出特征图像大小,Nfin,Nxin,Nyin,Kx,Ky,Nfout,Nxout,Nyout均为正整数,将输出神经元按照(Bfout,Bxout,Byout)的块大小进行切分,同时对权值按照(Bfout,Bfin,Bx,By)的块大小进行切分,其中,Bfout,Bxout,Byout,Bfout,Bfin,Bx,By均为正整数,且0<Bfout≤Nfout,0<Bxout≤Nxout,0<Byout≤Nyout,0<Bfin≤Nfin,0<Bx≤Kx,0<By≤Ky。
20.一种任务处理方法,其中,包括:
权利要求16-19中任一所述的任务切分方法;以及
任务调度方法,所述任务调度方法包括:
缓存未调度的任务,所述任务包括权利要求16-19中任一任务切分装置切分的子任务;
实时监测多核处理器各核工作状态;以及
从未调度任务中选择待调度任务并根据所述各核工作状态向目标核分配调度待调度任务。
21.根据权利要求20所述的任务处理方法,其中,所述向目标核分配调度所述待调度任务采用以下方式中的至少一种执行:
统计每一个核私有任务队列中任务数量,选择私有任务队列中任务最少的核作为目标核;
统计每一个核完成私有任务队列中所有任务的时间,选择完成任务时间最短的核作为目标核;
统计待调度任务所需资源在所有核的分布情况,选择拥有资源数量最多的核作为目标核;以及
采用启发式算法将待调度任务分配到目标核。
22.根据权利要求21所述的任务处理方法,其中,所述启发式算法包括遗传算法,蚁群算法,模拟退火算法中的至少一个。
23.根据权利要求20所述的任务处理方法,其中,每隔时间T进行一次任务调度,待调度任务采用以下方式中的至少一种进行选择:
随机选择未调度的任务;
选择预计执行时间最长的未调度的任务;
选择预计执行时间最短的未调度的任务;
选择占用资源最多的未调度的任务;
选择占用资源最少的未调度的任务。
24.根据权利要求20所述的任务处理方法,其中,所述各核工作状态包括利用率,工作负载,工作频率,核内私有任务队列中的任务数量,核内任务完成时间中的至少一个。
CN201710721049.XA 2017-06-26 2017-08-21 任务切分装置及方法、任务处理装置及方法、多核处理器 Pending CN109426553A (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201710721049.XA CN109426553A (zh) 2017-08-21 2017-08-21 任务切分装置及方法、任务处理装置及方法、多核处理器
EP18824582.3A EP3637272A4 (en) 2017-06-26 2018-06-26 DATA-SHARING SYSTEM AND RELATED DATA-SHARING PROCESS
PCT/CN2018/092829 WO2019001418A1 (zh) 2017-06-26 2018-06-26 数据共享系统及其数据共享方法
US16/693,918 US10901815B2 (en) 2017-06-26 2019-11-25 Data sharing system and data sharing method therefor
US16/694,176 US11726844B2 (en) 2017-06-26 2019-11-25 Data sharing system and data sharing method therefor
US16/693,999 US11656910B2 (en) 2017-08-21 2019-11-25 Data sharing system and data sharing method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710721049.XA CN109426553A (zh) 2017-08-21 2017-08-21 任务切分装置及方法、任务处理装置及方法、多核处理器

Publications (1)

Publication Number Publication Date
CN109426553A true CN109426553A (zh) 2019-03-05

Family

ID=65497399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710721049.XA Pending CN109426553A (zh) 2017-06-26 2017-08-21 任务切分装置及方法、任务处理装置及方法、多核处理器

Country Status (2)

Country Link
US (1) US11656910B2 (zh)
CN (1) CN109426553A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110058943A (zh) * 2019-04-12 2019-07-26 三星(中国)半导体有限公司 用于电子设备的内存优化方法和设备
CN110347504A (zh) * 2019-06-28 2019-10-18 中国科学院空间应用工程与技术中心 众核计算资源调度方法及装置
CN110377340A (zh) * 2019-07-24 2019-10-25 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN110633153A (zh) * 2019-09-24 2019-12-31 上海寒武纪信息科技有限公司 一种用多核处理器实现神经网络模型拆分方法及相关产品
CN111191777A (zh) * 2019-12-27 2020-05-22 深圳云天励飞技术有限公司 一种神经网络处理器及其控制方法
CN112114942A (zh) * 2019-06-21 2020-12-22 北京灵汐科技有限公司 一种基于众核处理器的流式数据处理方法及计算设备
CN112214020A (zh) * 2020-09-23 2021-01-12 北京特种机械研究所 Agv调度系统任务框架的建立和任务处理的方法及装置
WO2021057720A1 (zh) * 2019-09-24 2021-04-01 安徽寒武纪信息科技有限公司 神经网络模型处理方法、装置、计算机设备及存储介质
WO2021057746A1 (zh) * 2019-09-24 2021-04-01 安徽寒武纪信息科技有限公司 神经网络处理方法、装置、计算机设备及存储介质
CN113495866A (zh) * 2020-03-19 2021-10-12 北京希姆计算科技有限公司 基于神经网络的数据计算方法及装置、多核架构芯片
CN113656073A (zh) * 2021-08-18 2021-11-16 哈尔滨工业大学 一种大模式集下基于并行调度模式重组方法、计算机及存储介质

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10948966B1 (en) * 2018-03-07 2021-03-16 Facebook, Inc. Systems and methods for optimizing power usage for systems within quality-of-service constraints
CN108776612A (zh) * 2018-04-11 2018-11-09 深圳大学 一种云计算任务分配方法、装置、设备及存储介质
US11449363B2 (en) 2018-05-31 2022-09-20 Neuralmagic Inc. Systems and methods for improved neural network execution
KR20200053886A (ko) * 2018-11-09 2020-05-19 삼성전자주식회사 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템
CN112202630A (zh) * 2020-09-16 2021-01-08 中盈优创资讯科技有限公司 一种基于无监督模型的网路质量异常检测方法及装置
CN113408718B (zh) * 2021-06-07 2024-05-31 厦门美图之家科技有限公司 设备处理器选择方法、系统、终端设备及存储介质
US20230086727A1 (en) * 2021-09-22 2023-03-23 KDDI Research, Inc. Method and information processing apparatus that perform transfer learning while suppressing occurrence of catastrophic forgetting
US11960982B1 (en) 2021-10-21 2024-04-16 Neuralmagic, Inc. System and method of determining and executing deep tensor columns in neural networks
EP4246323A1 (en) * 2022-03-17 2023-09-20 Tata Consultancy Services Limited Method and system to process asynchronous and distributed training tasks

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866912A (zh) * 2012-10-16 2013-01-09 首都师范大学 一种单指令集异构多核系统静态任务调度方法
CN104021042A (zh) * 2014-06-18 2014-09-03 哈尔滨工业大学 基于arm、dsp及fpga的异构多核处理器及任务调度方法
WO2015042904A1 (zh) * 2013-09-29 2015-04-02 华为技术有限公司 一种多核系统中资源池的调度方法、装置和系统
CN105159762A (zh) * 2015-08-03 2015-12-16 冷明 基于贪心策略的启发式云计算任务调度方法
CN106062786A (zh) * 2014-09-12 2016-10-26 微软技术许可有限责任公司 用于训练神经网络的计算系统
CN106909971A (zh) * 2017-02-10 2017-06-30 华南理工大学 一种面向多核计算环境的bp神经网络并行化方法

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100230454B1 (ko) 1997-05-28 1999-11-15 윤종용 다중처리 시스템의 캐시메모리 검사방법
US20040193693A1 (en) 2001-06-29 2004-09-30 Gangwal Om Prakash Data processing apparatus and method fo operating a data processing apparatus
US20060041715A1 (en) 2004-05-28 2006-02-23 Chrysos George Z Multiprocessor chip having bidirectional ring interconnect
CN1305002C (zh) 2004-07-15 2007-03-14 清华大学 多注册指纹融合方法
JP5040136B2 (ja) 2006-03-27 2012-10-03 富士通セミコンダクター株式会社 チューニング支援装置、チューニング支援プログラム、チューニング支援プログラムを記録したコンピュータ読み取り可能な記録媒体およびチューニング支援方法
JP4609521B2 (ja) 2008-04-21 2011-01-12 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
JP5343523B2 (ja) * 2008-11-17 2013-11-13 富士通株式会社 ジョブ管理装置、ジョブ管理方法およびジョブ管理プログラム
CN101739867B (zh) 2008-11-19 2012-03-28 中国科学院自动化研究所 运用计算机对口语翻译质量进行评分的方法
US8677075B2 (en) 2010-05-18 2014-03-18 Lsi Corporation Memory manager for a network communications processor architecture
EP2494454A4 (en) 2009-10-30 2013-05-15 Intel Corp TWO-WAY COMMUNICATION SUPPORT FOR HETEROGENIC PROCESSORS ENERGY COMPUTER PLATFORM
EP2596430B1 (en) * 2010-07-21 2019-06-19 Sqream Technologies Ltd A system and method for the parallel execution of database queries over cpus and multi core processors
JP5408356B2 (ja) * 2010-08-10 2014-02-05 富士通株式会社 スケジューラプログラム、マルチコアプロセッサシステムおよびスケジューリング方法
US8635412B1 (en) 2010-09-09 2014-01-21 Western Digital Technologies, Inc. Inter-processor communication
CN101980149B (zh) 2010-10-15 2013-09-18 无锡中星微电子有限公司 主处理器与协处理器通信系统及通信方法
US8799916B2 (en) * 2011-02-02 2014-08-05 Hewlett-Packard Development Company, L. P. Determining an allocation of resources for a job
CN102184157B (zh) 2011-05-19 2012-10-10 华东师范大学 一种基于双处理器协作的信息显示装置
CN102831011B (zh) 2012-08-10 2015-11-18 上海交通大学 一种基于众核系统的任务调度方法及装置
CN102930866B (zh) 2012-11-05 2014-05-21 广州市神骥营销策划有限公司 一种用于口语练习的学生朗读作业的评判方法
CN103019656B (zh) 2012-12-04 2016-04-27 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
CN103177733B (zh) 2013-03-11 2015-09-09 哈尔滨师范大学 汉语普通话儿化音发音质量评测方法与系统
CN103347037A (zh) 2013-05-29 2013-10-09 成都瑞科电气有限公司 一种基于wcf实现的通信前置机系统及通讯方法
CN103530600B (zh) 2013-06-06 2016-08-24 东软集团股份有限公司 复杂光照下的车牌识别方法及系统
US20150012711A1 (en) 2013-07-04 2015-01-08 Vakul Garg System and method for atomically updating shared memory in multiprocessor system
US9612879B2 (en) * 2013-08-01 2017-04-04 Texas Instruments Incorporated System constraints-aware scheduler for heterogeneous computing architecture
KR101666395B1 (ko) * 2013-10-14 2016-10-14 한국전자통신연구원 멀티코어 환경에서 우선순위 기반의 실시간 운영체제의 태스크 스케줄링 방법
US10915468B2 (en) 2013-12-26 2021-02-09 Intel Corporation Sharing memory and I/O services between nodes
CN104978971B (zh) 2014-04-08 2019-04-05 科大讯飞股份有限公司 一种口语评测方法及系统
CN103928023B (zh) 2014-04-29 2017-04-05 广东外语外贸大学 一种语音评分方法及系统
CN104268603B (zh) 2014-09-16 2017-04-12 科大讯飞股份有限公司 用于文字性客观题的智能阅卷方法及系统
US9971397B2 (en) 2014-10-08 2018-05-15 Apple Inc. Methods and apparatus for managing power with an inter-processor communication link between independently operable processors
CN104463101B (zh) 2014-11-06 2017-08-25 科大讯飞股份有限公司 用于文字性试题的答案识别方法及系统
CN104464423A (zh) 2014-12-19 2015-03-25 科大讯飞股份有限公司 一种口语考试评测的校标优化方法及系统
EP3035204B1 (en) 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
KR20160091786A (ko) 2015-01-26 2016-08-03 삼성전자주식회사 사용자 관리 방법 및 사용자 관리 장치
CN106407145A (zh) 2015-08-03 2017-02-15 联想(北京)有限公司 接口访问方法、系统及存储卡
US9778961B2 (en) * 2015-09-14 2017-10-03 Qualcomm Incorporated Efficient scheduling of multi-versioned tasks
US10084658B2 (en) * 2015-09-28 2018-09-25 Cisco Technology, Inc. Enhanced cloud demand prediction for smart data centers
US9965329B2 (en) * 2015-10-12 2018-05-08 Advanced Micro Devices, Inc. Method and apparatus for workload placement on heterogeneous systems
US9792896B2 (en) 2015-12-15 2017-10-17 Facebook, Inc. Providing intelligent transcriptions of sound messages in a messaging application
CN105678253B (zh) 2016-01-04 2019-01-18 东南大学 半监督人脸年龄估计装置及半监督人脸年龄估计方法
CN107545303B (zh) 2016-01-20 2021-09-07 中科寒武纪科技股份有限公司 用于稀疏人工神经网络的计算装置和运算方法
CN106056212B (zh) 2016-05-25 2018-11-23 清华大学 一种人工神经网络计算核
CN107590153B (zh) * 2016-07-08 2021-04-27 微软技术许可有限责任公司 使用卷积神经网络的对话相关性建模
CN106502806B (zh) 2016-10-31 2020-02-14 华为技术有限公司 一种总线协议命令处理装置及相关方法
CN106781784A (zh) 2017-01-04 2017-05-31 王骁乾 一种智能批改系统
CN106897248A (zh) 2017-01-08 2017-06-27 广东工业大学 基于异构多处理器阵列的低功耗重构技术
CN106682702A (zh) 2017-01-12 2017-05-17 张亮 深度学习方法和系统
CN107729990B (zh) 2017-07-20 2021-06-08 上海寒武纪信息科技有限公司 支持离散数据表示的用于执行正向运算的装置及方法
CN107590531A (zh) 2017-08-14 2018-01-16 华南理工大学 一种基于文本生成的wgan方法
CN107832768A (zh) 2017-11-23 2018-03-23 盐城线尚天使科技企业孵化器有限公司 基于深度学习的高效阅卷方法和阅卷系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866912A (zh) * 2012-10-16 2013-01-09 首都师范大学 一种单指令集异构多核系统静态任务调度方法
WO2015042904A1 (zh) * 2013-09-29 2015-04-02 华为技术有限公司 一种多核系统中资源池的调度方法、装置和系统
CN104021042A (zh) * 2014-06-18 2014-09-03 哈尔滨工业大学 基于arm、dsp及fpga的异构多核处理器及任务调度方法
CN106062786A (zh) * 2014-09-12 2016-10-26 微软技术许可有限责任公司 用于训练神经网络的计算系统
CN105159762A (zh) * 2015-08-03 2015-12-16 冷明 基于贪心策略的启发式云计算任务调度方法
CN106909971A (zh) * 2017-02-10 2017-06-30 华南理工大学 一种面向多核计算环境的bp神经网络并行化方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SHAOLI LIU等: "Cambricon: An Instruction Set Architecture for Neural Networks", 《ACM/IEEE 43RD ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE》 *
SHIJIN ZHANG等: "Cambricon-X: An Accelerator for Sparse Neural Networks", 《ACM/IEEE 49TH ANNUAL INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE》 *
余子健,马德,严晓浪,沈君成: "基于FPGA的卷积神经网络加速器", 《计算机工程》 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110058943A (zh) * 2019-04-12 2019-07-26 三星(中国)半导体有限公司 用于电子设备的内存优化方法和设备
CN110058943B (zh) * 2019-04-12 2021-09-21 三星(中国)半导体有限公司 用于电子设备的内存优化方法和设备
CN112114942A (zh) * 2019-06-21 2020-12-22 北京灵汐科技有限公司 一种基于众核处理器的流式数据处理方法及计算设备
CN110347504A (zh) * 2019-06-28 2019-10-18 中国科学院空间应用工程与技术中心 众核计算资源调度方法及装置
CN110377340B (zh) * 2019-07-24 2021-06-01 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN110377340A (zh) * 2019-07-24 2019-10-25 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN110633153A (zh) * 2019-09-24 2019-12-31 上海寒武纪信息科技有限公司 一种用多核处理器实现神经网络模型拆分方法及相关产品
WO2021057720A1 (zh) * 2019-09-24 2021-04-01 安徽寒武纪信息科技有限公司 神经网络模型处理方法、装置、计算机设备及存储介质
WO2021057746A1 (zh) * 2019-09-24 2021-04-01 安徽寒武纪信息科技有限公司 神经网络处理方法、装置、计算机设备及存储介质
WO2021129116A1 (zh) * 2019-12-27 2021-07-01 深圳云天励飞技术股份有限公司 一种神经网络处理器及其控制方法
CN111191777A (zh) * 2019-12-27 2020-05-22 深圳云天励飞技术有限公司 一种神经网络处理器及其控制方法
CN111191777B (zh) * 2019-12-27 2022-07-26 深圳云天励飞技术股份有限公司 一种神经网络处理器及其控制方法
CN113495866A (zh) * 2020-03-19 2021-10-12 北京希姆计算科技有限公司 基于神经网络的数据计算方法及装置、多核架构芯片
CN112214020A (zh) * 2020-09-23 2021-01-12 北京特种机械研究所 Agv调度系统任务框架的建立和任务处理的方法及装置
CN113656073A (zh) * 2021-08-18 2021-11-16 哈尔滨工业大学 一种大模式集下基于并行调度模式重组方法、计算机及存储介质

Also Published As

Publication number Publication date
US20200089534A1 (en) 2020-03-19
US11656910B2 (en) 2023-05-23

Similar Documents

Publication Publication Date Title
CN109426553A (zh) 任务切分装置及方法、任务处理装置及方法、多核处理器
CN110502330A (zh) 处理器及处理方法
JP6821002B2 (ja) 処理装置と処理方法
CN109901878B (zh) 一种类脑计算芯片及计算设备
CN110363294A (zh) 利用网络中的路径来表示神经网络以提高神经网络的性能
CN108734281B (zh) 处理装置、处理方法、芯片及电子装置
He et al. Optimising the job-shop scheduling problem using a multi-objective Jaya algorithm
CN110262901A (zh) 一种数据处理方法及数据处理系统
CN109240746A (zh) 一种用于执行矩阵乘运算的装置和方法
CN110163356A (zh) 一种计算装置及方法
CN109840154A (zh) 一种移动云环境下基于任务依赖的计算迁移方法
El-Ashmawi et al. A modified salp swarm algorithm for task assignment problem
CN108170640A (zh) 神经网络运算装置及应用其进行运算的方法
CN110163350A (zh) 一种计算装置及方法
US11709783B1 (en) Tensor data distribution using grid direct-memory access (DMA) controller
CN110163334A (zh) 集成电路芯片装置及相关产品
CN110276447A (zh) 一种计算装置及方法
Pluhacek et al. A review of real-world applications of particle swarm optimization algorithm
CN108320018A (zh) 一种人工神经网络运算的装置及方法
CN109993293A (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
CN107861804A (zh) 大数据计算方法、计算系统、计算机设备及可读存储介质
EP3971787A1 (en) Spatial tiling of compute arrays with shared control
CN109389208A (zh) 数据的量化装置及量化方法
CN107123154A (zh) 目标对象的渲染方法和装置
Huang et al. Improved firefly algorithm with courtship learning for unrelated parallel machine scheduling problem with sequence-dependent setup times

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