CN115526302B - 基于异构多核处理器的多层神经网络计算方法及装置 - Google Patents
基于异构多核处理器的多层神经网络计算方法及装置 Download PDFInfo
- Publication number
- CN115526302B CN115526302B CN202210999968.4A CN202210999968A CN115526302B CN 115526302 B CN115526302 B CN 115526302B CN 202210999968 A CN202210999968 A CN 202210999968A CN 115526302 B CN115526302 B CN 115526302B
- Authority
- CN
- China
- Prior art keywords
- neural network
- calculation
- area
- core
- slave
- 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
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computer Hardware Design (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Image Analysis (AREA)
Abstract
本发明提供了一种基于异构多核处理器的多层神经网络计算方法及装置,涉及神经网络技术领域,该方法包括:将各从核的内存划分为计算区域和存储区域,获取神经网络参数,将神经网络参数分布式存储至各从核的存储区域中;控制从核从主内存中读取输入数据,并将输入数据存储至计算区域中;控制从核基于存储区域中存储的神经网络参数及输入数据在计算区域中进行神经网络计算,并将计算得到的输出数据存入主内存中。本发明通过将神经网络参数分布式存储至从核中,无需在每层神经网络计算时与主内存进行数据交互,大大减少了从核与主内存的数据交互次数,减少了从核与主内存的数据交互时间,节约了计算时间,提升了计算效率。
Description
技术领域
本发明涉及神经网络技术领域,尤其是涉及一种基于异构多核处理器的多层神经网络计算方法及装置。
背景技术
异构多核处理器为典型的主-从架构的处理器,包含数个主核和较多个计算核(也被称为从核),主核和从核可以同时访问主内存(main memory),主内存通常空间比较大,但是内存带宽有限,从核直接访问主内存(直接内存访问,direct memory access,DMA)的开销极大,从核有各自独立的内存(local device memory,LDM),从核访问自己的独立内存速度非常快,但是从核LDM通常空间较小。
异构多核处理器的主要算力集中在从核,目前基于异构多核处理器实现多层神经网络计算时,N层神经网络计算需要串行执行3N次操作,包括N次从核从主内存中读取数据(DMA_get)、N次神经网络计算和N次从核向主内存写入数据(DMA_put),涉及大量从核与主内存的数据交互,计算密度(Arithmetic intensity,单位是FLOPS/Byte)较低,多层神经网络计算时的总运行时间等于DMA时间与计算时间之和,计算时间较长,降低了异构多核处理器的计算效率。
发明内容
有鉴于此,本发明的目的在于提供一种基于异构多核处理器的多层神经网络计算方法及装置,能够减少从核与主内存的数据交互次数,减少了从核与主内存的数据交互时间,节约了计算时间,提升了计算效率。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种基于异构多核处理器的多层神经网络计算方法,包括:将各从核的内存划分为计算区域和存储区域,获取神经网络参数,将所述神经网络参数分布式存储至各所述从核的存储区域中;控制所述从核从所述主内存中读取输入数据,并将所述输入数据存储至所述计算区域中;控制所述从核基于所述存储区域中存储的神经网络参数及所述输入数据在所述计算区域中进行神经网络计算,并将计算得到的输出数据存入所述主内存中。
进一步,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述计算区域包括第一计算区域和第二计算区域,所述控制所述从核基于所述存储区域中存储的神经网络参数及所述输入数据在所述计算区域中进行神经网络计算的步骤,包括:控制所述第一计算区域和所述第二计算区域交替进行神经网络计算;其中,当所述第一计算区域进行神经网络计算时,控制所述第二计算区域向所述主内存存入输出数据并读取下一个输入数据,当所述第二计算区域进行神经网络计算时,控制所述第一计算区域向所述主内存存入输出数据并读取下一个输入数据。
进一步,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述获取神经网络参数,将所述神经网络参数分布式存储至各所述从核的存储区域中的步骤,包括:从所述主内存中读取神经网络参数,基于所述从核的数量将所述神经网络参数划分为多部分参数;将各部分参数按照所在层顺序依次存储至各所述从核的存储区域中;其中,所述神经网络参数包括权重参数和偏置参数。
进一步,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述第一计算区域或所述第二计算区域进行神经网络计算的步骤,包括:将所述第一计算区域和/或所述第二计算区域中的内存进一步划分为第一分区和第二分区;控制所述第一分区和所述第二分区基于预设的从核间内存访问算法交替读取下一层神经网络参数并交替进行各层神经网络计算;其中,当所述第一分区进行第i层神经网络计算时,控制所述第二分区基于预设的从核间内存访问算法读取第i+1层的神经网络参数,当所述第一分区完成第i层神经网络计算时,控制所述第二分区基于所述第i+1层的神经网络参数进行第i+1层神经网络计算,同时控制所述第一分区基于所述预设的从核间内存访问算法读取第i+2层神经网络参数,直至完成多层神经网络计算,得到所述输出数据。
进一步,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述第一计算区域或所述第二计算区域进行神经网络计算的步骤,包括:将所述第一计算区域和/或所述第二计算区域中的内存进一步划分为第一分区和第二分区;控制所述第一分区和所述第二分区中的其中一个分区进行每层神经网络计算,控制另一个分区从对应的从核中读取每层神经网络参数。
进一步,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述输入数据和所述输出数据分别为晶体中空位向邻近原子跃迁前的能量状态及跃迁后的能量状态。
第二方面,本发明实施例还提供了一种基于异构多核处理器的多层神经网络计算装置,包括:存储模块,用于将各从核的内存划分为计算区域和存储区域,获取神经网络参数,将所述神经网络参数分布式存储至各所述从核的存储区域中;读取模块,用于控制所述从核从所述主内存中读取输入数据,并将所述输入数据存储至所述计算区域中;计算模块,用于控制所述从核基于所述存储区域中存储的神经网络参数及所述输入数据在所述计算区域中进行神经网络计算,并将计算得到的输出数据存入所述主内存中。
进一步,所述计算区域包括第一计算区域和第二计算区域,所述计算模块,进一步用于控制所述第一计算区域和所述第二计算区域交替进行神经网络计算;其中,当所述第一计算区域进行神经网络计算时,控制所述第二计算区域向所述主内存存入输出数据并读取下一个输入数据,当所述第二计算区域进行神经网络计算时,控制所述第一计算区域向所述主内存存入输出数据并读取下一个输入数据。
第三方面,本发明实施例提供了一种电子设备,包括:处理器和存储装置;所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时执行如第一方面任一项所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面任一项所述的方法的步骤。
本发明实施例提供了一种基于异构多核处理器的多层神经网络计算方法及装置,通过将神经网络参数分布式存储至从核中,从核每次进行神经网络计算时只需执行一次从主内存中读取神经网络的输入数据及向主内存写入神经网络的输出数据,无需在每层神经网络计算时与主内存进行数据交互,大大减少了从核与主内存的数据交互次数,减少了从核与主内存的数据交互时间,节约了计算时间,提升了计算效率。
本发明实施例的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明实施例的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例所提供的一种现有的异构多核处理器上实现多层神经网络计算的流程图;
图2示出了本发明实施例所提供的一种基于异构多核处理器的多层神经网络计算方法流程图;
图3示出了本发明实施例所提供的一种异构多核处理器上多层神经网络计算参数交互示意图;
图4示出了本发明实施例所提供的一种从核计算区域交替进行神经网络计算示意图;
图5示出了本发明实施例所提供的一种神经网络分层计算流程图;
图6示出了本发明实施例所提供的一种基于异构多核处理器的多层神经网络计算装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
异构多核处理器是计算机中常见的处理器类型之一,目前,现有的异构多核处理器上实现多层神经网络计算的流程如图1所示,DMA表示direct memory access,指从核直接访问主内存,DMA_get表示从核直接从主内存读取数据,DMA_put则表示从核向主内存写入数据。如图1所示,N层神经网络计算需要串行执行3N次访问主内存的操作,包括N次DMA_get、N次神经网络计算和N次DMA_put,总运行时间等于DMA时间与计算时间之和。因此,多层神经网络计算过程中涉及大量从核与主内存的数据交互,计算密度(Arithmeticintensity,单位是FLOPS/Byte)很低(这里计算密度是指每字节内存操作对应的浮点数目),增大内存带宽可以一定程度上降低总体计算时间,但增大内存带宽很困难:DDR4的带宽有限(本身的技术限制),HBM2(High-Bandwidth Memory 2)的成本大、无法国产,并且增大内存带宽没有解决计算密度低的根本问题。因此,现有的基于异构多核处理器进行多层神经网络计算的技术,还存在计算时间较长,计算效率及计算密度较低的问题。
为改善上述问题,本发明实施例提供的一种基于异构多核处理器的多层神经网络计算方法及装置,该技术可应用于减少从核与主内存的数据交互时间,节约计算时间,提升计算效率。以下对本发明实施例进行详细介绍。
本实施例提供了一种基于异构多核处理器的多层神经网络计算方法,可以应用于异构多核处理器,参见图2所示的基于异构多核处理器的多层神经网络计算方法流程图,该方法主要包括以下步骤:
步骤S202,将各从核的内存划分为计算区域和存储区域,获取神经网络参数,将神经网络参数分布式存储至各从核的存储区域中。
将异构多核处理器的每个从核内存划分为计算区域和存储区域,从核从主内存中读取多层神经网络的神经网络参数,该神经网络参数包括每层神经网络计算所需的权重参数和偏置参数,由于神经网络参数需求的存储空间通常远大于单一从核的独立内存(LDM),将从核视为分布式存储单元,即每个从核拿出一定的存储空间用于存储神经网络参数,每个存储神经网络参数的从核的存储空间具有一个独立的ID。
步骤S204,控制从核从主内存中读取输入数据,并将输入数据存储至计算区域中。
在从核开始进行神经网络计算时,控制从核通过DMA_get读取主内存中的神经网络的输入数据,每个从核读取对应的输入数据,将从主内存中读取到的神经网络的输入数据存储至计算区域中,以便在计算区域进行神经网络计算。
步骤S206,控制从核基于存储区域中存储的神经网络参数及输入数据在计算区域中进行神经网络计算,并将计算得到的输出数据存入主内存中。
从核在进行神经网络计算时,将输入数据输入第一层神经网络,通过从核间远程访问从对应的从核中读取每层神经网络的权重参数和偏置参数,以便进行多层神经网络计算,多层神经网络计算完成后,得到神经网络的计算结果,记为输出数据,从核通过DMA_put将神经网络计算得到的输出数据写入主内存中。
通过执行上述基于异构多核处理器的多层神经网络计算方法,参见如图3所示的异构多核处理器上多层神经网络计算参数交互示意图,本申请中异构多核处理器上进行多层神经网络计算时,只需通过DMA_get从主内存中读取一次神经网络的输入数据,以及通过DMA_put将输出数据写入一次主内存即可完成异构多核处理器上的多层神经网络计算,将从核与主内存之间的2N次数据交互次数减小为2次数据交互(N为神经网络的层数),提升了计算效率。
本实施例提供的上述基于异构多核处理器的多层神经网络计算方法,通过将神经网络参数分布式存储至从核中,从核每次进行神经网络计算时只需执行一次从主内存中读取输入数据及向主内存写入神经网络的输出数据,无需在每层神经网络计算时与主内存进行数据交互,大大减少了从核与主内存的数据交互次数,减少了从核与主内存的数据交互时间,节约了计算时间,提升了计算效率。
在一种实施方式中,对神经网络参数进行分布式存储的具体实施方式可以包括:从主内存中读取神经网络参数,基于从核的数量将神经网络参数划分为多部分参数;将各部分参数按照所在层顺序依次存储至各从核的存储区域中;其中,神经网络参数包括权重参数和偏置参数。
将多层神经网络的神经网络参数通过DMA_get读取并分布式存储至各从核的存储区域中,先将神经网络参数划分为多部分,划分数量需要小于从核的数量,诸如,可以将神经网络第一层的权重矩阵(weights matrix,假定行优先内存排布)存储在从核0-N1的存储区域中,将第一层的偏置向量(bias vector)存储在从核N1+1的存储区域中,将第二层的权重矩阵存储至从核核N1+2至N2的存储区域中,将第二层的偏置向量存储至N2+1的存储区域中,以此类推,直至将每层神经网络参数均存储至从核中,完成全部神经网络参数的分布式存储。其中,上述N1及N2的取值可以根据每层神经网络参数所需占用内存大小及每个从核的存储区域大小确定。
在一个实施例中,当主内存中包括多个需要进行神经网络计算的输入数据时,为了进一步提升计算效率,上述每个从核中的计算区域包括第一计算区域和第二计算区域,本实施例提供了控制从核基于存储区域中存储的神经网络参数及输入数据在计算区域中进行神经网络计算的具体实施方式:
控制第一计算区域和第二计算区域交替进行神经网络计算;其中,当第一计算区域进行神经网络计算时,控制第二计算区域向主内存存入输出数据并读取下一个输入数据,当第二计算区域进行神经网络计算时,控制第一计算区域向主内存存入输出数据并读取下一个输入数据。
从核从主内存中读取第一个输入数据存储至第一计算区域中,第一计算区域基于第一个输入数据进行多层神经网络计算,同时从核从主内存中读取第二个输入数据存储至第二计算区域中。当第一计算区域完成神经网络计算时,控制第二计算区域进行多层神经网络计算,控制从核基于第二计算区域中的输出数据与主内存进行数据交互,以此类推,当其中一个计算区域进行神经网络计算时,另一个计算区域与主内存进行数据交互,从而使神经网络计算与DMA操作同步进行,提升了计算密度。
在一种具体的实施方式中,每一个从核在进行神经网络计算时都是独立进行的每个从核只需从主内存中读取神经网络计算时需要输入的初始输入数据。在第一计算区域与第二计算区域交替进行神经网络计算过程中,当从核在第一计算区域基于第k个输入数据进行神经网络计算时,控制从核将第二计算区域计算得到的第k-1个输出数据存入主内存中,并从主内存中读取第k+1个输入数据;当第一计算区域完成神经网络计算得到第k个输出数据时,控制从核在第二计算区域基于第k+1个输入数据进行神经网络计算,同时控制从核将第一计算区域得到的第k个输出数据存入主内存,并从主内存中读取第k+2个输入数据,重复执行上述交替神经网络计算过程,直至主内存中待计算的输入数据全部完成神经网络计算。
参见如图4所示的从核计算区域交替进行神经网络计算示意图,图4中示出了从核m随时间的变化情况,设从核m包括第一计算区域m1、第二计算区域m2和存储区域m3,存储区域m3用于存储神经网络参数NNP,当第一计算区域m1基于第k个输入数据进行神经网络计算时,第二计算区域m2与主内存进行数据交互,第二计算区域m2将计算得到的第k-1个输出数据存入主内存中,并从主内存中读取第k+1个输入数据;当第二计算区域m2基于第k+1个输入数据进行神经网络计算时,第一计算区域m1与主内存进行数据交互,第一计算区域m1将计算得到的第k个输出数据存入主内存中,并从主内存中读取第k+2个输入数据,重复执行图4中的神经网络交替计算过程,直至主内存中所有的神经网络输入数据完成计算。
在一个实施例中,为了进一步提升计算密度,将上述每个计算区域(包括第一计算区域和第二计算区域)进一步划分为两个分区,本实施例提供了第一计算区域或第二计算区域进行神经网络计算时的实施方式,具体可参照如下实施方式一或实施方式二执行:
实施方式一:在该实施方式中,控制第一分区和第二分区交替进行神经网络层计算,具体可参照如下步骤(1)~步骤(2)执行:
步骤(1):将第一计算区域和/或第二计算区域中的内存进一步划分为第一分区和第二分区。
将每个从核中的第一计算区域和/或第二计算区域进一步划分出第一分区和第二分区,诸如,当从核m包括第一计算区域m1、第二计算区域m2和存储区域m3时,将第一计算区域m1进一步划分出第一分区m1.1和第二分区m1.2,将第二计算区域m2进一步划分出第一分区m2.1和第二分区m2.2。
步骤(2):控制第一分区和第二分区基于预设的从核间内存访问算法交替读取下一层神经网络参数并交替进行各层神经网络计算。
当其中一个分区进行当前层的神经网络计算时,控制另一个分区基于预设的从核间内存访问算法从对应从核的存储区域中读取下一层的神经网络参数,直至完成多层神经网络计算,得到神经网络的输出数据。上述预设的从核间内存访问算法可以是从核间远程暂存器内存访问(Remote scratchpad Memory Access,RMA)方法。
在一种具体的实施方式中,当第一分区进行第i层神经网络计算时,控制第二分区基于预设的从核间内存访问算法读取第i+1层的神经网络参数,当第一分区完成第i层神经网络计算时,控制第二分区基于第i+1层的神经网络参数进行第i+1层神经网络计算,同时控制第一分区基于预设的从核间内存访问算法读取第i+2层神经网络参数,直至完成多层神经网络计算,得到神经网络的输出数据;i+2≤n-1,i为整数,n为神经网络总层数。
在一种实施方式中,上述第一计算区域和第二计算区域中除了包括第一分区和第二分区,还可以包括第三分区State,第三分区State用于存储每一层神经网络的输入量。以从核m的第一计算区域m1进行神经网络计算为例,参见如图5所示的神经网络分层计算流程图,图中示出了第一计算区域m1进行各神经网络层计算时随时间变化的状态图,从核通过DMA_get从主内存读取初始输入数据Y0存储至第一计算区域m1的第三分区State中,第一计算区域m1开始进行神经网络计算时,第一分区m1.1从第三分区State中读取第一层神经网络参数,并基于输入数据及第一层神经网络参数进行第一层神经网络计算,得到第一层神经网络的输出量,将该输出量存储至第三分区State中;
第一分区m1.1在进行第一层神经网络计算的同时,第二分区m1.2从对应的从核中读取第2层神经网络参数;
当第一分区m1.1完成第一层神经网络计算时,第二分区m1.2基于第2层神经网络参数及第一层神经网络的输出量Y1进行第二层神经网络计算,同时第一分区m1.1从对应的从核中读取第3层神经网络参数,并覆盖第一层神经网络参数;
当第二分区m1.2完成第二层神经网络计算时,将第二层神经网络的输出量Y2存储至第三分区State中覆盖之前存储的输出量,第一分区m1.1基于第3层神经网络参数及第二层神经网络的输出量Y2进行第三层神经网络计算,同时第二分区m1.2从对应的从核中读取第4层神经网络参数;依次控制第一分区和第二分区交替进行各层神经网络计算,直至完成多层神经网络计算,得到神经网络的输出数据Ym,将该输出数据Ym通过DMA_put写入主内存中与初始输入数据相对应的位置。
通过控制第一分区和第二分区交替进行神经网络计算,在进行每层神经网络计算的同时进行从核间的参数读取,使参数交互时间能够被神经网络计算掩盖,节约了参数读取时间,大大提升了计算密度。
实施方式二:在该实施方式中,控制第一分区或第二分区进行神经网络层计算,具体可参照如下步骤1)~步骤2)执行:
步骤1):将第一计算区域和/或第二计算区域中的内存进一步划分为第一分区和第二分区。
步骤2):控制第一分区和第二分区中的其中一个分区进行每层神经网络计算,控制另一个分区从对应从核中读取每层神经网络参数。
在一种实施方式中,控制第一分区进行每层神经网络计算,控制第二分区读取每层神经网络参数。当第一分区进行第i层神经网络计算时,控制第二分区基于预设的从核间内存访问算法从对应从核中读取第i+1层神经网络参数,当第一分区完成第i层神经网络计算时,第二分区将第i+1层神经网络参数存入第一分区中;当第一分区进行第i+1层神经网络计算时,控制第二分区基于预设的从核间内存访问算法从对应从核中读取第i+2层神经网络参数,直至完成多层神经网络计算,得到神经网络的输出数据。
在另一种实施方式中,可以控制第二分区进行每层神经网络计算,控制第一分区读取每层神经网络参数,并在第一分区完成当前层的神经网络计算时,将读取到的下一层神经网络参数写入第二分区中,使第二分区继续进行下一层神经网络计算,直至完成多层神经网络计算,得到神经网络的输出数据。
在一个实施例中,本实施例提供的基于异构多核处理器的多层神经网络计算方法可以应用于AKMC(原子动力学蒙特卡洛模拟,Atomic Kinetic Monte Carlo)跃迁模拟计算,上述从主内存中读取的神经网络的输入数据和输出数据可以分别为晶体中空位向邻近原子跃迁前的能量状态及跃迁后的能量状态。
原子动力学蒙特卡洛模拟(Atomic Kinetic Monte Carlo,AKMC)中,空位j向其第一近邻原子k跃迁的概率Γi由跃迁前后的能量差决定:
其中Γ0为尝试频率,通常为6×1012s-1,kB为玻尔兹曼常数,T为绝对温度,为参考能量,Ej为空位j跃迁前的体系能量,/>为空位跃迁至原子k后的体系能量。不同晶格的第一近邻原子数各不相同,比如体心立方(Body-Centered Cubic,BCC)晶体下任意晶格位点有8个第一近邻,而面心立方(Face-Centered Cubic)晶体任意晶格有12个第一近邻。对任意空位,我们完成计算1+Nk次能量计算,这里1对应初始状态(即跃迁前的能量状态),Nk则对应Nk个可能的跃迁后的能量状态。
在一次AKMC演化中,如果有N个空位可能发生跃迁,总共需要计算N(1+Nk)个不同状态对应的能量,神经网络力场(Neural Network Potential,NNP)可以用于计算这些状态的高精度能量,NNP的核心是多层神经网络。
多层神经网络中第m(m>0)层的输出量Ym的计算算式为:
Ym=σ(WmYm-1+bm)
其中σ为激活函数,Wm是权重矩阵,bm是偏置向量,Ym-1为m-1层神经网络的输出量,Y0为神经网络初始的输入数据。上述激活函数可以是ReLU激活函数,Softplus函数或Tanh函数。
本实施例提供的上述基于异构多核处理器的多层神经网络计算方法,使AKMC跃迁模拟中每个状态的能量计算需要的主内存访问操作次数从2N减少为2次,同时从核从主内存读取存入数据及从核间读取神经网络参数可以与神经网络计算同时进行,总体计算过程由内存瓶颈型变为计算密集型,大幅提升了异构多核处理器的计算密度。
在前述实施例的基础上,本实施例提供了一种应用前述基于异构多核处理器的多层神经网络计算方法计算AKMC跃迁模拟中各个态的能量状态的示例,具体可参照如下步骤执行:
步骤1,将每个从核划分为第一计算区域、第二计算区域和存储区域。
步骤2,将多层神经网络力场各层的神经网络参数及神经网络的初始输入数据Y0通过DMA_get读取,将神经网络参数分布式存储至从核的存储区域中,将神经网络的初始输入数据存储至第一计算区域中。
由于神经网络参数需求的存储空间一般远大于单一从核的LDM,需要将从核视为分布式存储单元:
a.每个从核拿出一定的存储区域LDM(比如16kB或32kB)用于存储神经网络参数,每个从核有一个独立id。
b.将神经网络第一层的权重矩阵(weights matrix,假定行优先内存排布)存储在从核0-N1中,将第一层的偏置向量(bias vector)存储在从核N1+1中;
c.从核N1+2至N2存储第二层的权重矩阵,从核N2+1存储第二层的偏置向量;
d.逐步完成全部神经网络参数的分布式存储。
步骤3,将第二计算区域计算得到的k-1状态的输出数据写入主内存中,然后从主内存中DMA_get读取k+1状态的初始输入数据存入第二计算区域中。
步骤4,在步骤3执行的同时,从核在第一计算区域中进行第k个状态的能量计算。
计算Ym=σ(WmYm-1+bm),计算过程中产生的中间值及计算结果Ym均存放在从核的LDM的第一计算区域中。
在第m神经网络层计算的同时通过从核间远程暂存器内存访问(Remotescratchpad Memory Access,RMA)方法同步从对应的从核读取第m+1层神经网络的权重参数和偏置参数,并覆盖第m层神经网络的权重参数和偏置参数,重复该过程直至多层神经网络计算结束。
步骤5,当第一计算区域中完成第k个状态的能量计算时,将第k个状态的输出数据写入主内存中,然后从主内存读取第k+2状态的初始输入数据,将第k+2状态的初始输入数据写入第一计算区域中,同时在第二计算区域进行第k+2个状态的能量计算。
每个从核在计算时都是独立的,每个从核只读取自己需要用的初始输入数据。从核之间的关联只体现在神经网络参数的RMA(Remote scratchpad Memory Access,从核间远程暂存器内存访问)共享上。第一计算区域计算得到k状态的结果后,直接DMA_put将自己计算的输出结果写回对应的主内存位置。
重复执行上述步骤3~步骤5直至AKMC跃迁模拟中全部状态的能量计算完成。通过应用上述基于异构多核处理器的多层神经网络计算方法对AKMC跃迁模拟中各个态的能量状态进行计算,对神经网络:输入特征数64、6层、每层128个神经元、输入维度1的原子神经网络,batch大小为32时,该方法可以让计算密度从18FLOPS/Byte增大至500FLOPS/Byte,大幅提升了计算密度。
对应于上述实施例所提供的基于异构多核处理器的多层神经网络计算方法,本发明实施例提供了一种基于异构多核处理器的多层神经网络计算装置,参见图6所示的一种基于异构多核处理器的多层神经网络计算装置结构示意图,该装置包括以下模块:
存储模块61,用于将各从核的内存划分为计算区域和存储区域,获取神经网络参数,将神经网络参数分布式存储至各从核的存储区域中。
读取模块62,用于控制从核从主内存中读取输入数据,并将输入数据存储至计算区域中。
计算模块63,用于控制从核基于存储区域中存储的神经网络参数及输入数据在计算区域中进行神经网络计算,并将计算得到的输出数据存入主内存中。
本实施例提供的上述基于异构多核处理器的多层神经网络计算装置,通过将神经网络参数分布式存储至从核中,从核每次进行神经网络计算时只需执行一次从主内存中读取输入数据及向主内存写入神经网络的输出数据,无需在每层神经网络计算时与主内存进行数据交互,大大减少了从核与主内存的数据交互次数,减少了从核与主内存的数据交互时间,节约了计算时间,提升了计算效率。
在一种实施方式中,上述计算区域包括第一计算区域和第二计算区域,计算模块63,进一步用于控制第一计算区域和第二计算区域交替进行神经网络计算;其中,当第一计算区域进行神经网络计算时,控制第二计算区域向主内存存入输出数据并读取下一个输入数据,当第二计算区域进行神经网络计算时,控制第一计算区域向主内存存入输出数据并读取下一个输入数据。
在一种实施方式中,上述读取模块62,进一步用于从主内存中读取神经网络参数,基于从核的数量将神经网络参数划分为多部分参数;将各部分参数按照所在层顺序依次存储至各从核的存储区域中;其中,神经网络参数包括权重参数和偏置参数。
在一种实施方式中,上述计算模块63,进一步用于将第一计算区域和/或第二计算区域中的内存进一步划分为第一分区和第二分区;控制第一分区和第二分区基于预设的从核间内存访问算法交替读取下一层神经网络参数并交替进行各层神经网络计算;其中,当第一分区进行第i层神经网络计算时,控制第二分区基于预设的从核间内存访问算法读取第i+1层的神经网络参数,当第一分区完成第i层神经网络计算时,控制第二分区基于第i+1层的神经网络参数进行第i+1层神经网络计算,同时控制第一分区基于预设的从核间内存访问算法读取第i+2层神经网络参数,直至完成多层神经网络计算,得到输出数据。
在一种实施方式中,上述计算模块63,进一步用于将第一计算区域和/或第二计算区域中的内存进一步划分为第一分区和第二分区;控制第一分区和第二分区中的其中一个分区进行每层神经网络计算,控制另一个分区从对应的从核中读取每层神经网络参数。
在一种实施方式中,上述输入数据和输出数据分别为晶体中空位向邻近原子跃迁前的能量状态及跃迁后的能量状态。
本实施例提供的上述基于异构多核处理器的多层神经网络计算装置,使AKMC跃迁模拟中每个状态的能量计算需要的主内存访问操作次数从2N减少为2次,同时从核从主内存读取存入数据及从核间读取神经网络参数可以与神经网络计算同时进行,总体计算过程由内存瓶颈型变为计算密集型,大幅提升了异构多核处理器的计算密度。
本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例提供了一种电子设备,包括:异构多核处理器和存储装置;所述存储装置上存储有计算机程序,所述计算机程序在被所述异构多核处理器运行时执行上述实施例提供的基于异构多核处理器的多层神经网络计算方法。
本发明实施例提供了一种计算机可读介质,其中,所述计算机可读介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现上述实施例所述的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统具体工作过程,可以参考前述实施例中的对应过程,在此不再赘述。
本发明实施例所提供的基于异构多核处理器的多层神经网络计算方法及装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种基于异构多核处理器的多层神经网络计算方法,其特征在于,包括:
将各从核的内存划分为计算区域和存储区域,获取神经网络参数,将所述神经网络参数分布式存储至各所述从核的存储区域中;
在所述从核开始进行神经网络计算时,控制所述从核从主内存中读取输入数据,并将所述输入数据存储至所述计算区域中;
控制所述从核基于所述存储区域中存储的神经网络参数及所述输入数据在所述计算区域中进行神经网络计算,并将计算得到的输出数据存入所述主内存中;
所述计算区域包括第一计算区域和第二计算区域,所述控制所述从核基于所述存储区域中存储的神经网络参数及所述输入数据在所述计算区域中进行神经网络计算的步骤,包括:控制所述第一计算区域和所述第二计算区域交替进行神经网络计算;其中,当所述第一计算区域进行神经网络计算时,控制所述第二计算区域向所述主内存存入输出数据并读取下一个输入数据,当所述第二计算区域进行神经网络计算时,控制所述第一计算区域向所述主内存存入输出数据并读取下一个输入数据。
2.根据权利要求1所述的方法,其特征在于,所述获取神经网络参数,将所述神经网络参数分布式存储至各所述从核的存储区域中的步骤,包括:
从所述主内存中读取神经网络参数,基于所述从核的数量将所述神经网络参数划分为多部分参数;
将所述多部分参数按照所在层顺序依次存储至各所述从核的存储区域中;其中,所述神经网络参数包括权重参数和偏置参数。
3.根据权利要求1所述的方法,其特征在于,所述第一计算区域或所述第二计算区域进行神经网络计算的步骤,包括:
将所述第一计算区域和/或所述第二计算区域中的内存划分为第一分区和第二分区;
控制所述第一分区和所述第二分区基于预设的从核间内存访问算法交替读取下一层神经网络参数并交替进行各层神经网络计算;其中,当所述第一分区进行第i层神经网络计算时,控制所述第二分区基于预设的从核间内存访问算法读取第i+1层的神经网络参数,当所述第一分区完成第i层神经网络计算时,控制所述第二分区基于所述第i+1层的神经网络参数进行第i+1层神经网络计算,同时控制所述第一分区基于所述预设的从核间内存访问算法读取第i+2层神经网络参数,直至完成多层神经网络计算,得到所述输出数据。
4.根据权利要求1所述的方法,其特征在于,所述第一计算区域或所述第二计算区域进行神经网络计算的步骤,包括:
将所述第一计算区域和/或所述第二计算区域中的内存划分为第一分区和第二分区;
控制所述第一分区和所述第二分区中的其中一个分区进行每层神经网络计算,控制另一个分区从对应的从核中读取每层神经网络参数。
5.根据权利要求1所述的方法,其特征在于,所述输入数据和所述输出数据分别为晶体中空位向邻近原子跃迁前的能量状态及跃迁后的能量状态。
6.一种基于异构多核处理器的多层神经网络计算装置,其特征在于,包括:
存储模块,用于将各从核的内存划分为计算区域和存储区域,获取神经网络参数,将所述神经网络参数分布式存储至各所述从核的存储区域中;
读取模块,用于在所述从核开始进行神经网络计算时,控制所述从核从主内存中读取输入数据,并将所述输入数据存储至所述计算区域中;
计算模块,用于控制所述从核基于所述存储区域中存储的神经网络参数及所述输入数据在所述计算区域中进行神经网络计算,并将计算得到的输出数据存入所述主内存中;
所述计算区域包括第一计算区域和第二计算区域,所述计算模块,用于控制所述第一计算区域和所述第二计算区域交替进行神经网络计算;其中,当所述第一计算区域进行神经网络计算时,控制所述第二计算区域向所述主内存存入输出数据并读取下一个输入数据,当所述第二计算区域进行神经网络计算时,控制所述第一计算区域向所述主内存存入输出数据并读取下一个输入数据。
7.一种电子设备,其特征在于,包括:异构多核处理器和存储装置;
所述存储装置上存储有计算机程序,所述计算机程序在被所述异构多核处理器运行时执行如权利要求1至5任一项所述的方法。
8.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1至5任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210999968.4A CN115526302B (zh) | 2022-08-19 | 2022-08-19 | 基于异构多核处理器的多层神经网络计算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210999968.4A CN115526302B (zh) | 2022-08-19 | 2022-08-19 | 基于异构多核处理器的多层神经网络计算方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115526302A CN115526302A (zh) | 2022-12-27 |
CN115526302B true CN115526302B (zh) | 2023-07-25 |
Family
ID=84696425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210999968.4A Active CN115526302B (zh) | 2022-08-19 | 2022-08-19 | 基于异构多核处理器的多层神经网络计算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115526302B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111860828A (zh) * | 2020-06-15 | 2020-10-30 | 北京仿真中心 | 一种神经网络的训练方法、存储介质和设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111310893B (zh) * | 2016-08-05 | 2023-11-21 | 中科寒武纪科技股份有限公司 | 一种用于执行神经网络运算的装置及方法 |
CN110928481A (zh) * | 2018-09-19 | 2020-03-27 | 中国银联股份有限公司 | 分布式深度神经网络及其参数的存储方法 |
CN111143272A (zh) * | 2019-12-28 | 2020-05-12 | 浪潮(北京)电子信息产业有限公司 | 异构计算平台的数据处理方法、装置及可读存储介质 |
CN115668125A (zh) * | 2020-08-31 | 2023-01-31 | 麦姆瑞克斯公司 | 存储器处理单元架构映射技术 |
-
2022
- 2022-08-19 CN CN202210999968.4A patent/CN115526302B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111860828A (zh) * | 2020-06-15 | 2020-10-30 | 北京仿真中心 | 一种神经网络的训练方法、存储介质和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115526302A (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108108811B (zh) | 神经网络中的卷积计算方法和电子设备 | |
US11423285B2 (en) | Buffer addressing for a convolutional neural network | |
US20230153593A1 (en) | Neural Network Architecture Using Control Logic Determining Convolution Operation Sequence | |
CN110275733B (zh) | 基于有限体积法求解声子玻尔兹曼方程的gpu并行加速方法 | |
JP7078758B2 (ja) | 機械学習モデルを改良して局所性を改善させること | |
CN113424201A (zh) | 神经网络处理器 | |
CN110415157B (zh) | 一种矩阵乘法的计算方法及装置 | |
CN111027691B (zh) | 用于神经网络运算、训练的装置、设备及板卡 | |
US11556757B1 (en) | System and method of executing deep tensor columns in neural networks | |
CN109472361A (zh) | 神经网络优化方法 | |
CN115860080B (zh) | 计算核、加速器、计算方法、装置、设备、介质及系统 | |
CN106415526A (zh) | Fft处理器及运算方法 | |
CN115526302B (zh) | 基于异构多核处理器的多层神经网络计算方法及装置 | |
CN111832693B (zh) | 神经网络层运算、模型训练方法、装置及设备 | |
CN111640296A (zh) | 交通流预测方法、系统、存储介质及终端 | |
CN109063835B (zh) | 神经网络的压缩装置及方法 | |
US20190155330A1 (en) | Information processing system | |
EP3258388A1 (en) | Parallelization techniques for variable selection and predictive models generation and its applications | |
CN116738617A (zh) | 动力系统建模方法、装置、电子设备及存储介质 | |
CN111783984A (zh) | 一种神经网络运算方法、装置、设备及存储介质 | |
Byrd et al. | On the use of piecewise linear models in nonlinear programming | |
CN115935888A (zh) | 一种神经网络加速系统 | |
CN113052292B (zh) | 卷积神经网络技术方法、装置及计算机可读存储介质 | |
CN114371620A (zh) | 高阶非线性异构多智能体一致性控制器设计方法及设备 | |
CN113888390A (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 |