CN110955380B - 访存数据生成方法、存储介质、计算机设备和装置 - Google Patents
访存数据生成方法、存储介质、计算机设备和装置 Download PDFInfo
- Publication number
- CN110955380B CN110955380B CN201811107138.6A CN201811107138A CN110955380B CN 110955380 B CN110955380 B CN 110955380B CN 201811107138 A CN201811107138 A CN 201811107138A CN 110955380 B CN110955380 B CN 110955380B
- Authority
- CN
- China
- Prior art keywords
- data
- neural network
- access data
- network layer
- memory access
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- 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
- G06N3/045—Combinations of networks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Human Computer Interaction (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种访存数据生成方法、存储介质、计算机设备和装置。包括:对待处理数据进行拆分,得到多个待处理数据块;获取多个待处理数据块的运算规则;根据待处理数据的拆分方法以及多个待处理数据块的运算规则,获取访存数据跟踪文件;根据目标神经网络层参数与参考神经网络层参数之间的映射关系,以及访存数据模式,将访存数据跟踪文件中的访存数据进行扩展,生成处理器核在处理目标神经网络层过程中的访存数据。采用本方法能够自动生成处理器核访存数据,替代处理器核的仿真过程,缩短生成访存数据的时间。
Description
技术领域
本申请涉及集成电路领域,特别是涉及一种访存数据生成方法、存储介质、计算机设备和装置。
背景技术
随着人工智能领域的兴起,多层神经网络在模式识别、自动控制、生物、医学等领域的应用越来越广泛,也成功地解决了许多现代计算机难以解决的实际问题,表现出来良好的智能特性。
在对神经网络处理器进行Verilog仿真的过程中,由于神经网络的数据较为庞大,处理器内部的存储能力有限,神经网络的运算数据以及处理器在计算过程中生成的中间数据通常不会全部存储在处理器的片上存储中,有一部分数据需要临时在大容量的片外存储中,这就需要处理器核在计算过程中频繁的访问片外存储,进行数据读写。通常在对神经网络层进行Verilog仿真时,由于神经网络的数据规模非常庞大,因此,处理器核访问片外存储的数据量庞大,这就导致生成处理器核访存数据的仿真时间过长。
发明内容
基于此,有必要针对上述技术问题,提供一种能够自动生成处理器核访存数据,替代处理器核仿真过程,缩短生成访存数据时间的访存数据生成方法、存储介质、计算机设备和装置。
一种访存数据生成方法,所述方法应用于神经网络处理器,所述方法包括:
对待处理数据进行拆分,得到多个待处理数据块;
获取所述多个待处理数据块的运算规则;
根据所述待处理数据的拆分方法以及所述多个待处理数据块的运算规则,获取访存数据跟踪文件;
根据目标神经网络层参数与参考神经网络层参数之间的映射关系,以及访存数据模式,将所述访存数据跟踪文件中的访存数据进行扩展,生成处理器核在处理所述目标神经网络层过程中的访存数据;
其中,所述待处理数据包括所述目标神经网络层的输入数据和权值数据。
在其中一个实施例中,所述对待处理数据进行拆分,得到多个待处理数据块,包括:
根据所述处理器核的片上存储容量,对所述目标神经网络层的输入数据进行拆分,得到多个输入数据块;
根据所述处理器核的片上存储容量,对所述目标神经网络层的权值数据进行拆分,得到多个权值块;
将所述多个输入数据块和所述多个权值数据块进行计算,得到所述多个待处理数据块。
在其中一个实施例中,获取所述多个待处理数据块的运算规则的步骤之前,还包括:
将所述多个待处理数据块存储至所述处理器核的片外存储;
从所述处理器核的片外存储读取所述多个待处理数据块进行运算;
将所述多个待处理数据块进行多次运算,得到所述多个待处理数据块的运算规则。
在其中一个实施例中,获取访存数据跟踪文件的步骤之前,还包括:
选取与所述目标神经网络层同一种类的所述参考神经网络层;
对所述参考神经网络层进行仿真;
仿真过程中,实时获取所述处理器核在处理所述参考神经网络层过程中的访存数据;
将所述访存数据进行存储,得到所述访存数据跟踪文件。
在其中一个实施例中,所述根据目标神经网络层参数与参考神经网络层参数之间的映射关系,以及访存数据模式,将所述访存数据跟踪文件中的访存数据进行扩展,生成处理器核在处理所述目标神经网络层过程中的访存数据,包括:
根据所述目标神经网络层参数与所述参考神经网络层参数之间的参数关系和数据规模,将所述访存数据跟踪文件中的访存数据按照所述访存数据模式,进行多次扩展,生成所述处理器核在处理所述目标神经网络层过程中的访存数据。
在其中一个实施例中,获取访存数据跟踪文件的步骤之前,还包括:
对多层神经网络中的每一参考神经网络层进行仿真;
仿真过程中,实时获取所述处理器核在处理所述多层神经网络中的每一参考神经网络层过程中的访存数据;
将所述访存数据进行存储,得到所述处理器核的多个访存数据跟踪子文件;
将所述多个访存数据跟踪子文件进行拼接,得到所述访存数据跟踪文件;
其中,每一参考神经网络层对应一个访存数据跟踪子文件。
在其中一个实施例中,所述访存数据跟踪文件包括:读写请求跟踪文件和读写数据跟踪文件。
在其中一个实施例中,所述访存数据模式包括:带权值计算的访存数据模式和不带权值计算的访存数据模式。
一种访存数据生成方法,其特征在于,所述方法应用于多核神经网络处理器,所述多核神经网络处理器中每一处理器核执行上述方法中任一方法的步骤。
一种访存数据生成系统,其特征在于,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器能够运行拆分算法,其特征在于,所述处理器执行所述计算机程序时实现上述方法中任一方法的步骤。
一种访存数据生成系统,其特征在于,包括存储器、第一处理器以及第二处理器,所述第一处理器能够运行拆分算法,所述第二处理器包括多核处理器,其特征在于,所述第一处理器和所述第二处理器执行所述计算机程序时实现上述方法中任一方法的步骤。
一种访存数据生成装置,所述装置包括:
待处理数据拆分模块,用于对待处理数据进行拆分,得到多个待处理数据块;
运算规则获取模块,用于获取所述多个待处理数据块的运算规则;
访存数据跟踪文件获取模块,用于根据所述待处理数据的拆分方法以及所述多个待处理数据块的运算规则,获取访存数据跟踪文件;
访存数据生成模块,用于根据目标神经网络层参数与参考神经网络层参数之间的映射关系,以及访存数据模式,将所述访存数据跟踪文件中的访存数据进行扩展,生成处理器核在处理所述目标神经网络层过程中的访存数据;
其中,所述待处理数据包括所述目标神经网络层的输入数据和权值数据。
上述访存数据生成方法、存储介质、计算机设备和装置,通过对待处理数据进行拆分和运算,并根据目标神经网络层参数与参考神经网络层参数之间的映射关系,以及访存数据模式,对访存数据跟踪文件中的访存数据进行扩展,生成该处理器核在处理目标神经网络层过程中的访存数据,从而替代处理器核的仿真过程,缩短了生成访存数据的时间,提高了生成访存数据的效率。
附图说明
图1为一个实施例中访存数据生成系统100的结构示意图;
图2为一个实施例中访存数据生成系统200的结构示意图;
图3为一个实施例中访存数据生成方法的应用环境图;
图4为一个实施例中访存数据生成方法的流程示意图;
图5为一个实施例中输入数据的三维结构示意图;
图6为一个实施例中对待处理数据进行拆分的流程示意图;
图7a为一个实施例中输入数据的拆分方式示意图;
图7b为一个实施例中输入数据的拆分方式示意图;
图7c为一个实施例中输入数据的拆分方式示意图;
图8a为一个实施例中权值的拆分方式示意图;
图8b为一个实施例中权值的拆分方式示意图;
图9为一个实施例中得到多个待处理数据块的运算规则的流程示意图;
图10为一个实施例中访存数据跟踪文件生成方法的流程示意图;
图11为一个实施例中对访存数据跟踪文件中的访存数据进行扩展的流程示意图;
图12为一个实施例中对访存跟踪文件进行扩展的示意图;
图13为另一个实施例中多层神经网络访存数据跟踪文件生成的流程示意图;
图14为一个实施例中访存数据生成装置的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在一个实施例中,如图1所示,提供了一种访存数据生成系统100,包括:存储器110和处理器120,存储器110上存储有处理器120可执行的指令;存储器110可以进行片内存储,也可以进行片外存储;处理器120包括多个处理器核,每一处理器核可以通过内总线进行通信,执行不同的任务。处理器120的处理器核可以运行拆分算法。
在一个实施例中,如图2所示,提供了一种访存数据生成系统200,包括:第一处理器210、第二处理器220和存储器230,存储器230上存储有第一处理器210和/或第二处理器220可执行的指令。存储器230可以进行片内存储,也可以进行片外存储。第一处理器210的处理器核需具备运行拆分算法的能力;第二处理器220可以不具备运行拆分算法的能力。第一处理器210与第二处理器220各自的处理器核通过内总线进行通信,执行不同的任务。第一处理器210和第二处理器220通过总线通信,协同工作。
可选的,第一处理器210可以为多核处理器,也可以为单核处理器;第二处理器220为多核处理器。
本申请提供的访存数据生成方法,可以应用于如图3所示的应用环境中。其中,通过对不同种类的、多个数据规模较小的神经网络层进行仿真,即对Layer 1、Layer 2、……Layer n进行仿真,将仿真过程中处理器核读写片外存储的数据保存至文件,由此得到多个真实的访存数据跟踪文件,即Trace 1、Trace 2、……Trace n。由于处理器核在运算过程中,处理同一种类的神经网络层过程中的访存数据具有一定的规律,因此,同一种类的、数据规模较大的目标神经网络层的访存数据可以不再通过仿真得到,而是可以根据同一种类的、数据规模较小的参考神经网络层的访存数据跟踪文件(即Trace文件),通过相应的访存数据模式(即目标神经网络层的访存Pattern),自动生成目标神经网络层的Trace文件,即Trace 1’、Trace 2’、……Trace n’,其中,神经网络层的Trace文件指的是存储有处理器核访存数据的文件。进一步,将自动生成的该Trace文件注入神经网络处理器的仿真环境中,神经网络处理器在数据处理过程中,处理器核根据该Trace文件的时间戳进行访存行为,也就是说,处理器核根据该Trace文件的时间戳从片外存储进行数据读写。上述处理器核访存数据的生成方法能够大大缩短每一次仿真的时间,从而节约了神经网络处理器的仿真时间开销。
在一个实施例中,如图4所示,提供了一种访存数据生成方法,该方法在如图1或图2所示的访存数据生成系统上运行,下述步骤中的待处理数据可以存储于上述访存数据生成系统的存储器上,所述方法包括以下步骤:
步骤202,对待处理数据进行拆分,得到多个待处理数据块。
其中,待处理数据指的是存储在处理器核的片外存储中待读取的数据;待处理数据包括神经网络层的输入数据和神经网络层的权值。待处理数据块指的是,拆分后的神经网络层的输入数据以及拆分后的神经网络层的权值通过计算得到的中间结果。
可选的,可以由访存数据生成系统100中处理器120的处理器核对待处理数据进行拆分;也可以由访存数据生成系统200中第一处理器210的处理器核对待处理数据进行拆分。
步骤204,获取所述多个待处理数据块的运算规则。
其中,多个待处理数据块的运算指的是,待处理数据块可以在处理器核中多次使用,即参与多次运算,而不需要每使用一次该待处理数据块都进行一次访存行为。多个待处理数据块的运算规则指的是,待处理数据块在处理器核中多次使用的规则,例如:先将待处理数据块读入加法器中进行加法运算,再将该待处理数据块读入乘法器中进行乘法运算。具体地,将拆分后的待处理数据的多个中间结果临时输出至神经网络处理器的片外存储,当所有待处理数据都计算完成后,再依次从片外存储读取所有的中间结果,计算得到最终结果。
具体地,处理器核可以从多种运算规则中,获取处理目标神经网络层的待处理数据时所需的运算规则。可选的,可以由访存数据生成系统100中的任一处理器核获取多个待处理数据块的运算规则;也可以由访存数据生成系统200中的任一处理器核获取多个待处理数据块的运算规则。
步骤206,根据所述待处理数据的拆分方法以及所述多个待处理数据块的运算规则,获取访存数据跟踪文件。
其中,访存数据跟踪文件(Trace文件)指的是,处理器核在执行神经网络算法的仿真过程中产生的访问片外存储的数据,这些访存数据保存至一定格式的文件中,即处理器核生成的存储有真实访存数据的文件。参考神经网络层指的是,数据规模较小的神经网络层;参考神经网络层可以是任一神经网络层。数据规模指的是,神经网络层的输入数据规模以及权值数据量的大小。
具体地,每一拆分方法以及每一运算规则对应着一个Trace文件,例如:拆分方法为A,运算规则为B,所对应的Trace文件为AB;拆分方法为C,运算规则为D,所对应的Trace文件为CD。可选的,可以由访存数据生成系统100中的任一处理器核获取访存数据跟踪文件;也可以由访存数据生成系统200中的任一处理器核获取访存数据跟踪文件。
步骤208,根据目标神经网络层参数与参考神经网络层参数之间的映射关系,以及访存数据模式,将所述访存数据跟踪文件中的访存数据进行扩展,生成所述处理器核在处理所述目标神经网络层过程中的访存数据。
其中,目标神经网络层指的是,数据规模较大的神经网络层;目标神经网络层可以是任一神经网络层。目标神经网络层参数与参考神经网络层参数之间的映射关系指的是,目标神经网络层与参考神经网络层之间的用于描述神经网络算法的参数关系和数据规模,即目标神经网络层与参考神经网络层的参数和数据规模的变化情况。
可选的,可以由访存数据生成系统100中的任一处理器核对访存数据跟踪文件执行扩展任务;也可以由访存数据生成系统200中的任一处理器核对访存数据跟踪文件执行扩展任务。
进一步,访存数据模式(访存Pattern)包括一组特殊的访存Pattern(TrafficPattern),访存数据模式(访存Pattern)用于表示从不同种类的神经网络层的访存数据中得到的访存规律;大规模的目标神经网络层可以按照同一种类的、小规模的参考神经网络层访存规律进行扩展,自动的生成处理器核在处理大规模的目标神经网络层过程中的访存数据。
具体地,如图5所示,将目标神经网络层的输入数据看作一个三维的数据块,其中,wi和hi分别表示输入数据的宽和高,ci表示通道的个数。
上述访存数据生成方法中,通过对处理器核的大量待处理数据进行拆分和运算,并根据拆分方法和运算规则选取处理器核在处理同一种类的、数据规模较小的参考神经网络层过程中的Trace文件,并根据数据规模较大的目标神经网络层的参数,与所选取的参考神经网络层的参数之间存在的规律性关系,选取相应的访存Pattern,进一步,将参考神经网络层的Trace文件中的多个数据段按照选取的访存Pattern进行多次循环,通过计算自动生成处理器核在处理目标神经网络层过程中的访存数据。所述方法能够省去处理器核的仿真过程,缩短了生成访存数据的时间,极大的提高了处理器的Verilog仿真效率。
在其中一个实施例中,如图6所示,步骤202中访存数据生成系统100中处理器120的处理器核,或者访存数据生成系统200中第一处理器210的处理器核对待处理数据进行拆分时,具体包括以下步骤:
步骤2022,根据所述处理器核的片上存储容量,对所述神经网络层的输入数据进行拆分,得到多个输入数据块。
其中,神经网络层的输入数据包括以下拆分方式:
1)当处理器核的片上存储空间小于输入数据但大于wi*ci所占空间时,则以如图7a所示的方法来拆分,即在hi方向上进行切分,切分后的输入数据块大小为ci*wi*hi’;
2)当处理器核的片上存储空间小于wi*ci所占空间但大于ci时,则以如图7b所示的方法来拆分,即在hi方向切分的基础上再在wi方向上进一步切分,切分后的输入数据块大小为ci*wi’*hi’;
3)当处理器核的片上存储空间小于ci时,则以如图7c所示的方法来拆分,即在hi和wi方向切分的基础上再在ci方向上进一步切分,切分后的输入数据块大小为ci’*wi’*hi’。
进一步,对所述神经网络层的输入数据进行拆分时,不限于以上三种拆分方法,可以优先切分输入数据的任一维度;可以以均分的形式在输入数据的任一维度进行拆分,也可以以非均分的形式在输入数据的任一维度进行拆分,或者输入数据的每一维度采用不同的均分或非均分方式进行拆分,只要可以按照一定的规则对输入数据进行拆分,即可实现本步骤的目的,具体如何拆分,本申请不做具体限定。
步骤2024,根据所述处理器核的片上存储容量,对所述神经网络层的权值数据进行拆分,得到多个权值块。
其中,神经网络层的权值拆分方式与输入数据的拆分方式相同,其拆分方式也不唯一。
步骤2026,将所述多个输入数据块和所述多个权值数据块进行计算,得到所述多个待处理数据块。
其中,神经网络层输入数据和神经网络层权值数据的拆分方式不同,其对应的计算方法也不同,也就是说,神经网络层的输入数据在不同方向上进行拆分时,处理器核的访存模式不同。
具体地,1)如图8a所示,其中,k表示神经网络层的权值,当神经网络层的权值在ci方向固定,在kwi或khi方向上进行切分时,每一个切分后的输入数据块都需要跟所有切分后的权值块进行一次计算,即每读入一个输入数据块都需要分别读入所有切分后的权值块,并且在每一个输入数据块计算完后,均需将得到的待处理数据块暂时存储至片外存储。这样,神经网络层的输入数据和权值就形成一种多对多的关系。
2)如图8b所示,当神经网络层的权值在kwi和khi方向上固定,而在ci方向上进行切分时,输入数据也必须在ci方向上进行与权值完全一样的切分,切分后输入和权值各切分成三份,但每一个输入数据块只需与其对应的权值块进行计算,这样就形成了一一对应的关系。在这种情况下,处理器核的访存频率能够大大减少,但缺点是需要一次性读入kwi*khi个数据,在权值较大的情况下无法满足。
3)当神经网络层的权值在kwi、khi和ci三个方向上都进行切分时,就需要同时用到上述两种对应关系,首先,输入数据在ci方向上切分后的每一个输入数据块分别与其一一对应的权值块进行计算;其次,这些输入数据块又会在kwi和khi方向上进行进一步的切分,在计算内部形成多对多的关系。
上述访存数据生成方法中,处理器核对待处理数据进行拆分,分多次读入片上存储中,计算完成后将待处理数据块临时输出至片外存储,待所有切分后的待处理数据块都计算完成后,再依次从片外存储读入所有待处理数据块,从而计算出最终结果。上述方法能够节省处理器核的片上存储面积,同时减少功耗开销。
在其中一个实施例中,如图9所示,步骤204中获取多个待处理数据块的运算规则之前,还包括得到多个待处理数据块的运算规则的过程,步骤204是从得到的多个待处理数据块的运算规则中获取该目标神经网络层所需的运算规则。访存数据生成系统100中的任一处理器核,或者访存数据生成系统200中的任一处理器核得到多个待处理数据块的运算规则时,包括以下步骤:
步骤302,将所述多个待处理数据块存储至所述处理器核的片外存储。
其中,处理器核的片上存储容量较小,待处理数据无法一次性加载至片上存储,为此需要将待处理数据进行拆分,分多次进行加载,并将拆分后的多个待处理数据块临时输出至片外存储。
可选的,可以将多个待处理数据块存储至访存数据生成系统100中的存储器110中;也可以将多个待处理数据块存储至访存数据生成系统200中的存储器230中。
步骤304,从所述处理器核的片外存储读取所述多个待处理数据块进行计算。
其中,待所有切分后的待处理数据块都计算完成后,再依次从片外存储读入所有待处理数据块,从而计算出最终结果。
可选的,可以由访存数据生成系统100中的任一处理器核从存储器110中读取多个待处理数据块进行计算;也可以由访存数据生成系统200中的任一处理器核从存储器230中读取多个待处理数据块进行计算。
步骤306,将所述多个待处理数据块进行多次运算,得到所述多个待处理数据块的运算规则。
其中,访存读取的多个待处理数据块可以在处理器核的计算过程中多次使用,即参与多次计算,而不需要每使用一次都进行一次访存行为。
可选的,访存数据生成系统100中的任一处理器核可以将多个待处理数据块进行多次计算,得到多个待处理数据块的运算规则;访存数据生成系统200中的任一处理器核也可以将多个待处理数据块进行多次计算,得到多个待处理数据块的运算规则。
进一步,访存数据生成系统100中的任一处理器核以及访存数据生成系统200中的任一处理器核进行数据处理时,需反复执行步骤302至步骤306。
在其中一个实施例中,如图10所示,步骤206中获取处理器核的访存数据跟踪文件之前,还包括生成处理器核访存数据跟踪文件的过程,步骤206是从所生成的访存数据跟踪文件中获取该目标神经网络层所需的访存数据跟踪文件。访存数据生成系统100中的任一处理器核,或者访存数据生成系统200中的任一处理器核生成访存数据跟踪文件时,具体包括以下步骤:
步骤402,选取与所述目标神经网络层同一种类的所述参考神经网络层。
其中,选取的参考神经网络层和需要自动生成访存数据的目标神经网络层应为同一种类,也就是说,目标神经网络层应选取同一种类的参考神经网络层所对应的访存数据跟踪文件(Trace文件)进行扩展。
步骤404,对所述参考神经网络层进行仿真。
其中,将参考神经网络层通过编译器进行编译,生成相应的编译指令,将生成的编译指令和该参考神经网络层的待处理数据进行仿真。
可选的,通过访存数据生成系统100中处理器120,或者访存数据生成系统200中任一处理器中的仿真加速器执行仿真任务。
步骤406,仿真过程中,实时获取所述处理器核在处理所述参考神经网络层过程中的访存数据。
其中,处理器开始仿真后,从处理器核的接口实时获取访存数据,也就是说,当该接口一旦出现读/写请求或读/写数据的握手信号时,则将当前总线上的访存数据进行存储。
步骤408,将所述访存数据进行存储,得到所述访存数据跟踪文件。
其中,将获取到的访存数据保存在Trace文件中,得到处理器核的Trace文件。具体地,访存跟踪文件(Trace文件)包括读写请求跟踪文件(读写请求Trace)和读写数据跟踪文件(读写数据Trace)。读写请求Trace的格式如表1所示,读写请求Trace用于记录在哪些时钟周期内从哪些IP地址读取了多少数据,或者向哪些IP地址写入了多少数据,其目的在于统计出不同类别的访存Pattern。
表1
TIME | TIMESTAMP | ADDRESS | ID | LENGTH | SIZE |
其中,“TYPE”表示该数据请求的类别,包括读请求和写请求;“TIMESTAMP”表示该数据请求发出的时间,以时钟周期为单位;“ADDRESS”表示该数据请求的源地址/目的地址;“ID”表示该数据请求的序列号;“LENGTH”表示突发式访存的数据长度,即每次访存的数据个数;“SIZE”表示突发式访存的数据大小,即每个访存数据有多少个字节。
进一步,读写数据Trace的格式如表2所示,读写数据Trace用于记录发出读写请求后,处理器核实际读入和写出的运算数据,其目的在于评估不同时钟周期总线的带宽。
表2
TIME | TIMESTAMP | DATA |
其中,“TYPE”表示该数据请求的类别,包括读请求和写请求;“TIMESTAMP”表示该数据请求发出的时间,以时钟周期为单位;“DATA”表示每一时钟周期内各时刻的实际访存数据。
上述访存数据生成方法中,通过对数据规模较小的参考神经网络层进行仿真,得到处理器核在处理参考神经网络层过程中的访存数据生成的真实的Trace文件,将真实的Trace文件进行多次扩展,从而自动生成处理器核在处理数据规模较大的目标神经网络层过程中的访存数据。
在其中一个实施例中,如图11所示,步骤208中访存数据生成系统100中的任一处理器核,或者访存数据生成系统200中的任一处理器核对访存数据跟踪文件进行扩展时,具体包括以下步骤:
步骤2082,获取所述访存数据模式。
其中,可以从不同种类的神经网络层的访存数据中找到一些访存规律,将这些访存规律进行总结,得到处理器核的访存数据模式(访存Pattern)。访存数据模式(访存Pattern)包括带权值计算的访存数据模式和不带权值计算的访存数据模式。具体地,处理器核根据同一种类的参考神经网络层中访存数据的访存规律,将目标神经网络层的待处理数据定位到相应的访存Pattern中。
其中,根据神经网络层的计算和访存特性,处理器核的计算特性就是带权值的计算和不带权值的计算,而在这两种计算模式里处理器核的访存特性可以进一步划分为三大类:读权值、读数据和写计算结果。这里读取的数据可以是输入数据也可以是中间计算结果,并且读数据的数据量可以是一个完整的输入数据,也可以是切分后的输入数据。因此,如表3所示,首先从读和写的内容将所有的访存数据进行分类:
表3
从片外存储上读取权值 |
从片外存储上读取输入数据 |
从片外存储上读取中间计算结果 |
从片外存储上读取偏移量 |
向片外存储写入中间计算结果 |
进一步,从带权值的计算和不带权值的计算归纳出如下几种访存Pattern类别,其中,带权值计算的访存Pattern类别如表4所示:
表4
其中,不带权值计算的访存Pattern类别如表5所示:
表5
其中,带权值计算的访存Pattern和不带权值计算的访存Pattern不限于表4和表5中所列举的类别。
步骤2084,根据所述目标神经网络层参数与所述参考神经网络层参数之间的参数关系和数据规模,将所述访存数据跟踪文件中的访存数据按照所述访存数据模式,进行多次扩展,生成所述处理器核在处理所述目标神经网络层过程中的访存数据。
其中,根据当前大规模的目标神经网络层与同一种类的、小规模的参考神经网络层之间的参数关系和数据规模,将Trace文件按照上述访存数据模式(Pattern)基于多个维度进行多次扩展,也就是说,将Trace文件基于多种访存数据模式(Pattern)进行扩展,从而自动的生成处理器核在处理目标神经网络层过程中的访存数据。
具体地,将当前神经网络层的数据规模与参考神经网络层的数据规模进行对比,计算得到当前神经网络层读入和写出各类待处理数据的数据规模,根据各类待处理数据的数据规模,计算得到待处理数据的读写次数,也就是访存跟踪文件的扩展次数。
进一步,根据所述神经网络层的数据规模与所述参考神经网络层每次访存所能完成的数据规模进行计算,得到所述访存跟踪文件的扩展次数。具体包括:
其中,N表示访存跟踪文件的扩展次数,即访存Pattern的循环次数;A表示当前神经网络层的数据规模;B表示参考神经网络层每次访存所能完成的数据规模。
例如,如图12所示,获取Convolution层访存数据的Trace文件,选取的访存Pattern为Pattern A,Convolution层通过仿真生成真实的Trace文件需要经过m次PatternA的循环,通过步骤2084中的计算过程,得到所述真实的Trace文件的扩展次数为n次,即Pattern A需要扩展到m+n次循环,以完成一次计算过程。
上述访存数据生成方法中,根据目标神经网络层与参考神经网络层的参数关系和数据规模,将处理器核的真实Trace文件按照访存数据模式(访存Pattern)基于多个维度进行多次扩展,通过计算自动生成处理器核在处理目标神经网络层过程中的访存数据。所述方法能够节省处理器的仿真时间。
在其中一个实施例中,如图13所示,多层神经网络中,每一神经网络层通过执行步骤402~步骤408来生成相应的访存数据跟踪子文件,将多个访存数据跟踪子文件进行拼接,得到多层神经网络中处理器核的访存数据跟踪文件。访存数据生成系统100中的任一处理器核,或者访存数据生成系统200中的任一处理器核在多层神经网络中生成访存数据跟踪文件时,具体包括以下步骤:
步骤502,对多层神经网络中的每一参考神经网络层进行仿真。
其中,多层神经网络包括多个不同种类的神经网络层,每一参考神经网络层对应一个访存数据跟踪子文件,也就是说,多层神经网络的每一层都会生成一个Trace子文件。
具体地,将多层神经网络中的每一参考神经网络层通过编译器进行编译,生成相应的编译指令,将生成的编译指令和该多层神经网络中的每一参考神经网络层的待处理数据进行仿真。可选的,通过访存数据生成系统100中处理器120,或者访存数据生成系统200中任一处理器中的仿真加速器执行仿真任务。
步骤504,仿真过程中,实时获取所述处理器核在处理所述多层神经网络中的每一参考神经网络层过程中的访存数据。
其中,步骤504的实现方法与步骤406类似,在此不再赘述。
步骤506,将所述访存数据进行存储,得到所述处理器核的多个访存数据跟踪子文件。
其中,步骤506的实现方法与步骤408类似,在此不再赘述。
步骤508,将所述多个访存数据跟踪子文件进行拼接,得到所述访存数据跟踪文件。
其中,将多层神经网络中每一个神经网络层生成的Trace文件进行拼接,得到该多层神经网络的Trace文件。在处理多层神经网络时,处理器核的访存数据跟踪文件指的是经过拼接的该多层神经网络的Trace文件。
在一个实施例中,提供了一种访存数据生成方法,访存数据生成系统100中处理器120的任一处理器核,或者访存数据生成系统200中第二处理器220的任一处理器核生成访存数据时,每一处理器核执行步骤202~步骤208。
上述访存数据生成方法,多核神经网络处理器中的每个处理器核都能够对大量待处理数据进行拆分和运算,并根据相应的拆分方法和运算规则选取处理器核在处理同一种类的、数据规模较小的参考神经网络层过程中的Trace文件,并根据数据规模较大的目标神经网络层的参数,与所选取的参考神经网络层的参数之间存在的规律性关系,选取相应的访存Pattern,进一步,将参考神经网络层的Trace文件中的多个数据段按照选取的访存Pattern进行多次循环,通过计算自动生成处理器核在处理目标神经网络层过程中的访存数据。所述方法能够省去处理器核的仿真过程,缩短了生成访存数据的时间,极大的提高了处理器的Verilog仿真效率。
基于同样的发明构思,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所提及方法的步骤。
应该理解的是,虽然图4-13的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4-13中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图14所示,基于同样的发明构思,本申请提供了一种访存数据生成装置,包括:待处理数据拆分模块601、运算规则获取模块602、访存数据跟踪文件获取模块603和访存数据生成模块604,其中:
待处理数据拆分模块601,用于对待处理数据进行拆分,得到多个待处理数据块;
运算规则获取模块602,用于获取所述多个待处理数据块的运算规则;
访存数据跟踪文件获取模块603,用于根据所述待处理数据的拆分方法以及所述多个待处理数据块的运算规则,获取访存数据跟踪文件;
访存数据生成模块604,用于根据目标神经网络层参数与参考神经网络层参数之间的映射关系,以及访存数据模式,将所述访存数据跟踪文件中的访存数据进行扩展,生成处理器核在处理所述目标神经网络层过程中的访存数据。
其中,所述待处理数据包括所述目标神经网络层的输入数据和权值数据。
关于神经网络处理器中处理器核访存数据的生成装置的具体限定可以参见上文中对于访存数据生成方法的限定,在此不再赘述。上述神经网络处理器中处理器核访存数据的生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本申请实施例中的神经网络处理器中处理器核访存数据的生成装置也可以采用软件程序模块的形式实现。所述神经网络处理器中处理器核访存数据的生成装置如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种访存数据生成方法,其特征在于,所述方法应用于神经网络处理器,所述方法包括:
对待处理数据进行拆分,得到多个待处理数据块;
获取所述多个待处理数据块的运算规则;
根据所述待处理数据的拆分方法以及所述多个待处理数据块的运算规则;
选取与目标神经网络层同一种类的参考神经网络层;
对所述参考神经网络层进行仿真;
仿真过程中,实时获取处理器核在处理所述参考神经网络层过程中的访存数据;
将所述访存数据进行存储,得到访存数据跟踪文件;
根据目标神经网络层参数与参考神经网络层参数之间的映射关系,以及访存数据模式,将所述访存数据跟踪文件中的访存数据进行扩展,生成处理器核在处理所述目标神经网络层过程中的访存数据;
其中,所述待处理数据包括所述目标神经网络层的输入数据和权值数据。
2.根据权利要求1所述的方法,其特征在于,所述对待处理数据进行拆分,得到多个待处理数据块,包括:
根据所述处理器核的片上存储容量,对所述目标神经网络层的输入数据进行拆分,得到多个输入数据块;
根据所述处理器核的片上存储容量,对所述目标神经网络层的权值数据进行拆分,得到多个权值块;
将所述多个输入数据块和所述多个权值数据块进行计算,得到所述多个待处理数据块。
3.根据权利要求1所述的方法,其特征在于,获取所述多个待处理数据块的运算规则的步骤之前,还包括:
将所述多个待处理数据块存储至所述处理器核的片外存储;
从所述处理器核的片外存储读取所述多个待处理数据块进行运算;
将所述多个待处理数据块进行多次运算,得到所述多个待处理数据块的运算规则。
4.根据权利要求1所述的方法,其特征在于,所述根据目标神经网络层参数与参考神经网络层参数之间的映射关系,以及访存数据模式,将所述访存数据跟踪文件中的访存数据进行扩展,生成处理器核在处理所述目标神经网络层过程中的访存数据,包括:
获取所述访存数据模式;
根据所述目标神经网络层参数与所述参考神经网络层参数之间的参数关系和数据规模,将所述访存数据跟踪文件中的访存数据按照所述访存数据模式,进行多次扩展,生成所述处理器核在处理所述目标神经网络层过程中的访存数据。
5.根据权利要求1所述的方法,其特征在于,获取访存数据跟踪文件的步骤之前,还包括:
对多层神经网络中的每一参考神经网络层进行仿真;
仿真过程中,实时获取所述处理器核在处理所述多层神经网络中的每一参考神经网络层过程中的访存数据;
将所述访存数据进行存储,得到所述处理器核的多个访存数据跟踪子文件;
将所述多个访存数据跟踪子文件进行拼接,得到所述访存数据跟踪文件;
其中,每一参考神经网络层对应一个访存数据跟踪子文件。
6.根据权利要求1所述的方法,其特征在于,所述访存数据跟踪文件包括:读写请求跟踪文件和读写数据跟踪文件。
7.根据权利要求1所述的方法,其特征在于,所述访存数据模式包括:带权值计算的访存数据模式和不带权值计算的访存数据模式。
8.一种访存数据生成方法,其特征在于,所述方法应用于多核神经网络处理器,所述多核神经网络处理器中每一处理器核执行权利要求1-7中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8中任一项所述方法的步骤。
10.一种访存数据生成系统,其特征在于,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器能够运行拆分算法,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-8中任一项所述方法的步骤。
11.一种访存数据生成系统,其特征在于,包括存储器、第一处理器以及第二处理器,所述第一处理器能够运行拆分算法,所述第二处理器包括多核处理器,其特征在于,所述第一处理器和所述第二处理器执行计算机程序时实现权利要求1-8中任一项所述方法的步骤。
12.一种访存数据生成装置,其特征在于,所述装置包括:
待处理数据拆分模块,用于对待处理数据进行拆分,得到多个待处理数据块;
运算规则获取模块,用于获取所述多个待处理数据块的运算规则;
访存数据跟踪文件获取模块,用于根据所述待处理数据的拆分方法以及所述多个待处理数据块的运算规则,选取与目标神经网络层同一种类的参考神经网络层,对所述参考神经网络层进行仿真,仿真过程中,实时获取处理器核在处理所述参考神经网络层过程中的访存数据,将所述访存数据进行存储,得到访存数据跟踪文件;
访存数据生成模块,用于根据目标神经网络层参数与参考神经网络层参数之间的映射关系,以及访存数据模式,将所述访存数据跟踪文件中的访存数据进行扩展,生成处理器核在处理所述目标神经网络层过程中的访存数据;
其中,所述待处理数据包括所述目标神经网络层的输入数据和权值数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811107138.6A CN110955380B (zh) | 2018-09-21 | 2018-09-21 | 访存数据生成方法、存储介质、计算机设备和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811107138.6A CN110955380B (zh) | 2018-09-21 | 2018-09-21 | 访存数据生成方法、存储介质、计算机设备和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110955380A CN110955380A (zh) | 2020-04-03 |
CN110955380B true CN110955380B (zh) | 2021-01-12 |
Family
ID=69962143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811107138.6A Active CN110955380B (zh) | 2018-09-21 | 2018-09-21 | 访存数据生成方法、存储介质、计算机设备和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110955380B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111596972B (zh) * | 2020-05-15 | 2023-09-26 | 北京小米松果电子有限公司 | 神经网络模型存储方法、加载方法、装置、设备及存储介质 |
CN118132150A (zh) * | 2024-05-07 | 2024-06-04 | 中科寒武纪科技股份有限公司 | 计算图的数据访存模式推导方法及相关产品 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060293045A1 (en) * | 2005-05-27 | 2006-12-28 | Ladue Christoph K | Evolutionary synthesis of a modem for band-limited non-linear channels |
CN106250981B (zh) * | 2015-06-10 | 2022-04-01 | 三星电子株式会社 | 减少存储器访问和网络内带宽消耗的脉冲神经网络 |
CN107103113B (zh) * | 2017-03-23 | 2019-01-11 | 中国科学院计算技术研究所 | 面向神经网络处理器的自动化设计方法、装置及优化方法 |
CN108520296B (zh) * | 2018-03-20 | 2020-05-15 | 福州瑞芯微电子股份有限公司 | 一种基于深度学习芯片动态cache分配的方法和装置 |
CN108537286B (zh) * | 2018-04-18 | 2020-11-24 | 北京航空航天大学 | 一种基于关键区域检测的复杂目标精准识别方法 |
-
2018
- 2018-09-21 CN CN201811107138.6A patent/CN110955380B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110955380A (zh) | 2020-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107437110B (zh) | 卷积神经网络的分块卷积优化方法及装置 | |
CN110046704B (zh) | 基于数据流的深度网络加速方法、装置、设备及存储介质 | |
JP7059318B2 (ja) | 地域的特徴を有する分類器学習のための学習データ生成方法およびそのシステム | |
US20220147795A1 (en) | Neural network tiling method, prediction method, and related apparatus | |
CN111241353B (zh) | 一种图数据的分区方法、装置以及设备 | |
CN112541310B (zh) | 逻辑综合控制方法及装置 | |
CN104899218A (zh) | 数据读写方法及数据读写装置 | |
CN110955380B (zh) | 访存数据生成方法、存储介质、计算机设备和装置 | |
CN115034402A (zh) | 模型推理性能的优化方法、装置及相关产品 | |
US8768680B2 (en) | Simulator of multi-core system employing reconfigurable processor cores and method of simulating multi-core system employing reconfigurable processor cores | |
CN108875914B (zh) | 对神经网络数据进行预处理和后处理的方法和装置 | |
CN105677755A (zh) | 一种处理图数据的方法及装置 | |
CN106295670A (zh) | 数据处理方法及数据处理装置 | |
KR102326586B1 (ko) | 큰 규모 분산 행렬 곱 처리 방법 및 그 장치 | |
CN113485836A (zh) | 一种基于张量切分的张量处理方法和张量处理系统 | |
CN109844774B (zh) | 一种并行反卷积计算方法、单引擎计算方法及相关产品 | |
CN116088758A (zh) | 优化方法、装置、计算机设备、存储介质和程序产品 | |
EP4012573A1 (en) | Graph reconstruction method and apparatus | |
KR101878213B1 (ko) | 가중치 그래프를 요약하는 방법, 장치 및 컴퓨터 프로그램 | |
CN111027688A (zh) | 一种基于fpga的神经网络计算器生成方法及装置 | |
US8281263B2 (en) | Propagating design tolerances to shape tolerances for lithography | |
CN115186305B (zh) | 一种构建数据元件模型并生产数据元件的方法 | |
CN113568987B (zh) | 知识图谱嵌入模型的训练方法、装置、计算机设备 | |
US20210192296A1 (en) | Data de-identification method and apparatus | |
JP7042870B2 (ja) | コンピューティングデバイスによって実行される方法、装置、機器及びコンピュータ読み取り可能な記憶媒体 |
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 |