CN111783954B - 一种用于确定神经网络的性能的方法、电子设备和存储介质 - Google Patents
一种用于确定神经网络的性能的方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN111783954B CN111783954B CN202010618668.8A CN202010618668A CN111783954B CN 111783954 B CN111783954 B CN 111783954B CN 202010618668 A CN202010618668 A CN 202010618668A CN 111783954 B CN111783954 B CN 111783954B
- Authority
- CN
- China
- Prior art keywords
- time
- instructions
- operation instruction
- instruction
- operation instructions
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7817—Specially adapted for signal processing, e.g. Harvard architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Hardware Design (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Signal Processing (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Neurology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开记载了一种用于确定神经网络的性能的方法、电子设备和计算装置,其中计算装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据。
Description
技术领域
本公开涉及计算机领域,更具体地,设计对性能进行测试的领域。
背景技术
神经网络的操作包括多种,例如运算操作、IO操作等,每种操作都有相应的运行时间。神经网络的运行时间主要由运算时间和IO时间组成,为了使运行时间更少,更好地显示人工智能芯片的性能,主要可以通过叠加计算时间和IO时间、利用一级缓存、多核并发任务等方式来提高性能。通过该性能分析模块,可以得到网络运行时候的IO时间、权值时间、计算时间、其他时间以及计算和IO不叠加或者不叠加时候的执行时间等。通过这些数据可以分析出网络运行的性能瓶颈所在,进而找到需要优化的网络层、算子、特定输入规模等等,从而提升网络的运行性能。
人工智能芯片在处理多维矩阵乘的时候比通用处理器有更好的性能,但是仍然需要分析一个神经网络在芯片上的执行细节,寻找性能瓶颈,修改算法,进一步提高其执行性能。现有的分析神经网络在人工智能芯片上的性能分析一般是获得整个网络运行过程的总时间,总IO时间或计算时间,把瓶颈定位到一个较大的范围内。
已有的分析方法的缺点是获得的信息粒度较粗,无法定位到哪一类的IO、哪一类的计算或者哪一层的哪些指令是瓶颈,无法十分精准的定位瓶颈,从而很难充分优化。
发明内容
本公开的目的在于提供一种能够对神经网络的性能进行分析的方法和设备。
根据本公开的第一方面,提供一种用于确定神经网络的性能的方法,包括:接收所述神经网络的网络信息;从所述网络信息中获取多个操作指令;确定所述多个操作指令中至少一个操作指令的运行时间;根据所述运行时间来确定所述神经网络的性能。
根据本公开的第二方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
根据本公开第三方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开的技术方案的有益效果至少包括下列其中之一:可以解决神经网络在人工智能芯片处理器上性能分析的方法问题。通过数据可以分析出网络运行的性能瓶颈所在,进而找到需要优化的网络层、算子、特定输入规模等等,从而提升网络的运行性能。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1示出了一种用于确定神经网络的性能的方法;
图2示出了根据本公开的一个实施方式的确定所述多个操作指令中至少一个操作指令的运行时间的方法流程图;
图3示出根据本公开的一个实施方式的确定操作指令的重叠率的流程图;
图4a示出了本公开的方法可以应用的一个处理器集群的内部结构示意图;
图4b示出了本公开的方法可以应用的人工智能处理器的结构示意图;
图5示出了一种组合处理装置;
图6示出了一种示例性板卡。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
在卷积运算中,通常可以包括多种指令,例如运算操作指令、输入输出(IO)指令和权值加载指令等。在多线程或多核处理器的情况下,多个指令可以并行执行,以减少整体的运行时间。如果输入输出的时间与计算时间能够完全相同并且完全覆盖对方,则这样的并行处理方式效率最高,而如果输入输出时间大于运算时间,则表明输入输出操作为神经网络运行的瓶颈;如果运算时间大于输入输出时间,则表明运算操作为神经网络运行的瓶颈。
由此,如果能得到每种操作的时间,一个操作与另一个操作的重合度,和/或每个操作在总操作时间中的比例,则可以判断整个运算过程中的瓶颈、效率以及需要改进之处。
图1示出了一种用于确定神经网络的性能的方法,包括:在操作S110,接收所述神经网络的网络信息;在操作S120,从所述网络信息中获取多个操作指令;在操作S130,确定所述多个操作指令中至少一个操作指令的运行时间;以及,在操作S140,根据所述运行时间来确定所述神经网络的性能。
上述的网络信息,可以是神经网络的结构、操作的类型(例如卷积运算操作、输入输出操作、权值加载操作等)、各操作的相互关系、神经网络的稀疏或稠密等等。
在获得了网络信息之后,可以获取多个操作指令的信息,例如运算操作指令(例如卷积运算操作指令,向量计算时间等)的信息、IO操作指令(例如数据输入加载指令、数据输出存储指令)的信息、权值加载指令(例如权值输入加载指令)的信息等。这些信息还包含了每个操作指令与其操作他指令的关系,例如输入输出指令与运算操作指令的时序关系。
对于操作S130,可以通过多种方案来确定至少一个操作指令的运行时间,例如,可以确定整个神经网络中各种操作指令的总运行时间,可以通过关断其中某些操作指令来确定未关断操作指令的运行时间,可以通过确定已关断指令的运行时间等等。这将在下文中进行更详细的描述。
对于操作S140,当确定了神经网络中操作指令的运行时间之后,可以通过这些运行时间来确定神经网络的性能,例如如果某个运算操作指令的耗时太长,则意味着该运算操作指令可能是整个神经网络运算的瓶颈,需要调整该卷积运算时令的时序,或者可以使得其他更多的输入输出指令与该运算操作指令并行处理,从而提升神经网络的整体运算效率。
图2示出了根据本公开的一个实施方式的确定所述多个操作指令中至少一个操作指令的运行时间的方法流程图。
确定至少一个操作指令的运行时间可以通过多种方式,如图2所示,根据本公开的一个实施方式,确定所述多个操作指令中至少一个操作指令的运行时间可以包括:在操作S1310,打断所述多个操作指令的流水以使得所述多个操作指令无重叠,以获取所述多个操作指令的总运行时间;在操作S1320,禁用待确定的操作指令,以获取未禁用的操作指令的有效运行时间;在操作S1330,以总运行时间减去所述有效运行时间从而获取待确定的操作指令的运行时间。
在描述上述的步骤之前,先介绍几个对操作指令进行控制的控制操作:
1、流水打断操作,用于打断整个操作指令的流水,使得所有的操作指令完全不发生重叠,例如使得运算操作指令与输入输出指令完全不重叠;
2、仅运算操作,用于仅运行卷积运算操作,而使得所有其他操作指令的运行关断;
3、运算去除操作,用于去掉卷积运算指令,而保留其他操作指令;
4、权值加载去除操作,用于去掉权值加载指令,而保留其他操作指令;
5、IO去除操作,用于去掉IO操作指令,而保留其他操作指令;
6、稀疏开关操作,该指令可以在稀疏状态和稠密状态之间切换。
此外,如果神经网络系统默认的为稀疏状态,那么上述的稀疏开关操作可以是稀疏关断操作,即关断稀疏状态,神经网络可以转换为稠密状态;可选地,如果神经网络默认为稠密状态,那么上述的稀疏开关操作可以是稠密关断操作,即关断稠密状态,神经网络可以切换为稀疏状态。需要理解的是,上述的操作仅仅是一种示例,还可以有其他操作,例如仅进行IO操作的操作,仅进行权值加载的操作等等。
对于操作S1310,首先可以通过流水打断操作来打断整个神经网络运算的指令流水,使得所有原先并行运行的指令不发生任何重叠。由此,在指令不重叠的情况,可以检测或计算所有指令串行执行时总的时间。
打断所述多个操作指令的流水以使得所述多个操作指令无重叠,以获取所述多个操作指令的总运行时间,所获得的时间不会由于并行操作而隐藏掉任何一个指令的运行时间。
在打断指令流水之后,为了确定一个操作指令的运行时间,可以关断或禁用所要确定的操作指令,这样,可以确定出未被关断的所有操作指令的总运行时间。例如,可以通过权值加载去除操作来禁用权值加载;当采用运算去除操作时,则不再进行例如卷积运算之类的运算操作;而当采用IO去除操作时,则禁用进行输入和输出。
进而,以总的时间减去该未被关断的所有操作指令的总运行时间,就可以得到要确定的操作指令的运行时间。
得到一个或多个操作指令的运行之间之后,可以通过评估该指令运行时间的绝对值、与其他指令之间的相对值以及与总运行时间的相对值等来评估相应指令是否满足要求。这将在下文中进行更详细的描述。
以上方式是通过禁用某一个操作来间接地计算该操作的运行时间。根据本公开的一个实施方式,还可以仅使能待确定的操作指令,以获取所使能的操作指令的运行时间。这样可以直接得到每个操作的运行时间。待确定的操作指令可以包括运算操作指令、IO操作指令和权值加载操作指令等。
例如,通过仅运算操作,可以使得所有指令中仅运行运算操作指令,从而能够直接得到该运算操作指令的运行时长。又例如,通过仅进行IO操作的操作,可以仅保留数据的输入和输出操作;而通过仅进行权值加载的操作,可以仅仅进行权值数据的加载过程。
例如,当需要得到IO操作的运行时间的话,可以采用IO去除操作,从而得到没有IO操作情况下的运行时间,再以打断流水后的总运行时间减去上述没有IO操作操作下的运行时间来确定IO操作的运行时间。
又例如,当需要获得权值加载的时间,那么可以采用权值加载去除操作,从而得到没有权值记载情况下的运行时间,再以打断流水后的总运行时间减去上述没有权值加载的运行时间来确定权值记载的运行时间。
根据本公开的一个实施方式,根据所述多个操作指令的运行时间来确定所述神经网络的性能包括:确定操作指令的重叠率。
操作指令的重叠率可以包括多个操作指令之间重叠的比率占这些操作指令总的运行时间的比例,也可以是一个操作指令与另外一个操作指令的重叠部分占这两个操作指令中一个的比率。
图3示出根据本公开的一个实施方式的确定操作指令的重叠率的流程图。如图3所示,确定操作指令的重叠率包括:在操作S310,获取多个操作指令的第一运行时间;在操作S320,获取多个操作指令中第一操作指令的第二运行时间;在操作S330,打断所述多个操作指令的流水以使得所述多个操作指令无重叠;在操作S340,获取无重叠的多个操作指令的第三运行时间;在操作S350,以第三运行时间减去第二运行时间获得其他操作指令的第四运行时间;以及,在操作S360,以第二运行时间和第四运行时间的大者除以所述第一运行时间来得到所述操作指令的重叠率。
下面举例来详细描述以上的方法流程图。
上面所述的第一运行时间,是指整个神经网络正常的运行时间,在此情况下,无需打断流水,得到多个操作指令重叠情况下的总运行时间,这里表示为T1。
第二运行时间是指某一个或多个操作指令的单独运行时间,例如,当需要确定运算操作指令的重叠率时,可以通过“仅运算操作”来仅使能卷积运算操作,而其他操作则被禁止。通过该操作,可以获得第二运行时间,例如运算操作指令的运算时间,这里表示为T2。
接下来,打断整个神经网络的指令流水,使得所有的操作指令的运行不发生重叠。在此情况下,得到所有操作指令串行运行的第三运行时间,这里表示为T3。
在得到第二运行时间T2以及第三运行时间T3之后,可以计算其他操作指令的总运行时间,即T3-T2,这里表示为T4=T3-T2。这里的其他操作指令例如可以是IO操作指令。
通常情况下,IO操作指令和运算操作指令是并行执行的,二者如果能够完全重叠,则为最优情况,而如果二者不能完全重叠,例如第二时间T2大于T4,这意味着运算操作指令的运行时间超过了例如IO操作指令的运行时间。
接下来,可以选择T2和T4中最大的时间,除以第一运行时间T1,即max(T2,T4)/T1,来计算重叠率。
例如,一个特定规模的卷积的实际运行时间是10ms,需要知道运算操作和IO操作的重叠率,那么首先关闭优化(例如关闭稀疏)获得关闭输入优化的实际值为11ms。这在接下的分析中需要一直保持使能,以使得数据能够保持一致。
接下来,打断流水,获得运算操作和IO操作的串行执行时间为15ms。然后,在不打断流水的情况下,仅进行运算操作(例如进行卷积运算,获得运算操作的时间是6ms,那么IO操作的时间就是15-6=9ms。由此我们得到这个规模的卷积操作的实际时间是11ms,IO操作时间9ms,运算操作时间6ms,由此,卷积的重叠率是max(6,9)/11=82%。从这些数据可以看出,这个规模的卷积的瓶颈为IO操作,因为6ms的运算操作没有被9ms的IO操作完全覆盖,因此需要找到具体的原因来进行优化。
以上的方法可以在单个处理器核运行或者对单个处理器核进行评估,当需要评估包括多个处理器核和/或多个处理器集群的神经网络性能的时候,可以根据已知的单核性能来进行评估。
图4a示出了本公开的方法可以应用的一个处理器集群的内部结构示意图。
人工智能(AI)芯片加速了数据计算能力,降低了访存延时。AI芯片采用多核处理器架构,支持多达16核并行计算,并加入存储单元核(也可称为片上或片内存储单元)来加速数据读取,解决了AI芯片的处理器核与DDR(也可以称为片外存储单元)的访存瓶颈问题。为用户在处理深度学习、网络计算等场景中,提供更强的运算能力。
AI芯片共有16个处理器核,用于执行计算任务。每4个处理器核组成一个处理器集群,即共4个处理器集群。每个处理器集群内有个存储单元核。存储单元核主要用于处理器集群内部的共享存储单元与处理器核的数据交换和处理器集群之间的数据交换。当存储器核和处理器核同时访问DDR时,通过多路复用器仲裁后,保证仅一组总线访问DDR。
图4b示出了本公开的方法可以应用的人工智能处理器的结构示意图。
AI芯片的DDR采用非统一内存存取(Non-Uniform Memory Access,NUMA)架构,每个处理器集群可以通过NOC0访问不同的DDR通道,但访问不同的DDR通道的延时不同。每个处理器集群都对应一个访问延时最低的DDR通道,访问其他通道时延时相对较长。如图4b中处理器集群与DDR结构图所示,处理器集群0,处理器集群1,处理器集群2和处理器集群3分别访问对应的DDR0,DDR1,DDR2和DDR3时延时最低。也就是每个处理器核访问了各自处理器集群访存延时最低的DDR通道。
由于处理器集群内部的访存带宽高于处理器核和DDR之间的访问带宽,所以AI芯片可以通过采用处理器集群来内部存取共享存储单元,以减少处理器核直接访问DDR,从而提高了数据吞吐量。
当需要4核并行计算时,存储单元核可以通过数据广播方式(通过NOC1),将数据由共享存储单元同时广播到处理器集群内的4个处理器核以进行数据计算。相对于所有处理器核通过DDR来读取数据的方式,这种情况下能够降低访存延时,优化计算性能。
当计算需求增大时,16个处理器核可以需要同时处理多个计算任务。处理器核直接访问DDR必然会引起数据访问延时,导致计算速度慢等问题。AI芯片通过处理器集群相互之间的数据交换,避免了16个处理器核直接与DDR通信,从而降低了数据访问的延时。
上文中示出的设备包括四个处理集群,每个处理集群包括了四个处理器核,本公开的方案可以扩展到任何数量的处理器集群和处理器核。
根据本公开的一个实施方式,在多核处理器的情况下,所述方法在多核处理器中执行,所述多核处理器包括第一数量m的处理器核,所述第一数量m的处理器核分为第二数量n的处理器集群和通道,每个处理器集群包括m/n个处理器核,并且其中,m个处理器核每次并行执行m个运算操作指令,每个运算操作指令的执行时间为第五运行时间;在n个通道每次并行执行n个IO操作指令和/或权值加载操作指令,每个IO操作指令和/或权值加载操作指令的执行时间为第六运行时间;以所述第五运行时间和m/n个第六运行时间中的大者为所述多个处理器的运行时间。
举例而言,首先,可以根据已知的单核性能来评估多核和/或多集群的性能。首先,可以采用“权值加载去除操作”和“IO去除操作”来关断权值加载操作和IO操作,由此,可以获得运算操作的时间;然后,打断流水,获得总的运行时间,由总运行时间减去运算操作的时间得到权值加载时间和IO操作时间之和。
获得了网络的运算操作时间以及全部加载的输入输出操作(IO操作+权值加载操作)之后,可以估计出多个处理器核的时间。
例如,如果一个处理器集群在单核(包括一个处理器核)的情况下的运算操作时间为20ms,总的输入输出时间(IO操作+权值加载操作)为15ms,那么总的时间为max(20,15)=20ms。
在32个处理器核(即m=32),4个处理器集群(即n=4)的情况下,32个核的计算时间仍然为20ms,而总的IO时间为15*32/4=120ms。由此,可以计算出32个处理器核的理论时间约为max(20,120)=120ms。
上述的方法,可以在神经网络的每一层中执行,即使每个层中的操作类型会有所不同。
根据本公开的一个实施方式,上述的操作可以在稀疏情况下进行,也可以在关闭稀疏的情况下进行。可以根据实际的需要来调整稀疏状态和稠密状态。
需要理解的是,上面所述的指令、操作等的含义可以互换,每个操作可以通过指令来实现,而每个指令的执行也可以表现为具体的操作。例如,上文中的流水打断操作可以表现为流水打断指令,仅运算操作可以通过仅运算指令来实现。
本公开还提供了了一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
本公开还提供了一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开的上述技术方案,可以解决神经网络在人工智能芯片处理器上性能分析的方法问题,提供了一种可获得多维度性能数据的分析模块,为性能优化提供支持。神经网络的运行时间主要由运算时间和IO时间组成,为了使运行时间更少,更好地展现人工智能芯片的性能,主要可以通过叠加计算和IO时间、利用一级缓存、多核并发任务等方式来提高性能。通过本公开的方法,可以得到网络运行时候的的多维度指标,例如IO时间,权值加载时间,运算时间以及其他时间等,以及运算操作和IO操作发生叠加或者不叠加时候的执行时间等。通过这些数据可以分析出网络运行的性能瓶颈所在,进而找到需要优化的网络层、算子、特定输入规模等等,从而提升网络的运行性能。
本公开的技术方案可应用于人工智能领域,实现为或者实现在软件、固件或人工智能芯片中。该芯片可以单独存在,也可以包含在计算装置中。
图5示出了一种组合处理装置500,其包括上述的计算装置502,通用互联接口504,和其他处理装置506。根据本公开的计算装置与其他处理装置进行交互,共同完成用户指定的操作。图5为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在计算装置(包括例如机器学习运算装置)与其他处理装置间传输数据和控制指令。该计算装置从其他处理装置中获取所需的输入数据,写入该计算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入计算装置片上的控制缓存;也可以读取计算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构还可以包括存储装置508,存储装置分别与所述计算装置和所述其他处理装置连接。存储装置用于保存在所述计算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本计算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图6,其提供了一种示例性的板卡,上述板卡除了包括上述芯片602以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件604、接口装置606和控制器件608。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元610。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备1012(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡。
电子设备或装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
Claims (10)
1.一种用于确定神经网络的性能的方法,包括:
接收所述神经网络的网络信息;
从所述网络信息中获取多个操作指令;
确定所述多个操作指令的运行时间以确定所述神经网络的性能;其中确定多个操作指令的运行时间包括:确定操作指令的重叠率;
所述确定操作指令的重叠率包括如下步骤:
获取多个操作指令的第一运行时间;
获取多个操作指令中第一操作指令的单独运行时间,即第二运行时间;
打断所述多个操作指令的流水以使得所述多个操作指令无重叠;
获取无重叠的多个操作指令的第三运行时间;
以第三运行时间减去第二运行时间获得其他操作指令的第四运行时间;
以第二运行时间和第四运行时间的大者除以所述第一运行时间来得到所述操作指令的重叠率。
2.根据权利要求1所述的方法,其中,所述多个操作指令包括运算操作指令、IO操作指令和/或权值加载操作指令。
3.根据权利要求1所述的方法,其中,获取第二运行时间包括:
仅使第一操作指令执行操作,其他操作指令被禁止以获取第二运行时间。
4.根据权利要求3所述的方法,其中,第一操作指令包括运算操作指令、IO操作指令或权值加载操作指令。
5.根据权利要求4所述的方法,其中,所述第一操作指令为运算操作指令;所述其他操作指令为IO操作指令和/或权值加载操作指令。
6.根据权利要求5所述的方法,其中,所述方法在多核处理器中执行,所述多核处理器包括m个处理器核,所述m个处理器核分为n个处理器集群和通道,每个处理器集群包括m/n个处理器核,
并且其中,
m个处理器核每次并行执行m个运算操作指令,每个运算操作指令的执行时间为第五运行时间;
在n个通道每次并行执行n个IO操作指令和/或权值加载操作指令,每个IO操作指令和/或权值加载操作指令的执行时间为第六运行时间;
以所述第五运行时间和m/n个第六运行时间中的大者为所述多核处理器的运行时间。
7.根据权利要求1所述的方法,其中,所述方法应用于所述神经网络的每一层。
8.根据权利要求1-6中任意一项所述的方法,其中,所述方法是在稀疏关闭的情况下进行的。
9.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如权利要求1-8中任意一项所述的方法。
10.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010618668.8A CN111783954B (zh) | 2020-06-30 | 2020-06-30 | 一种用于确定神经网络的性能的方法、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010618668.8A CN111783954B (zh) | 2020-06-30 | 2020-06-30 | 一种用于确定神经网络的性能的方法、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111783954A CN111783954A (zh) | 2020-10-16 |
CN111783954B true CN111783954B (zh) | 2023-05-02 |
Family
ID=72761467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010618668.8A Active CN111783954B (zh) | 2020-06-30 | 2020-06-30 | 一种用于确定神经网络的性能的方法、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111783954B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395416B1 (en) * | 2006-09-12 | 2008-07-01 | International Business Machines Corporation | Computer processing system employing an instruction reorder buffer |
WO2015027809A1 (zh) * | 2013-08-30 | 2015-03-05 | 华为技术有限公司 | 指令处理方法及装置、处理器 |
CN109032669A (zh) * | 2018-02-05 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量最小值指令的方法 |
CN110688158A (zh) * | 2017-07-20 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 计算装置以及神经网络的处理系统 |
CN111045728A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7506331B2 (en) * | 2004-08-30 | 2009-03-17 | International Business Machines Corporation | Method and apparatus for determining the profitability of expanding unpipelined instructions |
US8645669B2 (en) * | 2010-05-05 | 2014-02-04 | International Business Machines Corporation | Cracking destructively overlapping operands in variable length instructions |
-
2020
- 2020-06-30 CN CN202010618668.8A patent/CN111783954B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7395416B1 (en) * | 2006-09-12 | 2008-07-01 | International Business Machines Corporation | Computer processing system employing an instruction reorder buffer |
WO2015027809A1 (zh) * | 2013-08-30 | 2015-03-05 | 华为技术有限公司 | 指令处理方法及装置、处理器 |
CN110688158A (zh) * | 2017-07-20 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 计算装置以及神经网络的处理系统 |
CN109032669A (zh) * | 2018-02-05 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量最小值指令的方法 |
CN111045728A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
Non-Patent Citations (2)
Title |
---|
基于指令并行的软件流水线研究;彭佛才等;《微电子学与计算机》;20031225(第12期);全文 * |
密码协处理器指令级并行编译研究;高飞等;《计算机应用研究》;20100515(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111783954A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110119807B (zh) | 运算方法、装置、计算机设备和存储介质 | |
WO2022161318A1 (zh) | 数据处理装置、方法及相关产品 | |
CN111258935B (zh) | 数据传输装置和方法 | |
CN111124995A (zh) | 通过人工智能处理器处理一维复数数组的方法和设备 | |
WO2021185262A1 (zh) | 计算装置、方法、板卡和计算机可读存储介质 | |
CN111783954B (zh) | 一种用于确定神经网络的性能的方法、电子设备和存储介质 | |
CN111047005A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111340202B (zh) | 运算方法、装置及相关产品 | |
EP4142217A1 (en) | Inter-node communication method and device based on multiple processing nodes | |
CN111258732B (zh) | 一种数据处理的方法、数据处理装置和电子设备 | |
CN214504452U (zh) | 一种用于神经网络推理的异构系统 | |
WO2023241478A1 (zh) | 人工智能加速器流水线性能分析方法及设备 | |
CN111047030A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112395008A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111061507A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN113033791B (zh) | 用于保序的计算装置、集成电路装置、板卡及保序方法 | |
CN113032298B (zh) | 用于保序的计算装置、集成电路装置、板卡及保序方法 | |
CN111339060B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111124497B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111026440B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111353125B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN113157078B (zh) | 用于控制处理器的方法、装置及其处理器 | |
CN111384944B (zh) | 全加器、半加器、数据处理方法、芯片及电子设备 | |
CN111210011B (zh) | 数据处理装置及相关产品 | |
WO2023016382A1 (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 |