CN115469993A - 映射方法、映射装置、众核系统、计算机可读介质 - Google Patents

映射方法、映射装置、众核系统、计算机可读介质 Download PDF

Info

Publication number
CN115469993A
CN115469993A CN202110650763.0A CN202110650763A CN115469993A CN 115469993 A CN115469993 A CN 115469993A CN 202110650763 A CN202110650763 A CN 202110650763A CN 115469993 A CN115469993 A CN 115469993A
Authority
CN
China
Prior art keywords
core
core object
mapping
many
neural network
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
CN202110650763.0A
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.)
Beijing Lynxi Technology Co Ltd
Original Assignee
Beijing Lynxi 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 Beijing Lynxi Technology Co Ltd filed Critical Beijing Lynxi Technology Co Ltd
Priority to CN202110650763.0A priority Critical patent/CN115469993A/zh
Publication of CN115469993A publication Critical patent/CN115469993A/zh
Pending legal-status Critical Current

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开提供一种映射方法,包括:将神经网络映射到多个核心对象簇,每个所述核心对象簇包括至少一个核心对象,每个所述核心对象簇对应所述神经网络中的一个计算节点,每个所述核心对象描述众核系统的一个处理核的配置信息;将多个所述核心对象簇映射到所述众核系统。本公开还提供一种映射装置、一种众核系统、一种计算机可读介质。

Description

映射方法、映射装置、众核系统、计算机可读介质
技术领域
本公开涉及计算机技术领域,特别涉及一种映射方法、一种映射装置、一种众核系统、一种计算机可读介质。
背景技术
神经网络算法是一种主流的人工智能算法,具有高计算量、高并行度等特点。上述特点决定了对运行神经网络程序的硬件的新的需求。
在一些相关技术中,缺少将神经网络程序与运行神经网络程序的硬件相结合的解决方案。
发明内容
本公开提供一种映射方法、一种映射装置、一种众核系统、一种计算机可读介质。
第一方面,本公开实施例提供一种映射方法,包括:
将神经网络映射到多个核心对象簇,每个所述核心对象簇包括至少一个核心对象,每个所述核心对象簇对应所述神经网络中的一个计算节点,每个所述核心对象描述众核系统的一个处理核的配置信息;
将多个所述核心对象簇映射到所述众核系统。
在一些实施例中,将神经网络映射到多个核心对象簇的步骤包括:
根据所述神经网络生成计算图,所述计算图包括多个计算子图,每个所述计算子图对应一个所述计算节点;
根据所述计算图生成多个所述核心对象簇,以完成所述神经网络到多个所述核心对象簇的映射。
在一些实施例中,根据所述计算图生成多个所述核心对象簇的步骤包括:
根据各个所述核心对象簇对应的所述计算子图,生成组成各个所述核心对象簇的多个所述核心对象;
根据所述计算图确定多个所述核心对象簇的关联关系。
在一些实施例中,所述计算图包括多个工作相位,每一个所述计算子图对应一个所述工作相位,每一个所述计算子图包括多个计算步骤;对于任意一个所述核心对象簇,根据所述计算图生成多个所述核心对象簇的步骤包括:
根据所述核心对象簇对应的多个所述计算步骤,生成多个所述核心对象,每一个所述计算步骤对应至少一个所述核心对象。
在一些实施例中,根据所述核心对象簇对应的多个所述计算步骤,生成多个所述核心对象的步骤包括:
根据所述核心对象簇对应的多个所述计算步骤,确定所述核心对象簇中的各个所述核心对象的配置信息,所述核心对象的配置信息描述所述处理核的配置信息;
实例化各个所述核心对象簇,并将各个所述核心对象的配置信息配置到所述核心对象中。
在一些实施例中,所述核心对象的配置信息包括时序信息和同步信息;根据所述核心对象簇对应的多个所述计算步骤,确定所述核心对象簇中的各个所述核心对象的配置信息的步骤包括:
根据多个所述计算步骤的关联关系,确定各个所述核心对象的所述时序信息和所述同步信息。
在一些实施例中,根据所述核心对象簇对应的多个所述计算步骤,确定所述核心对象簇中的各个所述核心对象的配置信息的步骤还包括:
根据各个所述核心对象对应的所述计算步骤,确定各个所述核心对象的内存信息、计算原语、参数信息中的至少一者。
在一些实施例中,多个所述核心对象簇的关联关系包括多个所述核心对象簇的连接关系和时序关系;根据所述计算图确定多个所述核心对象簇的关联关系的步骤包括:
根据所述计算图确定多个所述核心对象簇的数据流关系;
根据多个所述核心对象簇的数据流关系确定多个所述核心对象簇的连接关系;
根据多个所述核心对象簇的数据流关系确定多个所述核心对象簇的时序关系。
在一些实施例中,根据多个所述核心对象簇的数据流关系确定多个所述核心对象簇的时序关系的步骤包括:
根据多个所述核心对象簇的数据流关系生成工作相位图,所述工作相位图表征多个所述核心对象簇的时序关系。
在一些实施例中,根据各个所述核心对象簇对应的所述计算子图,生成组成各个所述核心对象簇的多个所述核心对象的步骤之前,根据所述计算图生成多个所述核心对象簇的步骤还包括:
根据所述神经网络和所述众核系统的处理核信息,从核心资源池中申请多个核心资源,每一个所述核心资源对应一个所述核心对象。
在一些实施例中,将多个所述核心对象簇映射到所述众核系统的步骤包括:
根据所述众核系统的拓扑结构,确定每个所述核心对象簇中的核心对象与所述众核系统中的处理核的对应关系。
在一些实施例中,将多个所述核心对象簇映射到所述众核系统的步骤还包括:
确定多个所述核心对象的连接关系;
进行多播检测,确定多播配置信息;
根据多个所述核心对象的连接关系和所述多播配置信息生成路由表。
在一些实施例中,将多个所述核心对象簇映射到所述众核系统的步骤还包括:
生成所述众核系统能够执行的可执行文件。
在一些实施例中,生成所述众核系统能够执行的可执行文件的步骤之后,将多个所述核心对象簇映射到所述众核系统的步骤还包括:
根据所述可执行文件进行仿真。
在一些实施例中,将神经网络映射到多个核心对象簇的步骤还包括:
根据所述计算图和多个所述核心对象簇对所述神经网络进行训练或精调,以对所述神经网络的权重和激活值进行量化和饱和处理。
在一些实施例中,将神经网络映射到多个核心对象簇的步骤之后,所述映射方法还包括:
确定所述神经网络映射到多个所述核心对象簇的性能信息,所述性能信息包括核心对象数量、存储资源利用率、时序资源利用率中的至少一者。
在一些实施例中,将神经网络映射到多个核心对象簇的步骤之后,所述映射方法还包括:
执行位级精度仿真,以确定执行效率信息。
第二方面,本公开实施例提供一种映射装置,包括:
一个或多个处理器;
存储器,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本公开实施例第一方面所述的任意一种映射方法;
一个或多个I/O接口,连接在所述处理器与存储器之间,配置为实现所述处理器与存储器的信息交互。
第三方面,本公开实施例提供一种众核系统,包括:
多个处理核;以及
片上网络,被配置为交互所述多个处理核间的数据和外部数据;
一个或多个所述处理核中存储有一个或多个指令,一个或多个所述指令被一个或多个所述处理核执行,以使一个或多个所述处理核能够执行本公开实施例第一方面所述的任意一种映射方法。
第四方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现本公开实施例第一方面所述的任意一种映射方法。
本公开实施例提供了一种将神经网络映射到众核系统的映射方法、一种能够执行所述映射方法的映射装置、一种能够执行所述映射方法的众核系统、一种存储有能够实现所述映射方法的计算机程序的计算机可读介质。在所述映射方法中,在软件层面用描述众核系统的处理核的核心对象组成对应神经网络的各个计算节点的核心对象簇,用核心对象簇搭建神经网络程序,然后将用核心对象簇搭建的神经网络程序映射到众核系统,核心对象簇中的每一个核心对象对应众核系统中的一个处理核,使得众核系统能够运行神经网络程序,从而实现了神经网络到众核系统的映射。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
图1是本公开实施例中一种映射方法的流程图;
图2是本公开实施例中另一种映射方法中部分步骤的流程图;
图3是本公开实施例中又一种映射方法中部分步骤的流程图;
图4是本公开实施例中再一种映射方法中部分步骤的流程图;
图5是本公开实施例中再一种映射方法中部分步骤的流程图;
图6是本公开实施例中计算节点到核心对象簇的映射示意图;
图7是本公开实施例中再一种映射方法中部分步骤的流程图;
图8是本公开实施例中工作相位图的一种可选实施方式的示意图;
图9是本公开实施例中再一种映射方法中部分步骤的流程图;
图10是本公开实施例中再一种映射方法中部分步骤的流程图;
图11是本公开实施例中一种映射装置的组成框图;
图12是本公开实施例中一种众核系统的组成框图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
第一方面,参照图1,本公开实施例提供一种映射方法,包括:
在步骤S100中,将神经网络映射到多个核心对象簇,每个所述核心对象簇包括至少一个核心对象,每个所述核心对象簇对应所述神经网络中的一个计算节点,每个所述核心对象描述众核系统的一个处理核的配置信息;
在步骤S200中,将多个所述核心对象簇映射到所述众核系统。
本公开实施对众核系统不做特殊限定,例如,众核系统可以由单个芯片构成;众核系统也可以是由多个子芯片构成的阵列,其中,每个子芯片具有多个计算单元,每个子芯片中可独立调度并拥有完整计算能力的最小计算单元称为处理核。在众核系统中,多个处理核可以联合工作,各个处理核可以分别独立运行程序指令,利用并行计算的能力加快程序的运行速度,并提供多任务处理能力。
在本公开实施例中,众核系统中的处理核相互独立并通过路由相互连接,每一个处理核都具有完整的计算能力和独立的存储空间,处理核运行程序指令时与存储在该处理核本地的数据进行交互。
在本公开实施例中,众核系统的处理核可以看作能够重新配置的功能单元,即,每个处理核都具有基本功能,并能够被配置为具有特定功能的功能核,至少一个配置为特定功能的处理核能够组成具有特定功能的处理核簇。
核心对象为根据处理核类实例化得到的,核心对象是对众核系统的处理核在软件层面的描述,由至少一个核心对象组成的核心对象簇是对由至少一个处理核组成的处理核簇的软件层面的描述。
本公开实施例对功能核类不做特殊限定。例如,功能核类包括第一功能核类、第二功能核类、第三功能核类,其中,第一功能核类作为基类定义了众核系统中处理核的基本功能;第二功能核类继承第一功能核类,定义了具有特定功能的功能核的功能;第三功能核类继承第二功能核类,定义了具有更多细分功能的功能核的功能;相应地,核心对象可以是根据第一功能核类实例化得到的,也可以是根据第二功能核实例化得到的,还可以是根据第三功能核实例化得到的。
需要说明的是,在步骤S100中,将神经网络映射到多个核心对象簇,即用多个核心对象簇搭建神经网络程序,每一个核心对象簇对应神经网络中的一个计算节点;在步骤S200中,将多个核心对象簇映射到众核系统,核心对象簇中的每一个核心对象对应众核系统中的一个处理核,众核系统中的处理核根据核心对象描述的配置信息被配置为具有相应功能的功能核,从而能够执行神经网络中的各个计算节点,使得众核系统能够运行神经网络程序,实现了将神经网络映射到众核系统。
还需要说明的是,本公开实施例对神经网络不做特殊限定。例如,神经网络可以是卷积神经网络(CNN,Convolutional Neural Networks)、多层感知器(MLP,MultilayerPerceptron)、长短时记忆网络(LSTM,Long Short Term Memory)、二维卷积网络(CONV2D)、向量乘积网络(MUL1D-1D)、向量矩阵乘积网络(MUL 1D-2D)、用户定义的其他网络中的任意一种。
本公开实施例提供了一种将神经网络映射到众核系统的映射方法,在软件层面用描述众核系统的处理核的核心对象组成对应神经网络的各个计算节点的核心对象簇,用核心对象簇搭建神经网络程序,然后将用核心对象簇搭建的神经网络程序映射到众核系统,核心对象簇中的每一个核心对象对应众核系统中的一个处理核,使得众核系统能够运行神经网络程序,从而实现了神经网络到众核系统的映射。
本公开实施例对于如何将神经网络分解为多个计算节点不做特殊限定。例如,按照神经网络中多个计算步骤的执行顺序对神经网络进行分解,每一个计算节点对应至少一个计算步骤;还可以将神经网络中多个计算步骤映射到多个硬件执行阶段,每一个硬件执行阶段为一个工作相位(Phase),每一个计算节点对应一个工作相位中的至少一个计算步骤;还可以根据神经网络计算计算图,根据计算图确定各个计算节点。
相应地,在一些实施例中,参照图2,步骤S100包括:
在步骤S110中,根据所述神经网络生成计算图,所述计算图包括多个计算子图,每个所述计算子图对应一个所述计算节点;
在步骤S120中,根据所述计算图生成多个所述核心对象簇,以完成所述神经网络到多个所述核心对象簇的映射。
在本公开实施例中,计算图中的计算子图对应一个计算节点,多个计算子图的连接关系代表各计算节点的计算之间的依赖关系。本公开实施例中根据计算图生成多个核心对象簇时,还根据各计算节点的计算之间的依赖关系确定多个核心对象簇的关联关系。
相应地,在一些实施例中,参照图3,步骤S120包括:
在步骤S121中,根据各个所述核心对象簇对应的所述计算子图,生成组成各个所述核心对象簇的多个所述核心对象;
在步骤S122中,根据所述计算图确定多个所述核心对象簇的关联关系。
需要说明的是,本公开实施例对多个核心对象簇的关联关系不做特殊限定。例如,多个核心对象簇的关联关系包括多个核心对象簇的数据流关系、时序关系等。
在本公开实施例中,通过步骤S120生成多个核心对象簇包括顺序分解(Sequential Decomposition)和并行分解(Parallel Decomposition)。顺序分解是指对应多个工作相位,生成多个核心对象簇,每一个核心对象簇对应一个工作相位;其中,可以有对应相同的工作相位的多个核心对象簇,即多个核心对象簇并行;也可以有对应不同工作相位的多个核心对象簇,即多个核心对象簇串行。本公开实施例对此不做特殊限定。并行分解是指根据每一个计算子图、每一个核心对象簇中的并行度,确定组成核心对象簇的多个核心对象;其中,每一个核心对象簇中,可以是一个核心对象对应一项计算任务;根据于扇入/扇出限制或计算效率、存储效率的限制,也可以是多个核心对象对应一项计算任务;每一个核心对象簇中,可以有多个并行的核心对象,还可以有多个串行的核心对象。本公开实施例对此也不做特殊限定。
相应地,在一些实施例中,所述计算图包括多个工作相位,每一个所述计算子图对应一个所述工作相位,每一个所述计算子图包括多个计算步骤;参照图4,对于任意一个所述核心对象簇,步骤S121包括:
在步骤S1211中,根据所述核心对象簇对应的多个所述计算步骤,生成多个所述核心对象,每一个所述计算步骤对应至少一个所述核心对象。
在本公开实施例中,核心对象是对众核系统的处理核在软件层面的描述,核心对象描述处理核的配置信息。核心对象中的配置信息是根据其对应的计算任务确定的,在将神经网络映射到众核系统的过程中,根据核心对象描述的配置信息将处理核封装成为能够执行该计算任务的功能核。上述配置信息在根据处理核类实例化得到核心对象时配置到核心对象中。
相应地,在一些实施例中,参照图5,步骤S1211包括:
在步骤S1211a中,根据所述核心对象簇对应的多个所述计算步骤,确定所述核心对象簇中的各个所述核心对象的配置信息,所述核心对象的配置信息描述所述处理核的配置信息;
在步骤S1211b中,实例化各个所述核心对象簇,并将各个所述核心对象的配置信息配置到所述核心对象中。
本公开实施例对核心对象的配置信息不做特殊限定。
在本公开实施例中,同一个计算子图分解得到的多个计算任务也具有依赖关系,根据该依赖关系能够确定核心对象簇中对应各个计算任务的核心对象的关联关系。本公开实施例对核心对象簇中多个核心对象的关联关系不做特殊限定。例如,根据多个计算任务的依赖关系能够确定各个核心对象的控制逻辑,控制逻辑包括时序信息和同步信息。作为一种可选的实施方式,时序信息和同步信息作为核心对象的参数配置到核心对象中。
相应地,在一些实施例中,所述核心对象的配置信息包括时序信息和同步信息;根据所述核心对象簇对应的多个所述计算步骤,确定所述核心对象簇中的各个所述核心对象的配置信息的步骤包括:根据多个所述计算步骤的关联关系,确定各个所述核心对象的所述时序信息和所述同步信息。
在一些实施例中,核心对象的配置信息还包括内存信息、计算原语、参数信息中的至少一者。其中,内存信息描述众核系统的处理核的内存大小,计算原语即完成核心对象对应的计算任务所需的指令等。
相应地,在一些实施例中,根据所述核心对象簇对应的多个所述计算步骤,确定所述核心对象簇中的各个所述核心对象的配置信息的步骤还包括:根据各个所述核心对象对应的所述计算步骤,确定各个所述核心对象的内存信息、计算原语、参数信息中的至少一者。
在一些实施例中,用核心对象组成核心对象簇、并用核心对象簇搭建神经网络程序时,能够映射表达出计算图中各个计算节点的数据流关系,并表现为核心对象簇的关联关系。将核心对象簇映射到众核系统后,众核系统能够实现流水线调度。在一些实施例中,如图6所示,Object D、Object E、Object F各对应神经网络中的一个计算节点,通过早期编译(EarlyCompiling),Object D、Object E、Object F分别映射到核心对象簇ClusterD、核心对象簇Cluster E、核心对象簇Cluster F,其中,Cluster D、Cluster E、Cluster F的关联关系为:Cluster D得到的计算结果能够传输到Cluster E,由Cluster E进行处理;Cluster E得到的计算结果能够传输到Cluster F,由Cluster F进行处理;同时,Cluster D将计算结果传输到Cluster E之后,能够继续处理下一个计算任务,Cluster E将计算结果传输到Cluster F之后,能够继续处理下一个计算任务,从而能够提高并行性;通过后期编译(Post Compiling),根据神经形态的众核架构(Neuromorphic Many Core Arch.)的拓扑结构,可以进一步确定将Cluster D、Cluster E、Cluster F映射到众核系统后Cluster D、Cluster E、Cluster F各自对应的处理核,以及Cluster D、Cluster E、Cluster F在众核系统中的关联关系。
相应地,在一些实施例中,多个所述核心对象簇的关联关系包括多个所述核心对象簇的连接关系和时序关系;参照图7,步骤S122包括:
在步骤S1221中,根据所述计算图确定多个所述核心对象簇的数据流关系;
在步骤S1222中,根据多个所述核心对象簇的数据流关系确定多个所述核心对象簇的连接关系;
在步骤S1223中,根据多个所述核心对象簇的数据流关系确定多个所述核心对象簇的时序关系。
可选的,在本实施例中,各个核心对象簇都具有输入接口和输出接口,各个核心对象簇通过输入接口/输出接口确定连接关系。
本公开实施例对多个核心对象簇的时序关系的形式不做特殊限定。作为一种可选的实施方式,用工作相位图表征多个核心对象簇的时序关系。
相应地,在一些实施例中,根据多个所述核心对象簇的数据流关系确定多个所述核心对象簇的时序关系的步骤包括:根据多个所述核心对象簇的数据流关系生成工作相位图,所述工作相位图表征多个所述核心对象簇的时序关系。
图8为本公开实施例中工作相位图的一种可选实施方式的示意图。如图8所示为基于数据流的宏数据事件驱动机制,图8中的每一个第一数据块、第二数据块、每一个第三数据块、每一个第四数据块、每一个第五数据块都为一个宏数据事件。将多个核心对象簇按照layer 1、layer 2、layer 3、layer 4、layer5进行区分。各核心对象簇根据接收到的宏数据事件触发执行计算。例如,layer 1的核心对象簇每接收1个第一数据块则执行一次计算;layer 2每接收2个layer 1输出的第二数据块则执行一次计算;layer 3每接收2个layer 2输出的第三数据块则执行一次计算;layer 4每接收1个layer 3输出的第四数据块则执行一次计算;layer 5每接收2个layer 4输出的第五数据块则执行一次计算。
需要说明的是,在本公开实施例中,通过步骤S200中将多个核心对象簇映射到众核系统之后,众核系统中的处理核按照本公开实施例中所述的宏数据事件驱动机制执行计算。作为一种可选的实施方式,根据确定的多个核心对象簇的时序关系,在接收到满足该时序关系的宏数据事件后才进行触发;在未接收到满足该时序关系的宏数据事件时,处理核可以保持休眠。
在一些实施例中,采用核心资源池策略,将众核系统的处理核作为具有相同能力的核心资源,通过资源分配器指定一个核心资源池。当需要将神经网络映射到众核系统中时,首先从核心资源池中申请相应的核心资源。
相应地,在一些实施例中,根据各个所述核心对象簇对应的所述计算子图,生成组成各个所述核心对象簇的多个所述核心对象的步骤之前,根据所述计算图生成多个所述核心对象簇的步骤还包括:根据所述神经网络和所述众核系统的处理核信息,从核心资源池中申请多个核心资源,每一个所述核心资源对应一个所述核心对象。
在一些实施例中,参照图9,步骤S200包括:
在步骤S210中,根据所述众核系统的拓扑结构,确定每个所述核心对象簇中的核心对象与所述众核系统中的处理核的对应关系。
本公开实施例对如何表征众核系统的拓扑结构不做特殊限定。作为一种可选的实施方式,用处理核平面图信息表征众核系统的拓扑结构。例如,对于单个芯片构成的众核系统,处理核平面图信息包括芯片中处理核的数量以及芯片中处理核阵列的每一行中处理核的数量、每一列中处理核的数量;对于多个子芯片构成的阵列,处理核平面图信息还包括芯片阵列中子芯片的数量以及每一行中子芯片的数量、每一列中子芯片的数量。
在一些实施例中,将核心对象簇映射到众核系统时,需要根据众核系统的拓扑结构优化处理核的布局,以满足路由传输的需求;需要避免路由死锁;考虑流量开销,以获得最少的路由传输时间;还需要进行多播检测。上述信息通过配置路由表来体现。
相应地,在一些实施例中,参照图9,步骤S200还包括:
在步骤S220中,确定多个所述核心对象的连接关系;
在步骤S230中,进行多播检测,确定多播配置信息;
在步骤S240中,根据多个所述核心对象的连接关系和所述多播配置信息生成路由表。
需要说明的是,当多个核心对象簇中的多个核心对象没有对应众核系统的全部处理核时,即众核系统运行神经网络程序时有部分处理核没有被使用,需要配置众核系统中所有处理核对应的路由节点。
在一些实施例中,将多个所述核心对象簇映射到所述众核系统的步骤还包括:生成所述众核系统能够执行的可执行文件。
作为一种可选的实施方式,可执行文件包括文件头、芯片级数据和核心级数据。核心级数据包括配置参数和权重/偏差数据。需要说明的是,当多个核心对象簇中的多个核心对象没有对应众核系统的全部处理核时,即众核系统运行神经网络程序时有部分处理核没有被使用,只有众核系统运行神经网络程序时会被使用的处理核具有核心级数据。路由节点配置在芯片级数据中。
在一些实施例中,生成所述众核系统能够执行的可执行文件的步骤之后,将多个所述核心对象簇映射到所述众核系统的步骤还包括:根据所述可执行文件进行仿真。
仿真用于验证可执行文件的正确性,仿真还能够提供包括每个阶段消耗的时钟周期的路由流量信息、每个时钟周期路由缓冲区的利用率等信息,能够用于优化多个核心对象簇到众核系统的映射。
在一些实施例中,参照图2,步骤S100除了包括步骤S110和步骤S120以外,还包括:
在步骤S130中,根据所述计算图和多个所述核心对象簇对所述神经网络进行训练或精调,以对所述神经网络的权重和激活值进行量化和饱和处理。
需要说明的是,对神经网络的权重和激活值进行量化和饱和处理是通过量化和激活函数将神经网络的权重和激活值离散化,例如,将原本32bit的浮点数映射到8bit的整数上;将原本32bit浮点数的乘加操作变为8bit乘法和低精度加法操作,从而能够减少神经网络的计算量,提升运行速率,确保众核系统在运行神经网络时不溢出。
作为一种可选的实施方式,步骤S130具体包括:根据计算图和映射生成的多个核心对象簇,通过将前端框架中的原始卷积和加法函数替换为量化版本,然后重新训练神经网络。
在一些实施例中,通过步骤S100将神经网络映射到多个核心对象簇之后,可以调用早期性能分析和行为级仿真,从而能够对神经网络映射到核心对象簇的算法性能进行分析。
相应地,在一些实施例中,参照图10,步骤S100之后,所述映射方法还包括:
在步骤S300中,确定所述神经网络映射到多个所述核心对象簇的性能信息,所述性能信息包括所述核心对象数量、存储资源利用率、时序资源利用率中的至少一者。
需要说明的是,在步骤S300中,未考虑众核系统的拓扑结构对神经网络映射到多个核心对象簇的性能的影响,也未考虑众核系统中多个处理核之间的路由关系的影响。即在路由无关映射下评估神经网络映射到核心对象簇的算法性能。
相应地,在一些实施例中,参照图10,步骤S100之后,所述映射方法还包括:
在步骤S400中,执行位级精度仿真,以确定执行效率信息。
第二方面,参照图11,本公开实施例提供一种映射装置,包括:
一个或多个处理器101;
存储器102,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本公开实施例第一方面所述的任意一种映射方法;
一个或多个I/O接口103,连接在处理器与存储器之间,配置为实现处理器与存储器的信息交互。
其中,处理器101为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;存储器102为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH);I/O接口(读写接口)103连接在处理器101与存储器102间,能实现处理器101与存储器102的信息交互,其包括但不限于数据总线(Bus)等。
在一些实施例中,处理器101、存储器102和I/O接口103通过总线104相互连接,进而与计算设备的其它组件连接。
第三方面,参照图12,本公开实施例提供一种众核系统,包括:
包括多个处理核201以及片上网络202,其中,多个处理核201均与片上网络202连接,片上网络202用于交互多个处理核间的数据和外部数据。
其中,一个或多个处理核201中存储有一个或多个指令,一个或多个指令被一个或多个处理核201执行,以使一个或多个处理核201能够执行本公开实施例第一方面所述的任意一种映射方法。
第四方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现本公开实施例第一方面所述的任意一种映射方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。

Claims (10)

1.一种映射方法,包括:
将神经网络映射到多个核心对象簇,每个所述核心对象簇包括至少一个核心对象,每个所述核心对象簇对应所述神经网络中的一个计算节点,每个所述核心对象描述众核系统的一个处理核的配置信息;
将多个所述核心对象簇映射到所述众核系统。
2.根据权利要求1所述的映射方法,其中,将神经网络映射到多个核心对象簇的步骤包括:
根据所述神经网络生成计算图,所述计算图包括多个计算子图,每个所述计算子图对应一个所述计算节点;
根据所述计算图生成多个所述核心对象簇,以完成所述神经网络到多个所述核心对象簇的映射。
3.根据权利要求2所述的映射方法,其中,根据所述计算图生成多个所述核心对象簇的步骤包括:
根据各个所述核心对象簇对应的所述计算子图,生成组成各个所述核心对象簇的多个所述核心对象;
根据所述计算图确定多个所述核心对象簇的关联关系。
4.根据权利要求3所述的映射方法,其中,所述计算图包括多个工作相位,每一个所述计算子图对应一个所述工作相位,每一个所述计算子图包括多个计算步骤;对于任意一个所述核心对象簇,根据所述计算图生成多个所述核心对象簇的步骤包括:
根据所述核心对象簇对应的多个所述计算步骤,生成多个所述核心对象,每一个所述计算步骤对应至少一个所述核心对象。
5.根据权利要求1所述的映射方法,其中,将多个所述核心对象簇映射到所述众核系统的步骤包括:
根据所述众核系统的拓扑结构,确定每个所述核心对象簇中的核心对象与所述众核系统中的处理核的对应关系。
6.根据权利要求1至5中任意一项所述的映射方法,其中,将神经网络映射到多个核心对象簇的步骤之后,所述映射方法还包括:
确定所述神经网络映射到多个所述核心对象簇的性能信息,所述性能信息包括核心对象数量、存储资源利用率、时序资源利用率中的至少一者。
7.根据权利要求1至5中任意一项所述的映射方法,其中,将神经网络映射到多个核心对象簇的步骤之后,所述映射方法还包括:
执行位级精度仿真,以确定执行效率信息。
8.一种映射装置,包括:
一个或多个处理器;
存储器,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据权利要求1至7中任意一项所述的映射方法;
一个或多个I/O接口,连接在所述处理器与存储器之间,配置为实现所述处理器与存储器的信息交互。
9.一种众核系统,包括:
多个处理核;以及
片上网络,被配置为交互所述多个处理核间的数据和外部数据;
一个或多个所述处理核中存储有一个或多个指令,一个或多个所述指令被一个或多个所述处理核执行,以使一个或多个所述处理核能够执行根据权利要求1至7中任意一项所述的映射方法。
10.一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现根据权利要求1至7中任意一项所述的映射方法。
CN202110650763.0A 2021-06-10 2021-06-10 映射方法、映射装置、众核系统、计算机可读介质 Pending CN115469993A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110650763.0A CN115469993A (zh) 2021-06-10 2021-06-10 映射方法、映射装置、众核系统、计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110650763.0A CN115469993A (zh) 2021-06-10 2021-06-10 映射方法、映射装置、众核系统、计算机可读介质

Publications (1)

Publication Number Publication Date
CN115469993A true CN115469993A (zh) 2022-12-13

Family

ID=84364688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110650763.0A Pending CN115469993A (zh) 2021-06-10 2021-06-10 映射方法、映射装置、众核系统、计算机可读介质

Country Status (1)

Country Link
CN (1) CN115469993A (zh)

Similar Documents

Publication Publication Date Title
Fowers et al. A configurable cloud-scale DNN processor for real-time AI
US20200042856A1 (en) Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit
Rhodes et al. sPyNNaker: a software package for running PyNN simulations on SpiNNaker
CN110689138B (zh) 运算方法、装置及相关产品
KR102175044B1 (ko) 인공 신경망 역방향 트레이닝 실행용 장치와 방법
US10963300B2 (en) Accelerating dataflow signal processing applications across heterogeneous CPU/GPU systems
US11500959B2 (en) Multiple output fusion for operations performed in a multi-dimensional array of processing units
Morgan et al. The Ring Array Processor: A multiprocessing peripheral for connectionist applications
JP7078758B2 (ja) 機械学習モデルを改良して局所性を改善させること
US11609792B2 (en) Maximizing resource utilization of neural network computing system
Ambrosi et al. Hardware-software co-design for an analog-digital accelerator for machine learning
US11556756B2 (en) Computation graph mapping in heterogeneous computer system
CN110058882B (zh) 一种用于cnn加速的opu指令集定义方法
CN109213587B (zh) GPU平台下的多Stream并行DAG图任务映射策略
WO2022134307A1 (zh) 一种可重构芯片的内存耦合编译方法及系统
Xiao et al. Plasticity-on-chip design: Exploiting self-similarity for data communications
US20240086359A1 (en) Dynamic allocation of arithmetic logic units for vectorized operations
Gerlinghoff et al. E3NE: An end-to-end framework for accelerating spiking neural networks with emerging neural encoding on FPGAs
CN117032807A (zh) 基于risc-v指令集的ai加速处理器架构
He et al. Fecaffe: Fpga-enabled caffe with opencl for deep learning training and inference on intel stratix 10
CN116680063B (zh) 任务调度方法、装置、计算系统、电子设备和存储介质
CN110704193B (zh) 一种适合向量处理的多核软件架构的实现方法及装置
CN113158599A (zh) 基于量子信息学的芯片和芯片化eda装置
CN109272112B (zh) 一种面向神经网络的数据重用指令映射方法、系统及装置
CN115469993A (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