CN111178490B - 数据输出方法、获取方法、装置和电子设备 - Google Patents
数据输出方法、获取方法、装置和电子设备 Download PDFInfo
- Publication number
- CN111178490B CN111178490B CN201911420585.1A CN201911420585A CN111178490B CN 111178490 B CN111178490 B CN 111178490B CN 201911420585 A CN201911420585 A CN 201911420585A CN 111178490 B CN111178490 B CN 111178490B
- Authority
- CN
- China
- Prior art keywords
- block
- data sub
- data
- sub
- length
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- 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
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
- H03M7/3064—Segmenting
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
Abstract
本申请提供一种数据输出方法、获取方法、装置和电子设备,涉及神经网络技术领域,具体技术方案为:读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流,其中,所述第一数据子分块为神经网络搬运数据中的数据子分块;对所述连续数据流进行压缩,以得到第二数据子分块;依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益;若对所述连续数据流进行的压缩存在收益,则输出所述第二数据子分块。本申请可以提高神经网络的性能的技术效果。
Description
技术领域
本申请涉及计算机技术中的神经网络技术领域,尤其涉及一种数据输出方法、获取方法、装置和电子设备。
背景技术
目前神经网络被广泛应用,例如:深度卷积神经网络(Convolutional DeepNueral Networks,CDNN)被广泛应用于互联网应用,如语音识别,图像识别,自然语言处理等应用。然而,神经网络计算往往在神经网络处理器(Neural Processing Unit,NPU)内完成,而在执行神经网络计算后,需要将计算结果搬回片外存储器;由于片外存储器的带宽有限,在许多实际业务场景中,片内外数据搬运时间会超过实际计算时间,从而导致神经网络的性能比较差。
发明内容
本申请提供一种数据输出方法、获取方法、装置和电子设备,以解决神经网络的性能比较差的问题。
第一方面,本申请提供一种数据输出方法,包括:
读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流,其中,所述第一数据子分块为神经网络搬运数据中的数据子分块;
对所述连续数据流进行压缩,以得到第二数据子分块;
依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益;
若对所述连续数据流进行的压缩存在收益,则输出所述第二数据子分块。
由于对神经网络搬运数据的数据子分块进行压缩,且在压缩存在收益输出压缩得到的数据,从而可以提高数据搬运的效率,进而提高神经网络的性能。
可选的,所述依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益,包括:
依据所述第一数据子分块的长度、目的地址和存储器总线位宽,计算所述第一数据子分块传输的所需拍(beat)数,以及依据所述第二数据子分块的长度、所述目的地址和所述存储器总线位宽,计算所述第二数据子分块传输的所需拍数,若所述第二数据子分块传输的所需拍数小于所述第一数据子分块传输的所需拍数,则确定对所述连续数据流进行的压缩存在收益,反之,则确定对所述连续数据流进行的压缩不存在收益,其中,所述目的地址为所述第一数据子分块的目的地址。
该实施方式中,通过上述传输的所需拍数可以准确地确定是否存在压缩收益。
可选的,所述方法还包括:
存储长度字段,其中,所述长度字段用于表示所述第一数据子分块的长度和所述第二数据子分块的长度中的较小值,且所述长度字段用于:在读取数据时读取所述长度字段对应的数据子分块。
该实施方式中,由于存储长度字段这样有在读取数据时可以准确地读取到数据子分块。
可选的,所述方法还包括:
若输出所述第二数据子分块,则存储所述第二数据子分块的标志位,所述存储的标志位用于指示所述第二数据子分块被压缩时是否存在压缩收益。
由于将标志位存储,这样在读取第二数据子分块时可以准确地判断是否需要进行解压缩,以避免错误解压缩,进一步提高数据处理性能。
可选的,所述神经网络搬运数据包括多个第一类型数据子分块,,其中,每个第一类型数据子分块的大小相同;
所述对所述连续数据流进行压缩,以得到第二数据子分块,包括:
判断所述第一数据子分块是否为第一类型数据子分块,若所述第一数据子分块为第一类型数据子分块,对所述连续数据流进行压缩,以得到第二数据子分块。
该实施方式中,可以实现只对第一类型数据子分块进行压缩,这样可以提高被压缩的数据子分块存在压缩收益的概率,以提高数据压缩的性能。
可选的,所述神经网络搬运数据还包括第二类型数据子分块和/或第三类型数据子分块,其中,所述第二类型数据子分块和/或第三类型数据子分块为所述神经网络搬运数据分割成所述多个第一类型数据子分块后所剩下的数据构成的数据子分块。
该实施方式中,可以实现不对第二类型数据子分块和第三类型数据子分块进行压缩,这样可以提高被压缩的数据子分块存在压缩收益的概率,以提高数据压缩的性能。
可选的,所述方法还包括:
若对所述连续数据流进行的压缩不存在收益,则输出所述第一数据子分块。
该实施方式中,由于若对所述连续数据流进行的压缩不存在收益,则输出所述第一数据子分块,这样可以避免不存在收益时,输出第二数据子分块反而导致的数据搬运的效率降低的问题。
第二方面,本申请提供一种数据获取方法,包括:
读取第二数据子分块的长度;
读取第二数据子分块;
判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块;
若所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,则对所述第二数据子分块进行解压缩,并将所述解压缩后的数据存储。
可选的,所述判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,包括:
依据所述第二数据子分块的长度,判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块;或者
读取所述第二数据子分块的标志位,依据所述标志位判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,所述标志位用于指示所述第二数据子分块被压缩时是否存在压缩收益。
可选的,所述依据所述第二数据子分块的长度,判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,包括:
依据所述第二数据子分块对应的原始长度、存储地址和存储器总线位宽,计算所述第二数据子分块的原始数据传输的所需拍数,以及依据所述第二数据子分块的长度、所述存储地址和所述存储器总线位宽,计算所述第二数据子分块传输的所需拍数,若所述第二数据子分块传输的所需拍数小于所述第二数据子分块的原始数据传输的所需拍数,则确定所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,反之,则确定所述第二数据子分块不为经过压缩且存在压缩收益的数据子分块,其中,所述存储地址为所述第二数据子分块的存储地址。
可选的,所述第二数据子分块为神经网络搬运数据中的数据子分块,所述神经网络搬运数据包括多个第一类型数据子分块,其中,每个第一类型数据子分块的大小相同;
所述判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,包括:
判断所述第二数据子分块是否为第一类型数据子分块,若所述第二数据子分块为第一类型数据子分块,则判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块。
可选的,所述神经网络搬运数据还包括至第二类型数据子分块和/或第三类型数据子分块,其中,所述第二类型数据子分块和/或第三类型数据子分块为所述神经网络搬运数据分割成所述多个第一类型数据子分块后所剩下的数据构成的数据子分块。
可选的,所述方法还包括:
若所述第二数据子分块不为经过压缩且存在压缩收益的数据子分块,则将所述第二数据子分块存储。
第三方面,本申请提供一种数据输出装置,包括:
读取模块,用于读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流,其中,所述第一数据子分块为神经网络搬运数据中的数据子分块;
压缩模块,用于对所述连续数据流进行压缩,以得到第二数据子分块;
判断模块,用于依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益;
第一输出模块,用于若对所述连续数据流进行的压缩存在收益,则输出所述第二数据子分块。
第四方面,本申请提供一种数据获取装置,包括:
第一读取模块,用于读取第二数据子分块的长度;
第二读取模块,用于读取第二数据子分块;
判断模块,用于依据所述第二数据子分块的长度或者所述标志位,判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块;
解压模块,用于若所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,则对所述第二数据子分块进行解压缩,并将所述解压缩后的数据存储。
第五方面,本申请提供一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请提供的数据输出方法,或者以使所述至少一个处理器能够执行本申请提供的数据获取方法。
第六方面,本申请提供一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行本申请提供的数据输出方法,或者所述计算机指令用于使所述计算机执行本申请提供的数据获取方法。
上述申请中的一个实施例具有如下优点或有益效果:
读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流,其中,所述第一数据子分块为神经网络搬运数据中的数据子分块;对所述连续数据流进行压缩,以得到第二数据子分块;依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益;若对所述连续数据流进行的压缩存在收益,则输出所述第二数据子分块。所以克服了神经网络的性能比较差的技术问题,进而达到提高神经网络的性能的技术效果。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请提供的一种数据输出方法的流程图;
图2是本申请提供的另一种数据输出方法的流程图;
图3是本申请提供的一种数据子分块的分割示意图;
图4是本申请提供的数据子分块的数据流示意图;
图5是本申请提供的数据子分块的压缩示意图;
图6是本申请提供的另一种数据子分块的分割示意图;
图7是本申请提供的一种数据获取方法的流程图;
图8是本申请提供的另一种数据输出方法的流程图;
图9是本申请提供的另一种数据获取方法的流程图;
图10是本申请提供的一种数据输出装置的结构图;
图11是本申请提供的另一种数据输出装置的结构图;
图12是本申请提供的另一种数据输出装置的结构图;
图13是本申请提供的另一种数据输出装置的结构图;
图14是本申请提供的一种数据获取装置的结构图;
图15是本申请提供的另一种数据获取装置的结构图;
图16是根据本申请的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
请参见图1,图1是本申请提供的一种数据输出方法的流程图,如图1所示,包括以下步骤:
步骤S101、读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流,其中,所述第一数据子分块为神经网络搬运数据中的数据子分块。
其中,上述神经网络搬运数据可以是执行神经网络计算完成后得到的数据,例如:权重矩阵或者特征图(feature map)等数据。而上述数据子分块可以是将上述搬运数据进行分割得到的多个数据子分块中的数据子分块。
上述第一数据子分块的地址信息可以是非连续的地址信息,即第一数据子分块包括地址非连续的数据。上述读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流可以是,所述读取到的第一数据子分块进行移位和拼接处理,以得到所述第一数据子分块的连续完整数据流。例如:依据第一数据子分块的地址信息跳着读取第一数据子分块的数据,并将读取的数据拼接成连续完整数据流,这里的连续完整数据流是指各数据之间是连续的,且包括第一数据子分块的所有数据。
由于将所述第一数据子分块拼接成连续数据流,这样可以支持不连续的数据进行压缩,提高压缩处理的数据子分块的大小,进而提高压缩处理效率。
步骤S102、对所述连续数据流进行压缩,以得到第二数据子分块。
步骤S102中对所述连续数据流进行压缩所采用的压缩算法包括但不限于零值压缩、行程编码、哈夫曼编码、哥伦布编码等压缩算法,具体的本申请对压缩算法不作限定。
上述第二数据子分块可以理解为对上述连续数据流进行压缩得到的压缩数据。
步骤S103、依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益。
依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益可以是,判断第二数据子分块的长度是否小于第一数据子分块的长度,若是,则确定对所述连续数据流进行的压缩存在收益,反之,确定不存在压缩收益。或者可以是:
依据所述第一数据子分块的长度、目的地址和存储器总线位宽,计算所述第一数据子分块传输的所需拍数,以及依据所述第二数据子分块的长度、所述目的地址和所述存储器总线位宽,计算所述第二数据子分块传输的所需拍数,若所述第二数据子分块传输的所需拍数小于所述第一数据子分块传输的所需拍数,则确定对所述连续数据流进行的压缩存在收益,反之,则确定对所述连续数据流进行的压缩不存在收益,其中,所述目的地址为所述第一数据子分块的目的地址。
需要说明的是,由于第二数据子分块是对第一数据子分块进行压缩得到,从而这二者的目的地址可以相关。
上述依据所述第一数据子分块的长度、目的地址和存储器总线位宽,计算所述第一数据子分块传输的所需拍数可以是,首先依据目的地址和存储器总线位宽确定第一数据子分块的第一行所传输的数据大小,例如:如果第一行的起始地址对齐存储器总线位宽,从而第一行的所传输的数据大小等于存储器总线位宽,即第一拍所传输的数据大小等于存储器总线位宽;如果第一行的起始地址未对齐存储器总线位宽,从而第一行的所传输的数据大小等于第一行的起始地址至存储器总线位宽边界之间的数据大小,即第一拍所传输的数据大小等于第一行的起始地址至存储器总线位宽边界之间的数据大小;当还有其他行时,在第一行所传输的数据大小确定之后,就可以将第一数据子分块的剩下数据大小除以存储器总线位宽,将得到的商向上取整,即可以得到剩下的拍数。第二数据子分块传输的所需拍数同理,此处不作赘述。
例如:对于1024B的地址对齐数据(起始地址对齐存储器总线位宽),如果总线位宽为64B时,则需要16拍完成总线上的数据传输,如果压缩后的数据长度变为960B,则只需要15拍即可完成压缩后数据的传输,此时定义为压缩对该基础块有收益;如果压缩后的数据长度变为961B,压缩后数据仍然需要16拍才能完成数据的传输,与直接传输原始数据相比没有区别,定义为压缩对该基础块没有收益。
步骤S104、若对所述连续数据流进行的压缩存在收益,则输出所述第二数据子分块。
其中,上述输出所述第二数据子分块可以是对第二数据子分块执行写操作,例如:将第二数据子分块写入存储器,具体可以是写入片外存储器。
需要说明的是,本申请提供的数据输出方法可以应用于用于神经网络计算的芯片(或者称作处理器),例如:神经网络处理器(Neural processing Unit,NPU)或者硬件加速器。
本申请中,通过上述步骤可以实现对神经网络搬运数据的数据子分块进行压缩,且在压缩存在收益输出压缩得到的数据,从而可以提高数据搬运的效率,进而提高神经网络的性能。
请参见图2,图2是本申请提供的另一种数据输出方法的流程图,如图2所示,包括以下步骤:
步骤S201、读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流,其中,所述第一数据子分块为神经网络搬运数据中的数据子分块。
其中,上述读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流可以是,对第一数据子分块的地址重排,以得到第一数据子分块拼接成连续数据流。例如:如图3所示,神经网络搬运数据包括数据子分块a至u,其中,这些数据子分块的地址是非连续的。通过步骤201将这些数据子分块的地址进行重排,以得到图3右边所示的各数据子分块的连续数据流。进一步,以存储器视角可以表示为如图4所示的数据流。
步骤S202、对所述连续数据流进行压缩,以得到第二数据子分块。
本申请中不同的连续数据流的压缩效果可以不同,例如:如图5所示,可以将图3中各数据子分块的数据流压缩成图5左边所示的数据流,其中图5中灰色部分表示压缩后的无效存储地址(也可以称作无效数据部分)。进一步的,如图5右边所示,还可以为每个数据子分块配置一个1B的长度存储地址,用于存储压缩后的数据的长度,具体可以是为每个第一类型数据子分块(基础块)配置一个一个1B的长度存储地址。
可选的,所述神经网络搬运数据包括多个第一类型数据子分块,其中,每个第一类型数据子分块的大小相同;
所述对所述连续数据流进行压缩,以得到第二数据子分块,包括:
判断所述第一数据子分块是否为第一类型数据子分块,若所述第一数据子分块为第一类型数据子分块,对所述连续数据流进行压缩,以得到第二数据子分块。
判断所述第一数据子分块是否为第一类型数据子分块可以是根据数据子分块的配置信息确定,该配置信息可以包括每个数据子分块的类型信息,当然,也可以根据地址重排的信息来判断,本申请中,对此不作限定。
可选的,所述神经网络搬运数据还包括第二类型数据子分块和/或第三类型数据子分块,其中,所述第二类型数据子分块和/或第三类型数据子分块为所述神经网络搬运数据分割成所述多个第一类型数据子分块后所剩下的数据构成的数据子分块。
其中,上述第一类型数据子分块可以称作基础块,第二类型子分块可以称作对齐块,第三类型数据子分块可以称作无重映射块。另外,上述第二类型数据子分块可以是在上述神经网络搬运数据的列数无法整除第一类型数据块的列数的情况下,将所剩下数据列按照第一类型数据子分块的行数分割成的数据子分块,而第三类型数据子分块可以是在上述神经网络搬运数据的列数无法整除第一类型数据块的行数的情况下所剩下数据行构成的数据子分块。例如:如图6所示,可以将如图6所示的13*1151大小的矩阵数据分割成基础块、对齐块和无重映射块这些数据子分块。其中,对,((0,0),(11,1023))包含a、b、c、d、f、g、h、i、k、l、m、n共12个基础块;((0,1024),(11,1151))包含e、j、o共3个对齐块,((12,0),(12,1151))p为无重映射块。
该实施方式中,由于将神经网络搬运数据进行分割,包括多个第一类型数据子分块,这样可以避免由于片上缓存较小,导致神经网络搬运数据无法完成缓存在片上缓存的问题,而第一类型数据子分块由于是分割后的数据子分块,从而可以缓存在片上缓存,以进行上述压缩处理,从而提高神经网络数据处理性能。另外,由于不对第二类型数据子分块和第三类型数据子分块,这样可以避免由于第二类型数据子分块和第三类型数据子分块过小收到的压缩实际收益有限而造成的不必要的压缩。另一方面,还可以保证第二类型数据子分块和第三类型数据子分块实现细粒度随机访问。
步骤S203、依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益。
步骤S204、若对所述连续数据流进行的压缩存在收益,则输出所述第二数据子分块。
可选的,存储长度字段,其中,所述长度字段用于表示所述第一数据子分块的长度和所述第二数据子分块的长度中的较小值,且所述长度字段用于:在读取数据时读取所述长度字段对应的数据子分块。
例如:输出第二数据子分块,则上述长度字段表示第二数据子分块的长度,又例如:输出第一数据子分块,则上述长度字段表示第一数据子分块的长度。
通过上述长度字段可以使得读取数据子分块时可以准确地读取到数据子分块。另外,上述存储可以是片上存储,或者可以是存储在片外存储器。进一步的,上述长度字段的存储位置可以在执行步骤S205之前配置好的存储位置。具体可以是每个数据子分块对应有各自的长度存储位置,优选的,可以是每个第一类型数据子分块对应有各自的长度存储位置。
可选的,若输出所述第二数据子分块,则存储所述第二数据子分块的标志位,所述存储的标志位用于指示所述第二数据子分块被压缩时是否存在压缩收益。
由于将标志位存储,这样在读取第二数据子分块时可以准确地判断是否需要进行解压缩,以避免错误解压缩,进一步提高数据处理性能。
步骤S205、若对所述连续数据流进行的压缩不存在收益,则输出所述第一数据子分块。
可选的,若输出所述第一数据子分块,则存储所述第一数据子分块的标志位,所述存储的标志位用于指示所述第一数据子分块被压缩时是否存在压缩收益。
其中,在对所述连续数据流进行的压缩不存在收益的情况下,可以是直接将第一数据子分块写入存储器,例如:写入外部存储器。
该实施方式中,由于若对所述连续数据流进行的压缩不存在收益,则输出所述第一数据子分块,这样可以避免不存在收益时,输出第二数据子分块反而导致的数据搬运的效率降低的问题。
本实施例中,在图1所示的实施例的基础上增加了多种可选的实施方式,且均可以提高神经网络的性能。
请参见图7,图7是本申请提供的一种数据获取方法的流程图,如图7所示,包括以下步骤:
步骤S701、读取第二数据子分块的长度。
步骤S702、读取第二数据子分块。
其中,步骤S702可以是从存储器中读取第二数据子分块,进一步的,可以是从片外存储器读取第二数据子分块。
步骤S703、判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块。
其中,上述第二数据子分块可以是图1和图2所示的实施例中的第二数据子分块。
如果第二数据子分块为压缩的数据,则上述第二数据子分块对应的原始长度可以是,第二数据子分块压缩前的第一数据子分块的长度,如果第二数据子分块不为压缩的数据,则上述第二数据子分块对应的原始长度可以是第二数据子分块的长度,或者为空。进一步的,上述第二数据子分块对应的原始长度可以等效为图1和图2所示的实施例中第一数据子分块的长度。
其中,上述压缩收益可以参见图1和图2所示的实施例的相应说明,此处不作赘述。
可选的,所述判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,包括:
依据所述第二数据子分块的长度,判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块;或者
读取所述第二数据子分块的标志位,依据所述标志位判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,所述标志位用于指示所述第二数据子分块被压缩时是否存在压缩收益。
进一步的,所述依据所述第二数据子分块的长度,判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,包括:
依据所述第二数据子分块对应的原始长度、存储地址和存储器总线位宽,计算所述第二数据子分块的原始数据传输的所需拍数,以及依据所述第二数据子分块的长度、所述存储地址和所述存储器总线位宽,计算所述第二数据子分块传输的所需拍数,若所述第二数据子分块传输的所需拍数小于所述第二数据子分块的原始数据传输的所需拍数,则确定所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,反之,则确定所述第二数据子分块不为经过压缩且存在压缩收益的数据子分块,其中,所述存储地址为所述第二数据子分块的存储地址。
该实施方式,可以参见图1所示的实施例的相应说明,此处不作赘述。
步骤S704、若所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,则对所述第二数据子分块进行解压缩,并将所述解压缩后的数据存储。
其中,上述将所述解压缩后的数据存储可以是将解压缩后的数据存储在片上缓存,具体可以存储至片上缓存的预设位置或者预期位置。
需要说明的是,本申请提供的数据获取方法可以应用于用于神经网络计算的芯片(或者称作处理器),例如:NPU或者硬件加速器。
本申请中,通过上述步骤可以实现读取的数据可以是经过压缩,且存在压缩收益的数据,从而提高数据搬运的效率,进而提高神经网络的性能。
可选的,所述第二数据子分块为神经网络搬运数据中的数据子分块,所述神经网络搬运数据包括多个第一类型数据子分块,其中,每个第一类型数据子分块的大小相同;
所述判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,包括:
判断所述第二数据子分块是否为第一类型数据子分块,若所述第二数据子分块为第一类型数据子分块,则判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块。
可选的,所述神经网络搬运数据还包括至第二类型数据子分块和/或第三类型数据子分块,其中,所述第二类型数据子分块和/或第三类型数据子分块为所述神经网络搬运数据分割成所述多个第一类型数据子分块后所剩下的数据构成的数据子分块。
该实施方式中,可以参见图2所示的实施例的相应说明,此处不作赘述,且可以达到相同的有益效果。
可选的,所述方法还包括:
若所述第二数据子分块不为经过压缩且存在压缩收益的数据子分块,则将所述第二数据子分块存储。
其中,上述将所述第二数据子分块存储可以是第二数据子分块直接存储至片上缓存的预设位置或者预期位置。
该实施方式中,由于若所述第二数据子分块不为经过压缩且存在压缩收益的数据子分块,则将所述第二数据子分块存储,这样可以避免在该情况下对第二数据子分块进行解压导致的解压错误。
本申请中,通过上述步骤可以实现读取的数据可以是经过压缩,且存在压缩收益的数据,从而提高数据搬运的效率,进而提高神经网络的性能。
请参见图8,图8是本申请提供的另一种数据输出方法的流程图,如图8所示,包括以下步骤:
步骤S801、分配一段数据空间用于存储压缩后基础块的长度;
步骤S802、根据地址重排规则获取数据,并将分块数据组织成完整数据流;
步骤S803、判断当前处理的子分块所属的分块类型,如果该子分块为基础块,则执行步骤S804,否则跳转到步骤S808;
步骤S804、根据所选择的压缩算法,对原始数据进行压缩,并得到基础块经过压缩后数据长度;
步骤S805、根据原始数据长度和压缩后的数据长度,判断压缩是否有收益,如果压缩有收益,执行步骤S806;如果压缩无收益,执行步骤S808;
步骤S806、选择压缩后的数据进行输出,把数据存放到地址重排规则下规定的位置,并将计算所得的压缩后数据长度存储到步骤S801中分配的数据位置;
步骤S807、将原始数据长度存储到步骤S801中分配的数据位置;
步骤S808、将未经压缩的原始数据存放到地址重排规则下规定的位置;
步骤S809、完成当前子分块的处理;
步骤S8010、判断是否还有待处理子分块,若是,执行步骤S802,如果无后续待处理子分块,结束。
请参见图9,图9是本申请提供的另一种数据获取方法的流程图,如图9所示,包括以下步骤:
步骤S901、判断当前处理子分块所属的分块类型,如果该子分块为基础块,则执行步骤S902;如果该子分块不是基础块,执行步骤S907;其中,该步骤可以是根据地址重排规则,判断当前处理子分块所属的分块类型,或者根据数据子分块的配置信息来判断子分块所属的分块类型。
步骤S902、从数据压缩时分配的存储基础块长度的位置,获得待解压子分块的数据长度;
步骤S903、从片外存储器读取基础块数据;其中,读取数据长度由步骤S902获得;
步骤S904、将基础块的原始数据长度与步骤S902中获得的数据长度进行比较,判断该基础块是否有压缩收益。如果有收益,则该基础块是经过压缩的,执行步骤S905;如果无收益,则该基础块没有经过压缩,执行步骤S906;
步骤S905、将数据送入解压模块,执行解压操作并将解压后的数据存储到片上缓存的预期位置;然后执行步骤S908;
步骤S906、将数据直接存储到片上缓存的预期位置;然后执行步骤S908;
步骤S907、从片外存储器读取该子分块数据,并将数据储存到片上缓存的预期位置;然后执行步骤S908;
步骤S908、完成当前子分块的处理;
步骤S909、判断是否还有待处理子分块,若是,执行步骤S901,如果无后续待处理子分块,结束。
请参见图10,图10是本申请提供的一种数据输出装置结构图,如图10所示,数据输出装置1000包括:
读取模块1001,用于读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流,其中,所述第一数据子分块为神经网络搬运数据中的数据子分块;
压缩模块1002,用于对所述连续数据流进行压缩,以得到第二数据子分块;
判断模块1003,用于依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益;
第一输出模块1004,用于若对所述连续数据流进行的压缩存在收益,则输出所述第二数据子分块。
可选的,判断模块1003用于依据所述第一数据子分块的长度、目的地址和存储器总线位宽,计算所述第一数据子分块传输的所需拍数,以及依据所述第二数据子分块的长度、所述目的地址和所述存储器总线位宽,计算所述第二数据子分块传输的所需拍数,若所述第二数据子分块传输的所需拍数小于所述第一数据子分块传输的所需拍数,则确定对所述连续数据流进行的压缩存在收益,反之,则确定对所述连续数据流进行的压缩不存在收益,其中,所述目的地址为所述第一数据子分块的目的地址。
可选的,如图11所示,所述装置还包括:
第一存储模块1005,用于存储长度字段,其中,所述长度字段用于表示所述第一数据子分块的长度和所述第二数据子分块的长度中的较小值,且所述长度字段用于:在读取数据时读取所述长度字段对应的数据子分块。
可选的,如图12所示,所述装置还包括:
第二存储模块1006,用于若输出所述第二数据子分块,则存储所述第二数据子分块的标志位,所述存储的标志位用于指示所述第二数据子分块被压缩时是否存在压缩收益。
可选的,所述神经网络搬运数据包括多个第一类型数据子分块,其中,每个第一类型数据子分块的大小相同;
所述压缩模块1002用于判断所述第一数据子分块是否为第一类型数据子分块,若所述第一数据子分块为第一类型数据子分块,对所述连续数据流进行压缩,以得到第二数据子分块。
可选的,所述神经网络搬运数据还包括第二类型数据子分块和/或第三类型数据子分块,其中,所述第二类型数据子分块和/或第三类型数据子分块为所述神经网络搬运数据分割成所述多个第一类型数据子分块后所剩下的数据构成的数据子分块。
可选的,如图13所示,所述装置还包括:
第二输出模块1107,用于若对所述连续数据流进行的压缩不存在收益,则输出所述第一数据子分块。
本实施例提供的装置能够实现图1和图3所示的方法实施例中实现的各个过程,且可以达到相同有益效果,为避免重复,这里不再赘述。
请参见图14,图14是本申请提供的一种数据获取装置结构图,如图14所示,数据获取装置1400包括:
第一读取模块1401,用于读取第二数据子分块的长度;
第二读取模块1402,用于读取第二数据子分块;
判断模块1403,用于判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块;
解压模块1404,用于若所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,则对所述第二数据子分块进行解压缩,并将所述解压缩后的数据存储。
可选的,判断模块1403用于依据所述第二数据子分块的长度,判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块;或者
判断模块1403用于读取所述第二数据子分块的标志位,依据所述标志位判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,所述标志位用于指示所述第二数据子分块被压缩时是否存在压缩收益。
可选的,判断模块1403用于依据所述第二数据子分块对应的原始长度、存储地址和存储器总线位宽,计算所述第二数据子分块的原始数据传输的所需拍数,以及依据所述第二数据子分块的长度、所述存储地址和所述存储器总线位宽,计算所述第二数据子分块传输的所需拍数,若所述第二数据子分块传输的所需拍数小于所述第二数据子分块的原始数据传输的所需拍数,则确定所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,反之,则确定所述第二数据子分块不为经过压缩且存在压缩收益的数据子分块,其中,所述存储地址为所述第二数据子分块的存储地址。
可选的,所述第二数据子分块为神经网络搬运数据中的数据子分块,其中,每个第一类型数据子分块的大小相同;
所述判断模块1403用于判断所述第二数据子分块是否为第一类型数据子分块,若所述第二数据子分块为第一类型数据子分块,则依据所述第二数据子分块的长度或者所述标志位,判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块。
可选的,所述神经网络搬运数据还包括至第二类型数据子分块和/或第三类型数据子分块,其中,所述第二类型数据子分块和/或第三类型数据子分块为所述神经网络搬运数据分割成所述多个第一类型数据子分块后所剩下的数据构成的数据子分块。
可选的,如图15所示,装置还包括:
存储模块1405,若所述第二数据子分块不为经过压缩且存在压缩收益的数据子分块,则将所述第二数据子分块存储。
本实施例提供的装置能够实现图7所示的方法实施例中实现的各个过程,且可以达到相同有益效果,为避免重复,这里不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图16所示,是根据本申请实施例的数据输出方法或者数据获取方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图16所示,该电子设备包括:一个或多个处理器1601、存储器1602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图16中以一个处理器1601为例。
存储器1602即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据输出方法或者数据获取方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据输出方法或者数据获取方法。
存储器1602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据输出方法或者数据获取方法对应的程序指令/模块(例如,附图10所示的读取模块1001、压缩模块1002、判断模块1003和第一输出模块1004,或者,图14所示的第一读取模块1401、第二读取模块1402、判断模块1403和解压模块1404)。处理器1601通过运行存储在存储器1602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据输出方法或者数据获取方法。
存储器1602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据输出方法或者数据获取方法的电子设备的使用所创建的数据等。此外,存储器1602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1602可选包括相对于处理器1601远程设置的存储器,这些远程存储器可以通过网络连接至数据输出方法或者数据获取方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
数据输出方法或者数据获取方法的电子设备还可以包括:输入装置1603和输出装置1604。处理器1601、存储器1602、输入装置1603和输出装置1604可以通过总线或者其他方式连接,图16中以通过总线连接为例。
输入装置1603可接收输入的数字或字符信息,以及产生与数据输出方法或者数据获取方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1604可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,本申请中,由于将对所述第一数据块的第一拍由部分写调整为完整写,从而提高存储器的写入性能。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (14)
1.一种数据输出方法,其特征在于,包括:
读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流,其中,所述第一数据子分块为神经网络搬运数据中的数据子分块;
对所述连续数据流进行压缩,以得到第二数据子分块;
依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益;
若对所述连续数据流进行的压缩存在收益,则输出所述第二数据子分块;
其中,所述依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益,包括:
依据所述第一数据子分块的长度、目的地址和存储器总线位宽,计算所述第一数据子分块传输的所需拍数,以及依据所述第二数据子分块的长度、所述目的地址和所述存储器总线位宽,计算所述第二数据子分块传输的所需拍数,若所述第二数据子分块传输的所需拍数小于所述第一数据子分块传输的所需拍数,则确定对所述连续数据流进行的压缩存在收益,反之,则确定对所述连续数据流进行的压缩不存在收益,其中,所述目的地址为所述第一数据子分块的目的地址。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
存储长度字段,其中,所述长度字段用于表示所述第一数据子分块的长度和所述第二数据子分块的长度中的较小值,且所述长度字段用于:在读取数据时读取所述长度字段对应的数据子分块。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
若输出所述第二数据子分块,则存储所述第二数据子分块的标志位,所述存储的标志位用于指示所述第二数据子分块被压缩时是否存在压缩收益。
4.如权利要求1所述的方法,其特征在于,所述神经网络搬运数据包括多个第一类型数据子分块,其中,每个第一类型数据子分块的大小相同;
所述对所述连续数据流进行压缩,以得到第二数据子分块,包括:
判断所述第一数据子分块是否为第一类型数据子分块,若所述第一数据子分块为第一类型数据子分块,对所述连续数据流进行压缩,以得到第二数据子分块。
5.如权利要求4所述的方法,其特征在于,所述神经网络搬运数据还包括第二类型数据子分块和/或第三类型数据子分块,其中,所述第二类型数据子分块和/或第三类型数据子分块为所述神经网络搬运数据分割成所述多个第一类型数据子分块后所剩下的数据构成的数据子分块。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
若对所述连续数据流进行的压缩不存在收益,则输出所述第一数据子分块。
7.一种数据获取方法,其特征在于,包括:
读取第二数据子分块的长度;
读取第二数据子分块;
判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块;
若所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,则对所述第二数据子分块进行解压缩,并将所述解压缩后的数据存储;
其中,所述判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,包括:
依据所述第二数据子分块对应的原始长度、存储地址和存储器总线位宽,计算所述第二数据子分块的原始数据传输的所需拍数,以及依据所述第二数据子分块的长度、所述存储地址和所述存储器总线位宽,计算所述第二数据子分块传输的所需拍数,若所述第二数据子分块传输的所需拍数小于所述第二数据子分块的原始数据传输的所需拍数,则确定所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,反之,则确定所述第二数据子分块不为经过压缩且存在压缩收益的数据子分块,其中,所述存储地址为所述第二数据子分块的存储地址。
8.如权利要求7所述的方法,其特征在于,所述第二数据子分块为神经网络搬运数据中的数据子分块,所述神经网络搬运数据包括多个第一类型数据子分块,其中,每个第一类型数据子分块的大小相同;
所述判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块,包括:
判断所述第二数据子分块是否为第一类型数据子分块,若所述第二数据子分块为第一类型数据子分块,则判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块。
9.如权利要求8所述的方法,其特征在于,所述神经网络搬运数据还包括至第二类型数据子分块和/或第三类型数据子分块,其中,所述第二类型数据子分块和/或第三类型数据子分块为所述神经网络搬运数据分割成所述多个第一类型数据子分块后所剩下的数据构成的数据子分块。
10.如权利要求7所述的方法,其特征在于,所述方法还包括:
若所述第二数据子分块不为经过压缩且存在压缩收益的数据子分块,则将所述第二数据子分块存储。
11.一种数据输出装置,其特征在于,包括:
读取模块,用于读取第一数据子分块,并将所述第一数据子分块拼接成连续数据流,其中,所述第一数据子分块为神经网络搬运数据中的数据子分块;
压缩模块,用于对所述连续数据流进行压缩,以得到第二数据子分块;
判断模块,用于依据所述第一数据子分块的长度和所述第二数据子分块的长度,判断对所述连续数据流进行的压缩是否存在收益;
第一输出模块,用于若对所述连续数据流进行的压缩存在收益,则输出所述第二数据子分块;
其中,所述判断模块用于依据所述第一数据子分块的长度、目的地址和存储器总线位宽,计算所述第一数据子分块传输的所需拍数,以及依据所述第二数据子分块的长度、所述目的地址和所述存储器总线位宽,计算所述第二数据子分块传输的所需拍数,若所述第二数据子分块传输的所需拍数小于所述第一数据子分块传输的所需拍数,则确定对所述连续数据流进行的压缩存在收益,反之,则确定对所述连续数据流进行的压缩不存在收益,其中,所述目的地址为所述第一数据子分块的目的地址。
12.一种数据获取装置,其特征在于,包括:
第一读取模块,用于读取第二数据子分块的长度;
第二读取模块,用于读取第二数据子分块;
判断模块,用于判断所述第二数据子分块是否为经过压缩且存在压缩收益的数据子分块;
解压模块,用于若所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,则对所述第二数据子分块进行解压缩,并将所述解压缩后的数据存储;
其中,所述判断模块依据所述第二数据子分块对应的原始长度、存储地址和存储器总线位宽,计算所述第二数据子分块的原始数据传输的所需拍数,以及依据所述第二数据子分块的长度、所述存储地址和所述存储器总线位宽,计算所述第二数据子分块传输的所需拍数,若所述第二数据子分块传输的所需拍数小于所述第二数据子分块的原始数据传输的所需拍数,则确定所述第二数据子分块为经过压缩且存在压缩收益的数据子分块,反之,则确定所述第二数据子分块不为经过压缩且存在压缩收益的数据子分块,其中,所述存储地址为所述第二数据子分块的存储地址。
13. 一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法,或者以使所述至少一个处理器能够执行权利要求7-10中任一项所述的方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-6中任一项所述的方法,或者所述计算机指令用于使所述计算机执行权利要求7-10中任一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911420585.1A CN111178490B (zh) | 2019-12-31 | 2019-12-31 | 数据输出方法、获取方法、装置和电子设备 |
EP20180844.1A EP3846021B1 (en) | 2019-12-31 | 2020-06-18 | Data output method, data acquisition method, device, and electronic apparatus |
US16/908,633 US11562241B2 (en) | 2019-12-31 | 2020-06-22 | Data output method, data acquisition method, device, and electronic apparatus |
KR1020200075737A KR102542239B1 (ko) | 2019-12-31 | 2020-06-22 | 데이터 출력 방법, 획득 방법, 장치 및 전자 기기 |
JP2020107989A JP7083004B2 (ja) | 2019-12-31 | 2020-06-23 | データ出力方法、データ取得方法、装置および電子機器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911420585.1A CN111178490B (zh) | 2019-12-31 | 2019-12-31 | 数据输出方法、获取方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111178490A CN111178490A (zh) | 2020-05-19 |
CN111178490B true CN111178490B (zh) | 2021-08-24 |
Family
ID=70652472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911420585.1A Active CN111178490B (zh) | 2019-12-31 | 2019-12-31 | 数据输出方法、获取方法、装置和电子设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11562241B2 (zh) |
EP (1) | EP3846021B1 (zh) |
JP (1) | JP7083004B2 (zh) |
KR (1) | KR102542239B1 (zh) |
CN (1) | CN111178490B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11757469B2 (en) * | 2021-04-01 | 2023-09-12 | Qualcomm Incorporated | Compression technique for deep neural network weights |
CN113298712A (zh) * | 2021-05-21 | 2021-08-24 | 安谋科技(中国)有限公司 | 图像处理方法、电子设备及其可读介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR930003416B1 (ko) * | 1988-03-29 | 1993-04-29 | 주식회사 금성사 | 폰트의 함축방법 |
CN102891732A (zh) * | 2012-09-25 | 2013-01-23 | 北京星网锐捷网络技术有限公司 | 数据发送方法和装置以及数据接收方法和装置 |
CN105653484A (zh) * | 2015-12-31 | 2016-06-08 | 厦门市美亚柏科信息股份有限公司 | 一种数据分块压缩多通道传输方法 |
CN108604211A (zh) * | 2016-02-10 | 2018-09-28 | 高通股份有限公司 | 用于片上系统中的多区块数据事务的系统和方法 |
CN109582653A (zh) * | 2018-11-14 | 2019-04-05 | 网易(杭州)网络有限公司 | 文件的压缩、解压缩方法及设备 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5363098A (en) * | 1993-10-25 | 1994-11-08 | Digital Equipment Corporation | Byte aligned data compression |
US6624761B2 (en) * | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US6831575B2 (en) * | 2002-11-04 | 2004-12-14 | The Regents Of The University Of California | Word aligned bitmap compression method, data structure, and apparatus |
KR100959489B1 (ko) * | 2003-04-04 | 2010-05-26 | 주식회사 케이티 | 데이터 사전 관리를 통한 데이터 압축 및 복원 방법 |
US20100223237A1 (en) * | 2007-11-05 | 2010-09-02 | University Of Florida Research Foundation, Inc. | Lossless data compression and real-time decompression |
JP2010287114A (ja) | 2009-06-12 | 2010-12-24 | Toshiba Corp | データ格納方法及びデータ格納装置 |
CN101853229B (zh) * | 2010-05-17 | 2012-08-08 | 华为终端有限公司 | 数据搬运方法、装置及数据读操作与写操作的方法 |
CN103023509A (zh) * | 2012-11-14 | 2013-04-03 | 无锡芯响电子科技有限公司 | 一种硬件lz77压缩实现系统及其实现方法 |
CN103138766A (zh) | 2013-03-11 | 2013-06-05 | 广州从兴电子开发有限公司 | 数据压缩与解压缩的方法及装置 |
CN103281156B (zh) | 2013-05-02 | 2017-06-06 | 华为技术有限公司 | 一种数据压缩、解压缩方法及装置 |
CN106506007A (zh) | 2015-09-08 | 2017-03-15 | 联发科技(新加坡)私人有限公司 | 一种无损数据压缩和解压缩装置及其方法 |
CN105207678B (zh) * | 2015-09-29 | 2018-10-26 | 东南大学 | 一种改进型lz4压缩算法的硬件实现系统 |
CN105488534B (zh) | 2015-12-04 | 2018-12-07 | 中国科学院深圳先进技术研究院 | 交通场景深度解析方法、装置及系统 |
US10191682B2 (en) | 2016-09-08 | 2019-01-29 | Qualcomm Incorporated | Providing efficient lossless compression for small data blocks in processor-based systems |
JP2018063505A (ja) | 2016-10-12 | 2018-04-19 | 富士通株式会社 | メモリ管理制御装置、メモリ管理制御方法、及びメモリ管理制御プログラム |
US10735023B2 (en) * | 2017-02-24 | 2020-08-04 | Texas Instruments Incorporated | Matrix compression accelerator system and method |
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
CN108615076B (zh) * | 2018-04-08 | 2020-09-11 | 瑞芯微电子股份有限公司 | 一种基于深度学习芯片的数据存储优化方法和装置 |
CN110049333B (zh) * | 2019-04-23 | 2021-04-27 | 东南大学 | 一种jpeg_ls图像压缩输出编码码流拼接系统及方法 |
CN111126589B (zh) * | 2019-12-31 | 2022-05-20 | 昆仑芯(北京)科技有限公司 | 神经网络数据处理装置、方法和电子设备 |
-
2019
- 2019-12-31 CN CN201911420585.1A patent/CN111178490B/zh active Active
-
2020
- 2020-06-18 EP EP20180844.1A patent/EP3846021B1/en active Active
- 2020-06-22 KR KR1020200075737A patent/KR102542239B1/ko active IP Right Grant
- 2020-06-22 US US16/908,633 patent/US11562241B2/en active Active
- 2020-06-23 JP JP2020107989A patent/JP7083004B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR930003416B1 (ko) * | 1988-03-29 | 1993-04-29 | 주식회사 금성사 | 폰트의 함축방법 |
CN102891732A (zh) * | 2012-09-25 | 2013-01-23 | 北京星网锐捷网络技术有限公司 | 数据发送方法和装置以及数据接收方法和装置 |
CN105653484A (zh) * | 2015-12-31 | 2016-06-08 | 厦门市美亚柏科信息股份有限公司 | 一种数据分块压缩多通道传输方法 |
CN108604211A (zh) * | 2016-02-10 | 2018-09-28 | 高通股份有限公司 | 用于片上系统中的多区块数据事务的系统和方法 |
CN109582653A (zh) * | 2018-11-14 | 2019-04-05 | 网易(杭州)网络有限公司 | 文件的压缩、解压缩方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111178490A (zh) | 2020-05-19 |
EP3846021B1 (en) | 2023-01-18 |
JP7083004B2 (ja) | 2022-06-09 |
JP2021111320A (ja) | 2021-08-02 |
EP3846021A1 (en) | 2021-07-07 |
US20210201134A1 (en) | 2021-07-01 |
KR20210086936A (ko) | 2021-07-09 |
KR102542239B1 (ko) | 2023-06-12 |
US11562241B2 (en) | 2023-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150100556A1 (en) | Data Compression/Decompression Device | |
US10044370B1 (en) | Lossless binary compression in a memory constrained environment | |
US9590655B2 (en) | Scalable high-bandwidth architecture for lossless compression | |
CN111178490B (zh) | 数据输出方法、获取方法、装置和电子设备 | |
CN111523001B (zh) | 用于存储数据的方法、装置、设备以及存储介质 | |
US11817886B2 (en) | Parallel decompression of compressed data streams | |
CN111563593B (zh) | 神经网络模型的训练方法和装置 | |
US10897270B2 (en) | Dynamic dictionary-based data symbol encoding | |
US20140289208A1 (en) | Data compression apparatus, data compression method, data decompression apparatus, and data decompression method | |
US10565182B2 (en) | Hardware LZMA compressor | |
US10103747B1 (en) | Lossless binary compression in a memory constrained environment | |
CN110648293A (zh) | 图像修复方法、装置及电子设备 | |
US11615057B2 (en) | Data compression and decompression facilitated by machine learning | |
US9916335B2 (en) | Row, table, and index decompression | |
CN112332854A (zh) | 霍夫曼编码的硬件实现方法、装置及存储介质 | |
CN115604365B (zh) | 数据编解码方法、装置、电子设备及可读存储介质 | |
CN112291559B (zh) | 视频编码方法、装置、设备和介质 | |
CN114282141A (zh) | 压缩格式数据的处理方法、装置、电子设备及可读存储介质 | |
CN114092708A (zh) | 特征图像的处理方法、装置和存储介质 | |
CN111176583B (zh) | 一种数据写入方法、装置和电子设备 | |
CN103729315B (zh) | 一种地址压缩、解压缩的方法、压缩器和解压缩器 | |
CN111339241A (zh) | 一种问题查重方法、装置以及电子设备 | |
CN111966576A (zh) | 异常代码的定位方法、装置、电子设备及存储介质 | |
CN115690525A (zh) | 图像处理方法、电子设备和计算机程序产品 | |
WO2023150611A1 (en) | Systems and methods for improved entropy coding efficiency |
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 |