CN110909871A - 状态信息获取装置和方法 - Google Patents

状态信息获取装置和方法 Download PDF

Info

Publication number
CN110909871A
CN110909871A CN201811092726.7A CN201811092726A CN110909871A CN 110909871 A CN110909871 A CN 110909871A CN 201811092726 A CN201811092726 A CN 201811092726A CN 110909871 A CN110909871 A CN 110909871A
Authority
CN
China
Prior art keywords
state information
module
instruction
debugging
processing circuit
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
CN201811092726.7A
Other languages
English (en)
Other versions
CN110909871B (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201811092726.7A priority Critical patent/CN110909871B/zh
Publication of CN110909871A publication Critical patent/CN110909871A/zh
Application granted granted Critical
Publication of CN110909871B publication Critical patent/CN110909871B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开涉及状态信息获取装置和方法。所述状态信息获取装置包括:格式转换模块,用于将所述状态信息进行格式转换,获得转换后的状态信息;第一存储模块,包括片上存储器,所述片上存储器包括高速暂存存储器;第二存储模块,用于存储所述状态信息和/或所述转换后的状态信息。本公开可以获取神经网络处理装置在运行过程中的状态信息。

Description

状态信息获取装置和方法
技术领域
本公开涉及信息处理技术领域,尤其涉及一种状态信息获取装置和方法。
背景技术
神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。用GPU和CPU处理起这些大规模的模型,要花费大量的计算时间,并且耗电量很大。在这种情况下,神经网络加速器被人们提出,用于进行神经网络算法处理的加速,并且达到降低功耗的效果。
发明内容
根据本公开的一方面,提供了一种状态信息获取装置,所述状态信息获取装置连接于神经网络处理装置,所述状态信息获取装置包括:
调试指令添加模块,用于在输入代码中添加调试指令,得到添加后的调试代码,其中,所述输入代码为所述神经网络处理装置的可运行代码,所述调试指令用于采集所述神经网络处理装置运行过程中的状态信息;
输入输出模块,连接于所述调试指令添加模块和所述神经网络处理装置,用于向所述神经网络处理装置输出所述调试代码,并输入来自所述神经网络处理装置的调试结果,所述调试结果中包括所述神经网络处理装置的状态信息;
状态信息获取模块,连接于所述输入输出模块,用于根据所述调试结果确定所述神经网络处理装置的状态信息。
在一种可能的实施方式中,所述调试指令添加模块包括:
插入位置确定子模块,用于确定所述输入代码中的一个或多个插入位置;
指令添加子模块,连接于所述插入位置确定子模块,用于分别在所述一个或多个插入位置处添加调试指令,得到添加后的调试代码。
在一种可能的实施方式中,所述装置还包括:
指令生成模块,连接于所述调试指令添加模块,用于生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述神经网络处理装置运行过程中的状态信息存储到所述神经网络处理装置的第一存储模块中。
在一种可能的实施方式中,所述神经网络处理装置包括控制模块、运算模块及第一存储模块,所述运算模块包括主处理电路和多个从处理电路,
所述控制模块,用于根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路,其中所述多个运算指令中包括所述调试指令;
所述主处理电路,用于对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种;
每个从处理电路,用于根据所述主处理电路传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路;
所述主处理电路,用于对多个中间结果执行后续处理得到所述调试代码的最终计算结果;
所述第一存储模块用于根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路的前序处理过程中的状态信息、所述多个从处理电路的中间运算过程中的状态信息、所述主处理电路的后续处理过程中的状态信息中的至少一种;
所述控制模块还用于根据所述状态信息生成调试结果,并向所述状态信息获取装置输出调试结果。
在一种可能的实施方式中,所述第一存储模块包括片上存储器,所述片上存储器包括高速暂存存储器。
在一种可能的实施方式中,所述装置还包括:
格式转换模块,连接于所述状态信息获取模块,用于将所述状态信息进行格式转换,获得转换后的状态信息;
第二存储模块,连接于所述格式转换模块,用于存储所述状态信息和/ 或所述转换后的状态信息。
根据本公开的另一方面,提供了一种可调试运算装置,所述装置包括:运算模块、控制模块、第一存储模块及状态信息输出模块;所述运算模块包括:主处理电路和多个从处理电路,
所述控制模块,用于根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路,其中所述多个运算指令中包括所述调试指令;
所述主处理电路,用于对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种;
每个从处理电路,用于根据所述主处理电路传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路;
所述主处理电路,用于对多个中间结果执行后续处理得到所述调试代码的最终计算结果;
所述第一存储模块用于根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路的前序处理过程中的状态信息、所述多个从处理电路的中间运算过程中的状态信息、所述主处理电路的后续处理过程中的状态信息中的至少一种;
所述状态信息输出模块,用于获取所述第一存储模块中的状态信息,并输出所述状态信息。
在一种可能的实施方式中,所述第一存储模块包括片上存储器,所述片上存储器包括高速暂存存储器。
在一种可能的实施方式中,所述装置还包括:
指令生成模块,用于生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述可调试运算装置运行过程中的状态信息存储到所述存储模块中;
插入位置确定模块,连接于所述指令生成模块,用于确定输入代码中的一个或多个插入位置;
调试指令添加模块,连接于所述插入位置确定模块及所述控制模块,用于在所述一个或多个插入位置对所述输入代码添加所述调试指令,得到添加所述调试指令后的调试代码。
在一种可能的实施方式中,所述运算模块还包括分支处理电路,
所述主处理电路,用于将所述待运算数据分配成多个数据块,将所述多个数据块中的至少一个数据块、所述待运算数据以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、所述待运算数据以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及所述待运算数据执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制模块。
在一种可能的实施方式中,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第 m行的n个从处理电路以及第1列的m个从处理电路;
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个待运算数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
根据本公开的另一方面,提供了一种神经网络运算装置,所述神经网络运算装置包括一个或多个所述的可调试运算装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O 接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述计算装置时,所述多个所述计算装置间通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
根据本公开的另一方面,提供了一种组合处理装置,所述组合处理装置包括所述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
在一种可能的实施方式中,所述组合处理装置还包括:存储装置,该存储装置分别与所述神经网络运算装置和所述其他处理装置连接,用于保存所述神经网络运算装置和所述其他处理装置的数据。
根据本公开的另一方面,提供了一种神经网络芯片,所述神经网络芯片包括所述的组合处理装置。
根据本公开的另一方面,提供了一种电子设备,所述电子设备包括所述的芯片。
根据本公开的另一方面,提供了一种状态信息获取方法,所述状态信息获取方法运用于状态信息获取装置,所述状态信息获取装置包括依次相连的调试指令添加模块、输入输出模块、状态信息获取模块,所述输入输出模块连接于神经网络处理装置,所述状态信息获取方法包括:
所述调试指令添加模块在输入代码中添加调试指令,得到添加后的调试代码,其中,所述输入代码为所述神经网络处理装置的可运行代码,所述调试指令用于采集所述神经网络处理装置运行过程中的状态信息;
所述输入输出模块向所述神经网络处理装置输出所述调试代码,并输入来自所述神经网络处理装置的调试结果,所述调试结果中包括所述神经网络处理装置的状态信息;
所述状态信息获取模块根据所述调试结果确定所述神经网络处理装置的状态信息。
在一种可能的实施方式中,所述调试指令添加模块包括相连接的插入位置确定子模块及指令添加子模块,所述方法还包括:
所述插入位置确定子模块确定所述输入代码中的一个或多个插入位置;
所述指令添加子模块分别在所述一个或多个插入位置处添加调试指令,得到添加后的调试代码。
在一种可能的实施方式中,所述装置还包括指令生成模块,所述方法还包括:
所述指令生成模块生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述神经网络处理方法运行过程中的状态信息存储到所述神经网络处理装置的存储模块中。
在一种可能的实施方式中,所述神经网络处理装置包括控制模块、运算模块及第一存储模块,所述运算模块包括主处理电路和多个从处理电路,所述方法还包括:
所述控制模块根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路,其中所述多个运算指令中包括所述调试指令;
所述主处理电路对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种;
每个从处理电路根据所述主处理电路传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路;
所述主处理电路对多个中间结果执行后续处理得到所述调试代码的最终计算结果;
所述第一存储模块根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路的前序处理过程中的状态信息、所述多个从处理电路的中间运算过程中的状态信息、所述主处理电路的后续处理过程中的状态信息中的至少一种;
所述控制模块还根据所述状态信息生成调试结果,并向所述状态信息获取装置输出调试结果。
在一种可能的实施方式中,所述第一存储模块包括片上存储器,所述片上存储器包括高速暂存存储器。
在一种可能的实施方式中,所述装置还包括格式转换模块及第二存储模块,所述第二存储模块连接于所述格式转换模块,所述方法还包括:
所述格式转换模块将所述状态信息进行格式转换,获得转换后的状态信息;
所述第二存储模块存储所述状态信息和/或所述转换后的状态信息。
根据本公开的另一方面,提供了一种状态信息获取方法,所述状态信息获取方法运用于可调试运算装置,所述可调试运算装置包括:运算模块、控制模块、第一存储模块及状态信息输出模块;所述运算模块包括:主处理电路和多个从处理电路,所述方法包括:
所述控制模块根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路,其中所述多个运算指令中包括所述调试指令;
所述主处理电路对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种;
每个从处理电路根据所述主处理电路传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路;
所述主处理电路对多个中间结果执行后续处理得到所述调试代码的最终计算结果;
所述第一存储模块根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路的前序处理过程中的状态信息、所述多个从处理电路的中间运算过程中的状态信息、所述主处理电路的后续处理过程中的状态信息中的至少一种;
所述状态信息输出模块获取所述存储模块中的状态信息,并输出所述状态信息。
在一种可能的实施方式中,所述第一存储模块包括片上存储器,所述片上存储器包括高速暂存存储器。
在一种可能的实施方式中,所述可调试运算装置还包括依次连接的指令生成模块、插入位置确定模块及调试指令添加模块,所述调试指令添加模块连接于所述控制模块,所述方法还包括:
所述指令生成模块生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述可调试运算装置运行过程中的状态信息存储到所述存储模块中;
所述插入位置确定模块确定输入可调试运算装置的输入代码中的一个或多个插入位置;
所述调试指令添加模块在所述一个或多个插入位置对所述输入代码添加所述调试指令,以得到所述调试代码。
本公开通过在输入代码中添加调试指令,得到添加后的调试代码,向所述神经网络处理装置输出所述调试代码,并输入来自所述神经网络处理装置的调试结果,所述调试结果中包括所述神经网络处理装置的状态信息,根据所述调试结果确定所述神经网络处理装置的状态信息,可以获取神经网络处理装置在运行过程中的状态信息,以对神经网络处理装置进行调试,以提高神经网络处理装置的运行效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出了根据本公开一实施方式的状态信息获取装置的框图。
图2示出了根据本公开一实施方式的状态信息获取装置的框图。
图3示出了根据本公开一实施方式的神经网络处理装置的框图。
图4示出了根据本公开一实施方式的主处理电路的框图。
图5示出了根据本公开一实施方式的神经网络处理装置的示意图。
图6示出了根据本公开一实施方式的神经网络处理装置的示意图。
图7示出了根据本公开一实施方式的组合处理装置的示意图。
图8示出了根据本公开一实施方式的组合处理装置的示意图。
图9示出了根据本公开一实施方式可调试运算装置的框图。
图10示出了根据本公开一实施方式的状态信息获取方法的流程图。
图11示出了根据本公开一实施方式的状态信息获取方法的流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在相关技术中,在对神经网络加速器的开发及调试(debug)等方面缺乏硬件支持以及相对应的调试方法。神经网络加速器无法提供用来调试的指令支持,神经网络加速器配套的软件编译器也不能支持调试。本公开提出一种状态信息获取装置,以对神经网络加速器进行调试,从而获取神经网络加速器的调试信息。
请参阅图1,图1示出了根据本公开一实施例的状态信息获取装置的框图。
如图1所示,所述状态信息获取装置连接于神经网络处理装置30,所述状态信息获取装置包括调试指令添加模块10、输入输出模块20及状态信息获取模块。
调试指令添加模块10,用于在输入代码中添加调试指令,得到添加后的调试代码,其中,所述输入代码为所述神经网络处理装置30的可运行代码,所述调试指令用于采集所述神经网络处理装置30运行过程中的状态信息。
在一种可能的实施方式中,神经网络处理装置30可以是神经网络加速器、神经网络处理芯片(NPU)等,神经网络处理装置30可以运行如机器学习模型、机器学习相关代码、计算指令、调试指令等输入代码,该机器学习模型具体可以包括网络模型,该网络模型可以为神经网络模型和/或非神经网络模型,上述输入代码包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
在一种可能的实施方式中,所述调试指令包括状态信息存储指令,用于将所述神经网络处理装置运行过程中的状态信息存储到所述神经网络处理装置的存储模块中。
输入输出模块20,连接于所述调试指令添加模块10和所述神经网络处理装置30,用于向所述神经网络处理装置30输出所述调试代码,并输入来自所述神经网络处理装置30的调试结果,所述调试结果中包括所述神经网络处理装置的状态信息。
输入输出模块20接收调试指令添加模块传来的添加了调试指令的调试代码,将所述调试代码传输给神经网络处理装置30,神经网络处理装置30获取所述调试代码后,运行所述调试代码,根据所述调试指令输出调试结果,输入输出模块20接收所述调试结果。
状态信息获取模块40,连接于所述输入输出模块20,用于根据所述调试结果确定所述神经网络处理装置30的状态信息。
当接收到神经网络处理装置30输出的调试结果后,状态信息获取模块40 会对调试结果进行解析,以获取所述调试结果携带的所述状态信息。
应该明白的是,以上调试指令添加模块10、输入输出模块20、状态信息获取模块40可以通过硬件电路、集成等方式实现,也可以通过软件方式实现。
本公开通过各个模块的配合,通过在输入代码中添加调试指令,得到添加后的调试代码,向所述神经网络处理装置输出所述调试代码,并输入来自所述神经网络处理装置的调试结果,所述调试结果中包括所述神经网络处理装置的状态信息,根据所述调试结果确定所述神经网络处理装置的状态信息,可以获取神经网络处理装置在运行过程中的状态信息,以对神经网络处理装置进行调试,以提高神经网络处理装置的运行效率。
请参阅图2,图2示出了根据本公开一实施方式的状态信息获取装置的框图。
如图2所示,状态信息获取装置包括调试指令添加模块10、输入输出模块20及状态信息获取模块40,除此之外,状态信息获取装置还可以包括指令生成模块50、格式转换模块60及第二存储模块70。
调试指令添加模块10,用于在输入代码中添加调试指令,得到添加后的调试代码,其中,所述输入代码为所述神经网络处理装置30的可运行代码,所述调试指令用于采集所述神经网络处理装置30运行过程中的状态信息。
在一种可能的实施方式中,所述调试指令添加模块10可以包括插入位置确定子模块110及与之相连接的指令添加子模块120。
在一种可能的实施方式中,插入位置确定子模块110,用于确定所述输入代码中的一个或多个插入位置。
用户可以根据实际情况的需要在指定的地方添加调试指令,当程序在神经网络处理装置30的运行过程中,在程序(输入代码)的不同位置,神经网络处理装置30具有不同的状态信息,当需要对神经网络处理装置30进行调试时,可以通过确定一个或多个插入位置,以便在所述一个或多个插入位置插入调试指令以对神经网络处理装置30进行调试。
在一种可能的实施方式中,确定所述输入代码中的一个或多个插入位置的方式可以为插入断点。
在一种可能的实施方式中,指令添加子模块120,连接于所述插入位置确定子模块110,用于分别在所述一个或多个插入位置处添加调试指令,得到添加后的调试代码。
当在输入的代码指定所述一个或多个插入位置后,可以在所述一个或多个插入位置根据调试需要添加合适的调试指令,以得到调试代码。
输入输出模块20,连接于所述调试指令添加模块10和所述神经网络处理装置30,用于向所述神经网络处理装置30输出所述调试代码,并输入来自所述神经网络处理装置30的调试结果,所述调试结果中包括所述神经网络处理装置的状态信息。
状态信息获取模块40,连接于所述输入输出模块20,用于根据所述调试结果确定所述神经网络处理装置30的状态信息。
指令生成模块50,连接于所述调试指令添加模块10,用于生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述神经网络处理装置运行过程中的状态信息存储到所述神经网络处理装置的第一存储模块中。
在一种可能的实施方式中,所述调试指令用于在所述神经网络处理装置 30中运行时,获取神经网络处理装置30的状态信息,所述状态信息可以是存储在神经网络处理装置30片上资源(例如包括寄存器、片上存储器等)中的信息,当获取到神经网络处理装置30的状态信息后,可以将所述状态信息存储到所述第一存储模块中,所述第一存储模块可以为神经网络处理装置30中的存储空间,所述存储空间可以是神经网络处理装置30的内存空间、片上存储器等。
指令生成模块50还可以根据实际情况生成其他指令,例如,当需要调试的情况不同时,可以根据需要生成不同的调试指令以获取不同的状态信息。还可以生成其他的指令,例如跳转指令,使得执行在神经网络处理装置30中的代码从程序代码的某一个位置跳转到位置。
在一种可能的实施方式中,所述状态信息获取装置可以包括格式转换模块60,连接于所述状态信息获取模块40,用于将所述状态信息进行格式转换,获得转换后的状态信息。
当获取所述状态信息,并存储到神经网络处理装置30的内存空间后,可以将所述状态信息传输到状态信息获取模块40进行处理,状态信息获取模块 40可以对所述状态信息进行格式转换,例如可将获取的状态信息从一种数据格式转换为另一种数据格式,还可以根据所述状态信息生成表格、文件等,以供用户查看。
从神经网络处理装置30中获取的状态信息,其数据格式往往不符合用户的常用习惯,用户通常也无法直接获取某些数据格式的信息(例如二进制),此时,格式转换模块可以对状态信息的数据格式进行转换,以方便用户使用。例如,格式转换模块60可以将二进制形式的状态信息根据需要转换为十进制数据或者汉字、英文等数据。
在一种可能的实施方式中,状态信息获取装置还可以包括第二存储模块 70,连接于所述格式转换模块60,用于存储所述状态信息和/或所述转换后的状态信息。
在一种可能的实施方式中,第二存储模块70可以包括易失性存储器或者非易失性存储器。
通过第二存储模块70,可以对从该神经网络处理装置30中获取的状态信息进行存储,以方便用户调用。
在一种可能的实施方式中,状态信息获取装置还可以包括判断模块(未示出),当状态信息获取装置获取所述状态信息后,判断模块可以对所述状态信息进行分析、判断,以确定所述神经网络处理装置30是否运行正确。、
通过判断模块的使用,可以进一步减少用户对神经网络处理装置30调试的工作量,对降低成本、提高工作效率具有重要意义。
在一种可能的实施方式中,当获取神经网络处理装置30的状态信息后,可以将所述状态信息传输到中央处理器(CPU)中,中央处理器可以对所述状态信息进行处理、存储。
请参阅图3,图3示出了根据本公开一实施方式的神经网络处理装置的框图。
如图3所示,所述神经网络处理装置30包括控制模块32、运算模块33及第一存储模块31,所述运算模块33包括主处理电路331和多个从处理电路332 (图中从处理电路的数目是示例性的)。
所述控制模块32,用于根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路331,其中所述多个运算指令中包括所述调试指令。
所述调试代码为神经网络处理装置30的可运行代码,例如,可为包括人工神经网络模型的机器学习模型、各种计算指令。该机器学习模型具体可以包括网络模型,该网络模型可以为神经网络模型和/或非神经网络模型。上述可运行代码包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
在一种可能的实施方式中,所述神经网络处理装置30可以通过第一数据输入输出(I/O)模块360得到,该第一数据输入输出模块360具体可以为一个或多个数据I/O接口或I/O引脚。
所述主处理电路331,用于对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种。
请一并参阅图4,图4示出了根据本公开一实施方式的主处理电路331的框图。
如图4所示,主处理电路331可以包括:转换处理电路113、激活处理电路111、加法处理电路112中的一种或任意组合。
所述转换处理电路113,用于对所述数据执行所述前序处理,所述前序处理可为:将主处理电路331接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路331接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换 (例如定点类型与浮点类型的转换)。
所述激活处理电路111,用于执行所述后续处理,具体为执行主处理电路331内数据的激活运算;
所述加法处理电路112,用于执行所述后续处理,具体为执行加法运算或累加运算。
每个从处理电路332,用于根据所述主处理电路331传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路331;
所述主处理电路331,用于对多个中间结果执行后续处理得到所述调试代码的最终计算结果。
所述控制模块32还用于根据所述状态信息生成调试结果,并向所述状态信息获取装置40输出调试结果。
第一存储模块31用于根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路331的前序处理过程中的状态信息、所述多个从处理电路332的中间运算过程中的状态信息、所述主处理电路331的后续处理过程中的状态信息中的至少一种。所述第一存储模块可以包括片上存储子模块310,所述片上存储子模块310可以包括高速暂存存储器。
第一存储模块31还可以包括寄存器、缓存中的一个或者任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述机器学习模型、所述数据和标量;所述缓存为高速暂存缓存。
在一种可能的实施方式中,控制模块32可以包括:指令缓存子模块320、指令处理子模块321和存储队列子模块323;
指令缓存子模块320,用于存储所述机器学习模型关联的计算指令;
所述指令处理子模块321,用于对所述计算指令解析得到多个运算指令;
存储队列子模块323,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
举例说明,在一种可能的实施方式中,主处理电路331也可以包括一个控制模块32,该控制模块32可以包括主指令处理单元,具体用于将指令译码成微指令。当然在一种可能的实施方式中,从处理电路332也可以包括另一个控制模块32,该另一个控制模块32包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表一所示。
表一
操作码 寄存器或立即数 寄存器/立即数 ...
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。例如,如下表二所示。
表二
Figure RE-GDA0001872459880000181
Figure RE-GDA0001872459880000191
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3 以上时,为多维张量。
可选的,该控制模块32还可以包括:
依赖关系处理子模块322,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵) 的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
请参阅图5,图5示出了根据本公开一实施方式的神经网络处理装置的示意图。
在一种可能的实施方式中,运算模块33如图5所示,可以包括分支处理电路333;其具体的连接结构如图5所示,其中,
主处理电路331与分支处理电路333连接,分支处理电路333与多个从处理电路332连接;
分支处理电路333,用于执行转发主处理电路331与从处理电路332之间的数据或指令。
在一种可能的实施方式中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路,其实现的方法可以为:
控制模块从第一存储模块31内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路;
主处理电路将输入神经元矩阵x拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将权值矩阵w广播给8个从处理电路,
从处理电路并行执行8个子矩阵与权值矩阵w的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路;
主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制器单元,控制器单元将该最终结果y输出或存储至第一存储模块31内。
如图5所示的神经网络运算装置执行神经网络正向运算指令的方法具体可以为:
控制模块32从第一存储模块31内提取运算数据(例如神经网络正向运算指令、神经网络运算指令)对应的操作域以及至少一个操作码,控制模块32 将该操作域传输至数据访问单元,将该至少一个操作码发送至运算模块。
控制模块32从第一存储模块31内提取该操作域对应的权值w和偏置b(当 b为0时,不需要提取偏置b),将权值w和偏置b传输至运算单元的主处理电路,控制器单元从第一存储模块31内提取输入数据Xi,将该输入数据Xi发送至主处理电路。
主处理电路将输入数据Xi拆分成n个数据块;
控制模块32的指令处理子模块321依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、权值w以广播的方式发送给多个从处理电路,将该n个数据块分发给该多个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该权值w与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏执指令将该累加结果执行加偏执b得到最终结果,将该最终结果发送至该控制器单元。
另外,加法运算和乘法运算的顺序可以调换。
本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
请参阅图6,图6示出了根据本公开一实施方式的神经网络处理装置的示意图。
在一种可能的实施方式中,运算模块33如图6所示,可以包括一个主处理电路331和多个从处理电路332。
在一种可能的实施方式中,如图6所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图6所示的K个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
在一种可能的实施方式中,一个或多个在本公开中提到的神经网络处理装置可以形成神经网络运算装置,所述神经网络运算装置可以用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
在一种可能的实施方式中,一个或多个在本公开中提到的上述的神经网络运算装置,通用互联接口,和其他处理装置可以形成一个组合处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。
请参阅图7,图7示出了根据本公开一实施方式的组合处理装置的示意图。
在一种可能的实施方式中,其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
在一种可能的实施方式中,通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
请参阅图8,图8示出了根据本公开一实施方式的组合处理装置的示意图。
在一种可能的实施方式中,该结构还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一种可能的实施方式中,本公开还提出了一种芯片,其包括了上述神经网络运算装置或组合处理装置。
在一种可能的实施方式中,本公开还提出了一种芯片封装结构,其包括了上述芯片。
在一种可能的实施方式中,本公开还提出了一种板卡,其包括了上述芯片封装结构。
在一种可能的实施方式中,本公开还提出了一种电子设备,其包括了上述板卡。
在一种可能的实施方式中,电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
请参阅图9,图9示出了根据本公开一实施方式可调试运算装置的框图。
如图9所示,所述装置包括:运算模块33、控制模块32、第一存储模块 31及状态信息输出模块35;所述运算模块33包括:主处理电路331和多个从处理电路332。
所述控制模块32,用于根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路331,其中所述多个运算指令中包括所述调试指令。
所述的调试代码,可为可调试运算装置的可运行代码添加了调试指令后的代码。
在一种可能的实施方式中,可调试运算装置可以是包括神经网络加速器、神经网络处理芯片(NPU)等,可调试运算装置可以运行如机器学习模型、机器学习相关代码、计算指令、调试指令等输入代码,该机器学习模型具体可以包括网络模型,该网络模型可以为神经网络模型和/或非神经网络模型,上述输入代码包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
在一种可能的实施方式中,可调试运算装置可以通过数据输入输出 (I/O)模块360得到,该数据输入输出模块360具体可以为一个或多个数据I/O 接口或I/O引脚。
所述主处理电路331,用于对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路332之间传输所述运算数据、中间结果及运算指令中的至少一种。
如图4所示,主处理电路331可以包括:转换处理电路113、激活处理电路111、加法处理电路112中的一种或任意组合。
所述转换处理电路113,用于对所述数据执行所述前序处理,所述前序处理可为:将主处理电路331接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路331接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换 (例如定点类型与浮点类型的转换)。
所述激活处理电路111,用于执行所述后续处理,具体为执行主处理电路331内数据的激活运算;
所述加法处理电路112,用于执行所述后续处理,具体为执行加法运算或累加运算。
每个从处理电路332,用于根据所述主处理电路331传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路331。
所述主处理电路331,还用于对多个中间结果执行后续处理得到所述调试代码的最终计算结果。
所述第一存储模块31,用于根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路331的前序处理过程中的状态信息、所述多个从处理电路332的中间运算过程中的状态信息、所述主处理电路331的后续处理过程中的状态信息中的至少一种。所述第一存储模块31可以包括片上存储子模块310,所述片上存储子模块310可以包括高速暂存存储器。
第一存储模块31还可以包括寄存器、缓存中的一个或者任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述机器学习模型、所述数据和标量;所述缓存为高速暂存缓存。
在一种可能的实施方式中,控制模块32可以包括:指令缓存子模块320、指令处理子模块321和存储队列子模块323;
指令缓存子模块320,用于存储所述机器学习模型关联的计算指令;
所述指令处理子模块321,用于对所述计算指令解析得到多个运算指令;
存储队列子模块323,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
举例说明,在一种可能的实施方式中,主处理电路331也可以包括一个控制模块32,该控制模块32可以包括主指令处理单元,具体用于将指令译码成微指令。当然在一种可能的实施方式中,从处理电路332也可以包括另一个控制模块32,该另一个控制模块32包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表三所示。
表三
操作码 寄存器或立即数 寄存器/立即数 ...
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。例如,如下表四所示。
表四
Figure RE-GDA0001872459880000271
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3 以上时,为多维张量。
可选的,该控制模块32还可以包括:
依赖关系处理子模块322,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵) 的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
所述状态信息输出模块35,连接于所述第一存储模块31,用于获取所述存储模块中的状态信息,并输出所述状态信息。
在一种可能的实施方式中,状态信息输出模块35可以将所述状态信息进行存储,也可以将所述状态信息发送给中央处理器(CPU)进行处理,中央处理器在获取所述状态信息后,可以对其进行格式转换,例如将所述状态信息从一种数据格式(如二进制)转换为另一种格式(十进制)。
根据上述状态信息,用户可以对可调试运算装置进行调试,以提高状态获取装置的执行效率。
在一种可能的实施方式中,所述可调试运算装置还可以包括:
指令生成模块36,用于生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述可调试运算装置运行过程中的状态信息存储到所述存储模块中。
插入位置确定模块37,连接于指令生成模块36,用于确定所述调试代码中的一个或多个插入位置。
用户可以根据实际情况的需要在指定的地方添加调试代码,当程序在可调试运算装置运行过程中,在程序的不同位置,可调试运算装置具有不同的状态信息,当需要对可调试运算装置进行调试时,可以通过确定一个或多个插入位置,以便在所述一个或多个插入位置插入调试代码以对可调试运算装置进行调试。
在一种可能的实施方式中,确定所述输入代码中的一个或多个插入位置的方式可以为插入断点。
调试指令添加模块38,连接于插入位置确定模块37及控制模块32,用于分别在所述一个或多个插入位置对所述输入代码添加所述调试指令,以获取所述调试代码,并将所述调试代码输入控制模块32。
请参阅图10,图10示出了根据本公开一实施方式的状态信息获取方法的流程图。
所述状态信息获取方法运用于状态信息获取装置,所述状态信息获取装置包括依次相连的调试指令添加模块、输入输出模块、状态信息获取模块,所述输入输出模块连接于神经网络处理装置。
如图10所示,所述状态信息获取方法包括:
步骤S110,调试指令添加模块在输入代码中添加调试指令,得到添加后的调试代码,其中,所述输入代码为所述神经网络处理装置的可运行代码,所述调试指令用于采集所述神经网络处理装置运行过程中的状态信息。
在一种可能的实施方式中,所述调试指令添加模块包括插入位置确定子模块及指令添加子模块,所述方法还包括:
所述插入位置确定子模块确定所述输入代码中的一个或多个插入位置;
所述指令添加子模块分别在所述一个或多个插入位置处添加调试指令,得到添加后的调试代码。
步骤S120,输入输出模块向所述神经网络处理装置输出所述调试代码,并输入来自所述神经网络处理装置的调试结果,所述调试结果中包括所述神经网络处理装置的状态信息;
步骤S130,状态信息获取模块根据所述调试结果确定所述神经网络处理装置的状态信息。
在一种可能的实施方式中,所述装置还包括指令生成模块,所述方法还包括:
所述指令生成模块生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述神经网络处理方法运行过程中的状态信息存储到所述神经网络处理装置的存储模块中。
应该说明的是,所述状态信息获取方法为状态信息获取装置对应的方法项,对于该方法的具体介绍请参见之前装置项的描述,此处不再赘述。
通过上各个模块的配合,本公开的状态信息获取模块通过调试指令添加模块在输入代码中添加调试指令,得到添加后的调试代码,输入输出模块向所述神经网络处理装置输出所述调试代码,并输入来自所述神经网络处理装置的调试结果,状态信息获取模块根据所述调试结果确定所述神经网络处理装置的状态信息,可以获取神经网络处理模块的状态信息。
请参阅图11,图11示出了根据本公开一实施方式的状态信息获取方法的流程图。
所述状态信息获取方法运用于可调试运算装置,所述可调试运算装置包括:运算模块、控制模块、第一存储模块及状态信息输出模块;所述运算模块包括:主处理电路和多个从处理电路。
如图11所示,所述方法包括:
步骤S210,所述控制模块根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路,其中所述多个运算指令中包括所述调试指令。
步骤S220,所述主处理电路对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种。
步骤S230,每个从处理电路根据所述主处理电路传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路。
步骤S240,所述主处理电路对多个中间结果执行后续处理得到所述调试代码的最终计算结果。
步骤S250,所述第一存储模块根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路的前序处理过程中的状态信息、所述多个从处理电路的中间运算过程中的状态信息、所述主处理电路的后续处理过程中的状态信息中的至少一种。
步骤S260,所述状态信息输出模块获取所述第一存储模块中的状态信息,并输出所述状态信息。
应该说明的是,所述状态信息获取方法为可调试运算装置对应的方法项,对于该方法的具体介绍请参见之前装置项的描述,此处不再赘述。
通过以上各个模块的配合,本公开的可调试运算装置可以获取装置的状态信息,并将所述状态信息进行存储和输出。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (25)

1.一种状态信息获取装置,其特征在于,所述状态信息获取装置连接于神经网络处理装置,所述状态信息获取装置包括:
调试指令添加模块,用于在输入代码中添加调试指令,得到添加后的调试代码,其中,所述输入代码为所述神经网络处理装置的可运行代码,所述调试指令用于采集所述神经网络处理装置运行过程中的状态信息;
输入输出模块,连接于所述调试指令添加模块和所述神经网络处理装置,用于向所述神经网络处理装置输出所述调试代码,并输入来自所述神经网络处理装置的调试结果,所述调试结果中包括所述神经网络处理装置的状态信息;
状态信息获取模块,连接于所述输入输出模块,用于根据所述调试结果确定所述神经网络处理装置的状态信息。
2.根据权利要求1所述的状态信息获取装置,其特征在于,所述调试指令添加模块包括:
插入位置确定子模块,用于确定所述输入代码中的一个或多个插入位置;
指令添加子模块,连接于所述插入位置确定子模块,用于分别在所述一个或多个插入位置处添加调试指令,得到添加后的调试代码。
3.根据权利要求1所述的状态信息获取装置,其特征在于,所述装置还包括:
指令生成模块,连接于所述调试指令添加模块,用于生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述神经网络处理装置运行过程中的状态信息存储到所述神经网络处理装置的第一存储模块中。
4.根据权利要求1所述的状态信息获取装置,其特征在于,所述神经网络处理装置包括控制模块、运算模块及第一存储模块,所述运算模块包括主处理电路和多个从处理电路,
所述控制模块,用于根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路,其中所述多个运算指令中包括所述调试指令;
所述主处理电路,用于对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种;
每个从处理电路,用于根据所述主处理电路传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路;
所述主处理电路,用于对多个中间结果执行后续处理得到所述调试代码的最终计算结果;
所述第一存储模块用于根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路的前序处理过程中的状态信息、所述多个从处理电路的中间运算过程中的状态信息、所述主处理电路的后续处理过程中的状态信息中的至少一种;
所述控制模块还用于根据所述状态信息生成调试结果,并向所述状态信息获取装置输出调试结果。
5.根据权利要求3或4所述的状态信息获取装置,其特征在于,所述第一存储模块包括片上存储器,所述片上存储器包括高速暂存存储器。
6.根据权利要求1所述的状态信息获取装置,其特征在于,所述装置还包括:
格式转换模块,连接于所述状态信息获取模块,用于将所述状态信息进行格式转换,获得转换后的状态信息;
第二存储模块,连接于所述格式转换模块,用于存储所述状态信息和/或所述转换后的状态信息。
7.一种可调试运算装置,其特征在于,所述装置包括:运算模块、控制模块、第一存储模块及状态信息输出模块;所述运算模块包括:主处理电路和多个从处理电路,
所述控制模块,用于根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路,其中所述多个运算指令中包括所述调试指令;
所述主处理电路,用于对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种;
每个从处理电路,用于根据所述主处理电路传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路;
所述主处理电路,用于对多个中间结果执行后续处理得到所述调试代码的最终计算结果;
所述第一存储模块用于根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路的前序处理过程中的状态信息、所述多个从处理电路的中间运算过程中的状态信息、所述主处理电路的后续处理过程中的状态信息中的至少一种;
所述状态信息输出模块,用于获取所述第一存储模块中的状态信息,并输出所述状态信息。
8.根据权利要求7所述的装置,其特征在于,所述第一存储模块包括片上存储器,所述片上存储器包括高速暂存存储器。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
指令生成模块,用于生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述可调试运算装置运行过程中的状态信息存储到所述存储模块中;
插入位置确定模块,连接于所述指令生成模块,用于确定输入代码中的一个或多个插入位置;
调试指令添加模块,连接于所述插入位置确定模块及所述控制模块,用于在所述一个或多个插入位置对所述输入代码添加所述调试指令,得到添加所述调试指令后的调试代码。
10.根据权利要求7所述的装置,其特征在于,所述运算模块还包括分支处理电路,
所述主处理电路,用于将所述待运算数据分配成多个数据块,将所述多个数据块中的至少一个数据块、所述待运算数据以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、所述待运算数据以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及所述待运算数据执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制模块。
11.根据权利要求7所述的装置,其特征在于,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个待运算数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
12.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求7-11任一项所述的可调试运算装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述计算装置时,所述多个所述计算装置间通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
13.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求12所述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
14.根据权利要求13所述的组合处理装置,其特征在于,还包括:存储装置,该存储装置分别与所述神经网络运算装置和所述其他处理装置连接,用于保存所述神经网络运算装置和所述其他处理装置的数据。
15.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求13或14所述的组合处理装置。
16.一种电子设备,其特征在于,所述电子设备包括如所述权利要求15所述的芯片。
17.一种状态信息获取方法,其特征在于,所述状态信息获取方法运用于状态信息获取装置,所述状态信息获取装置包括依次相连的调试指令添加模块、输入输出模块、状态信息获取模块,所述输入输出模块连接于神经网络处理装置,所述状态信息获取方法包括:
所述调试指令添加模块在输入代码中添加调试指令,得到添加后的调试代码,其中,所述输入代码为所述神经网络处理装置的可运行代码,所述调试指令用于采集所述神经网络处理装置运行过程中的状态信息;
所述输入输出模块向所述神经网络处理装置输出所述调试代码,并输入来自所述神经网络处理装置的调试结果,所述调试结果中包括所述神经网络处理装置的状态信息;
所述状态信息获取模块根据所述调试结果确定所述神经网络处理装置的状态信息。
18.根据权利要求17所述的状态信息获取方法,其特征在于,所述调试指令添加模块包括相连接的插入位置确定子模块及指令添加子模块,所述方法还包括:
所述插入位置确定子模块确定所述输入代码中的一个或多个插入位置;
所述指令添加子模块分别在所述一个或多个插入位置处添加调试指令,得到添加后的调试代码。
19.根据权利要求17所述的状态信息获取方法,其特征在于,所述装置还包括指令生成模块,所述方法还包括:
所述指令生成模块生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述神经网络处理方法运行过程中的状态信息存储到所述神经网络处理装置的存储模块中。
20.根据权利要求17所述的状态信息获取方法,其特征在于,所述神经网络处理装置包括控制模块、运算模块及第一存储模块,所述运算模块包括主处理电路和多个从处理电路,所述方法还包括:
所述控制模块根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路,其中所述多个运算指令中包括所述调试指令;
所述主处理电路对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种;
每个从处理电路根据所述主处理电路传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路;
所述主处理电路对多个中间结果执行后续处理得到所述调试代码的最终计算结果;
所述第一存储模块根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路的前序处理过程中的状态信息、所述多个从处理电路的中间运算过程中的状态信息、所述主处理电路的后续处理过程中的状态信息中的至少一种;
所述控制模块还根据所述状态信息生成调试结果,并向所述状态信息获取装置输出调试结果。
21.根据权利要求19或20所述的状态信息获取方法,其特征在于,所述第一存储模块包括片上存储器,所述片上存储器包括高速暂存存储器。
22.根据权利要求17所述的状态信息获取方法,其特征在于,所述装置还包括格式转换模块及第二存储模块,所述第二存储模块连接于所述格式转换模块,所述方法还包括:
所述格式转换模块将所述状态信息进行格式转换,获得转换后的状态信息;
所述第二存储模块存储所述状态信息和/或所述转换后的状态信息。
23.一种状态信息获取方法,其特征在于,所述状态信息获取方法运用于可调试运算装置,所述可调试运算装置包括:运算模块、控制模块、第一存储模块及状态信息输出模块;所述运算模块包括:主处理电路和多个从处理电路,所述方法包括:
所述控制模块根据输入的调试代码,得到多个运算指令,并将所述多个运算指令以及输入的待运算数据发送给所述主处理电路,其中所述多个运算指令中包括所述调试指令;
所述主处理电路对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种;
每个从处理电路根据所述主处理电路传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路;
所述主处理电路对多个中间结果执行后续处理得到所述调试代码的最终计算结果;
所述第一存储模块根据调试指令,存储所述状态信息,其中,所述状态信息包括所述主处理电路的前序处理过程中的状态信息、所述多个从处理电路的中间运算过程中的状态信息、所述主处理电路的后续处理过程中的状态信息中的至少一种;
所述状态信息输出模块获取所述存储模块中的状态信息,并输出所述状态信息。
24.根据权利要求23所述的状态信息获取方法,其特征在于,所述第一存储模块包括片上存储器,所述片上存储器包括高速暂存存储器。
25.根据权利要求24所述的状态信息获取方法,其特征在于,所述可调试运算装置还包括依次连接的指令生成模块、插入位置确定模块及调试指令添加模块,所述调试指令添加模块连接于所述控制模块,所述方法还包括:
所述指令生成模块生成所述调试指令,其中,所述调试指令包括状态信息存储指令,用于将所述可调试运算装置运行过程中的状态信息存储到所述存储模块中;
所述插入位置确定模块确定输入可调试运算装置的输入代码中的一个或多个插入位置;
所述调试指令添加模块在所述一个或多个插入位置对所述输入代码添加所述调试指令,以得到所述调试代码。
CN201811092726.7A 2018-09-14 2018-09-14 状态信息获取装置和方法 Active CN110909871B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811092726.7A CN110909871B (zh) 2018-09-14 2018-09-14 状态信息获取装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811092726.7A CN110909871B (zh) 2018-09-14 2018-09-14 状态信息获取装置和方法

Publications (2)

Publication Number Publication Date
CN110909871A true CN110909871A (zh) 2020-03-24
CN110909871B CN110909871B (zh) 2021-03-19

Family

ID=69812936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811092726.7A Active CN110909871B (zh) 2018-09-14 2018-09-14 状态信息获取装置和方法

Country Status (1)

Country Link
CN (1) CN110909871B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170372194A1 (en) * 2016-06-22 2017-12-28 International Business Machines Corporation Neuromorphic architecture with multiple coupled neurons using internal state neuron information
CN108154230A (zh) * 2016-12-05 2018-06-12 北京深鉴科技有限公司 深度学习处理器的监控方法和监控装置
CN108205704A (zh) * 2017-09-27 2018-06-26 深圳市商汤科技有限公司 一种神经网络芯片
CN108229675A (zh) * 2017-03-17 2018-06-29 北京市商汤科技开发有限公司 神经网络的训练方法、物体检测方法、装置和电子设备
CN108229678A (zh) * 2017-10-24 2018-06-29 深圳市商汤科技有限公司 网络训练方法、操作控制方法、装置、存储介质和设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170372194A1 (en) * 2016-06-22 2017-12-28 International Business Machines Corporation Neuromorphic architecture with multiple coupled neurons using internal state neuron information
CN108154230A (zh) * 2016-12-05 2018-06-12 北京深鉴科技有限公司 深度学习处理器的监控方法和监控装置
CN108229675A (zh) * 2017-03-17 2018-06-29 北京市商汤科技开发有限公司 神经网络的训练方法、物体检测方法、装置和电子设备
CN108205704A (zh) * 2017-09-27 2018-06-26 深圳市商汤科技有限公司 一种神经网络芯片
CN108229678A (zh) * 2017-10-24 2018-06-29 深圳市商汤科技有限公司 网络训练方法、操作控制方法、装置、存储介质和设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈启军: "《嵌入式系统及其应用 第3版》", 31 December 2015, 同济大学出版社 *

Also Published As

Publication number Publication date
CN110909871B (zh) 2021-03-19

Similar Documents

Publication Publication Date Title
CN109522052B (zh) 一种计算装置及板卡
CN110163363B (zh) 一种计算装置及方法
CN109685201B (zh) 运算方法、装置及相关产品
CN110147249B (zh) 一种网络模型的计算方法及装置
TW202321999A (zh) 一種計算裝置及方法
CN111045728B (zh) 一种计算装置及相关产品
CN110163349B (zh) 一种网络模型的计算方法及装置
CN111626413A (zh) 一种计算装置及方法
CN111488976A (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN109711540B (zh) 一种计算装置及板卡
CN111488963A (zh) 神经网络计算装置和方法
CN110647356A (zh) 运算装置及相关产品
CN109711538B (zh) 运算方法、装置及相关产品
CN109740729B (zh) 运算方法、装置及相关产品
CN109740730B (zh) 运算方法、装置及相关产品
CN110909871B (zh) 状态信息获取装置和方法
CN111047021A (zh) 一种计算装置及相关产品
CN111368967A (zh) 一种神经网络计算装置和方法
CN110472734B (zh) 一种计算装置及相关产品
CN111368990B (zh) 一种神经网络计算装置和方法
CN111368987B (zh) 一种神经网络计算装置和方法
CN111078284B (zh) 运算方法、系统及相关产品
CN111368986B (zh) 一种神经网络计算装置和方法
CN111367567A (zh) 一种神经网络计算装置和方法
CN111078282B (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
GR01 Patent grant
GR01 Patent grant