掌桥专利:专业的专利平台
掌桥专利
首页

数据压缩方法、装置、电子设备及可读存储介质

文献发布时间:2024-04-18 20:02:40


数据压缩方法、装置、电子设备及可读存储介质

技术领域

本申请涉及存储技术领域,特别是涉及一种数据压缩方法、装置、电子设备及可读存储介质。

背景技术

随着云计算与人工智能技术的快速发展,基于计算机应用、通信和信息技术等电子化技术手段形成的电子数据越来越多,包括但并不限制于文本、图像、音视频数据。这些电子数据需要以数字化形式进行存储。

对于以稀疏矩阵表示的电子数据,如以稀疏矩阵表示图像数据,相关技术通常采用以行压缩存储方式存储该类数据。但是,这种存储方式在存储过程中需要大量访问内存中的重复元素,访存效率较低,而且频繁地内存访问会加大内存访问开销,造成内存带宽的浪费。

鉴于此,提高访存效率,是所属领域技术人员需要解决的技术问题。

发明内容

本申请提供了一种数据压缩方法、装置、电子设备及可读存储介质,能够有效提升以稀疏矩阵格式表示的电子数据的访存效率。

为解决上述技术问题,本申请提供以下技术方案:

本申请一方面提供了一种数据压缩方法,包括:

获取采用稀疏矩阵表示的待压缩电子数据;

基于所述待压缩电子数据包含的非零元素总数,将所述待压缩电子数据的每个非零元素的值插入至预先构建的哈希表中;

将所述哈希表的非重复元素的值存储至预先构建的存储数据结构中,并得到标识所述哈希表与所述存储数据结构的存储对应关系的哈希键值对表,以利用所述存储数据结构存放所述待压缩电子数据中的所有非重复非零元的值;

将所述待压缩电子数据对应的当前压缩存储格式的各非零元素、所述哈希表的各元素及所述存储数据结构中各元素之间建立对应关系,得到索引信息,以将所述待压缩电子数据从以当前压缩存储格式转换为目标值压缩存储格式;

其中,所述存储数据结构的长度根据所述哈希表的元素个数确定;所述目标值压缩存储格式为将重复元素压缩为单个元素加索引坐标的格式。

示例性的,所述基于所述待压缩电子数据包含的非零元素总数,将所述待压缩电子数据的每个非零元素的值插入至预先构建的哈希表中,包括:

预先构建哈希表,并获取所述待压缩电子数据的当前压缩存储格式对应的原始值数组;

初始化所述哈希表和所述原始值数组;

将所述原始值数组中的各非零元素的值插入至所述哈希表中,得到哈希键值表,以将所述待压缩电子数据的所有非零元素均插入至所述哈希表中;

根据所述哈希键值表的元素总数,确定所述待压缩电子数据的所有非重复非零元的个数。

示例性的,所述将所述哈希表的非重复元素的值存储至预先构建的存储数据结构中,并得到标识所述哈希表与所述存储数据结构的存储对应关系的哈希键值对表,包括:

预先构建存储数据结构;所述存储数据结构用于存储所述待压缩电子数据中所有非重复非零元的值,且所述存储数据结构采用数组格式表示;所述存储数据结构的数组长度与哈希键值表的元素个数相同;

初始化所述存储数据结构和所述存储数据结构的下标;

初始化预先构建的哈希表位置指针;

对所述哈希键值表的各非重复元素的值,将当前哈希表位置指针指向的目标键值放入至所述存储数据结构的目标位置,并将所述目标位置的标识值存储至所述目标键值处;

当所述哈希键值表中各非重复元素的键值处包括其存储至所述存储数据结构相对应位置的标识值,则将当前的哈希键值表作为哈希键值对表。

示例性的,所述将所述待压缩电子数据对应的当前压缩存储格式的各非零元素、所述哈希表的各元素及所述存储数据结构中各元素之间建立对应关系,得到索引信息,包括:

初始化所述当前压缩存储格式对应的原始值数组的非零元素的下标值;

预先构建索引信息,并采用索引数组表示所述索引信息;所述索引数组包含的元素个数为所述待压缩电子数据包含的非零元素总数;

对所述原始值数组的各非零元素,从所述哈希键值对表中确定当前非零元素对应在所述存储数据结构的存储位置,并将所述存储位置存储至所述索引数组的目标索引位置;

当所述索引数组存储所述原始值数组的各非零元素对应在所述存储数据结构的存储位置后,生成索引信息。

示例性的,所述将所述待压缩电子数据从以当前压缩存储格式转换为目标值压缩存储格式之后,还包括:

接收待执行目标任务;其中,所述待执行目标任务包括利用所述待压缩电子数据与目标电子数据进行稀疏矩阵向量乘操作的子任务;所述目标电子数据采用稠密向量表示;

预先构建中间结果存储结构;所述中间结果存储结构用于存储所述待压缩电子数据的每一行元素与所述目标电子数据对应元素的计算结果;

在开始执行所述子任务的过程中,从所述待压缩电子数据读取各非零元素进行计算;

对读取到的每一个非零元素,根据当前非零元素位于所述待压缩电子数据的顺序值,分别通过检索所述待压缩电子数据和所述索引信息,得到所述目标非零元素对应的列位置坐标值和索引值;

分别将所述列位置坐标值和所述索引值作为索引,从所述目标电子数据和所述存储数据结构中选择相应的第一操作元素和第二操作元素;

将所述第一操作元素和所述第二操作元素的计算结果存储至所述中间结果存储结构的对应位置。

示例性的,所述分别通过检索所述待压缩电子数据和所述索引信息,得到所述目标非零元素对应的列位置坐标值和索引值,包括:

预先采用一维数组格式表示所述待压缩电子数据的非零元的位置,得到列位置数组;

基于当前非零元素位于所述待压缩电子数据的顺序值,确定所述当前非零元素对应在所述列位置数组的坐标值,以作为列位置坐标值。

示例性的,所述分别通过检索所述待压缩电子数据和所述索引信息,得到所述目标非零元素对应的列位置坐标值和索引值,包括:

基于当前非零元素位于所述待压缩电子数据的顺序值,确定所述当前非零元素对应在所述索引信息的当前位置标识值;

根据所述当前位置标识值,确定所述当前非零元素对应在所述存储数据结构的位置,以作为所述索引值。

本申请另一方面提供了一种数据压缩装置,包括:

数据获取模块,用于获取采用稀疏矩阵表示的待压缩电子数据;

表存储模块,用于基于所述待压缩电子数据包含的非零元素总数,将所述待压缩电子数据的每个非零元素的值插入至预先构建的哈希表中;

数据存储模块,用于将所述哈希表的非重复元素的值存储至预先构建的存储数据结构中,并得到标识所述哈希表与所述存储数据结构的存储对应关系的哈希键值对表,以利用所述存储数据结构存放所述待压缩电子数据中的所有非重复非零元的值;其中,所述存储数据结构的长度根据所述哈希表的元素个数确定;

对应关系构建模块,用于将所述待压缩电子数据对应的当前压缩存储格式的各非零元素、所述哈希表的各元素及所述存储数据结构中各元素之间建立对应关系,得到索引信息,以将所述待压缩电子数据从以当前压缩存储格式转换为目标值压缩存储格式;其中,所述目标值压缩存储格式为将重复元素压缩为单个元素加索引坐标的格式。

本申请还提供了一种电子设备,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述数据压缩方法的步骤。

本申请最后还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前任一项所述数据压缩方法的步骤。

本申请提供的技术方案的优点在于,利用哈希表去掉待压缩电子数据重复元素,并把所有非重复元素保存在新的数据存储结构中,通过遍历哈希表将其键值修改为非重复元素,并将其值修改为对应下标位置。最后通过构建待压缩电子数据的当前压缩存储格式,哈希表的各元素及存储数据结构中各元素之间的对应关系,能够得到索引信息,从而将原始压缩存储格式下的待压缩电子数据转化新的目标值存储格式,整个过程处理过程简单,具备实际场景下的应用能力,实用性更强,能够去除待压缩电子数据在压缩过程中对应的值数组中的重复元素,能够充分压缩冗余存储的重复元素值,可以使所有重复的元素在值数组中只保存一次,所需存储空间显著下降,从而可以提升数据局部性以充分利用中央处理器中的高速缓冲存储器(也即cache)结构,减少因访问重复元素带来的内存带宽浪费,可以有效提高访存效率。这样当待压缩电子数据在参与任务执行过程中被读取时,能够更高效的从cache中访问到值数组的数据,有效提高访存效率不高,提升相关任务的执行效率。

此外,本申请还针对数据压缩方法提供了相应的实现装置、电子设备及可读存储介质,进一步使得所述方法更具有实用性,所述装置、电子设备及可读存储介质具有相应的优点。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。

附图说明

为了更清楚的说明本申请或相关技术的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的一个示例性应用场景的稀疏矩阵向量乘的框架示意图;

图2为采用COO格式对稀疏矩阵进行存储的原理示意图;

图3为采用CSR格式对稀疏矩阵进行存储的原理示意图;

图4为本申请提供的一种数据压缩方法的流程示意图;

图5为本申请提供的一个示例性应用场景的哈希键值表示意图;

图6为本申请提供的一个示例性应用场景的哈希键值对表示意图;

图7为本申请提供的一个示例性应用场景的值数组和索引数组的对应关系示意图;

图8为本申请提供的一个示例性应用场景的目标值压缩存储格式示意图;

图9为本申请提供的一个示例性应用场景的第一操作元素的提取过程示意图;

图10为本申请提供的一个示例性应用场景的第二操作元素的提取过程示意图;

图11为本申请提供的一个示例性应用场景的中间结果存储结构示意图;

图12为本申请提供的一个示例性应用场景的子任务结果存储结构与中间结果存储结构对应示意图;

图13为本申请提供的一个示例性应用场景的子任务执行结果示意图;

图14为本申请提供的数据压缩装置的一种具体实施方式结构图;

图15为本申请提供的电子设备的一种具体实施方式结构图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。其中,说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及二者的任何变形,意图在于覆盖不排他的包含。术语“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

目前越来越多的电子数据,尤其是图像数据,通常利用稀疏矩阵来表示。稀疏矩阵为包含大量零元素的一类特殊矩阵,与稠密矩阵相对应,稀疏矩阵中的非零元素通常只占整个矩阵元素的5%以下。稀疏矩阵向量乘是科学计算库中常用的核心函数,其主要功能是实现一个稀疏矩阵和一个稠密向量相乘的操作,如图1所示,其中A为稀疏矩阵,X和Y为稠密向量。

由于稀疏矩阵中包含大量的零元素,因此用二维数组存储这类矩阵的效率不高。相关技术对稀疏矩阵的存储方法包括COO(坐标存储)和CSR(行压缩存储),如图2和图3所示。COO格式只存储非零元素而不存储零元素,对于每个非零元,用形如<行,列,值>的三元组存储。因此整个矩阵可由coo_rows(行数组)、coo_cols(列数组)和coo vals(值数组)三个数组表示。CSR格式在COO的基础上将行数

组压缩为每行元素的个数,其中csr_rows_ptr为“行指针”数组,存放每行元素的起止位置。以图1中的A矩阵为例,其中csr_rows_ptr[0]=0,csr_rows_ptr[1]=4,表示[0,4)之间的元素为第一行中的非零元。虽然上述存储格式相比二维数组的存储方式效率有所提升,但对于存在大量重复值的矩阵,需要大量访问重复元素,频繁的内存访问会导致内存访问开销大,造成内存带宽的浪费。由于CSR格式的压缩能力有限,没有充分压缩冗余存储的重复元素值,从而导致访存效率不高,严重影响科学计算任务的执行效率。

鉴于此,本申请充分利用稀疏矩阵中大量重复元素的特性,将矩阵中重复的元素压缩为单个元素加索引坐标的方式,进一步压缩这类稀疏矩阵的存储空间,能够提高稀疏矩阵向量乘操作的效率。在介绍了本申请的技术方案后,下面详细的说明本申请的各种非限制性实施方式。为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有这些具体细节,本申请同样可以实施。在另外一些实例中,对于所属领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。

首先参见图4,图4为本申请提供的一种数据压缩方法的流程示意图,本申请可包括以下内容:

S401:获取采用稀疏矩阵表示的待压缩电子数据。

在本实施例中,待压缩电子数据可为图像数据、语音数据、文本数据等任何一种电子数据,且待压缩电子数据是采用稀疏矩阵的形式来表示的。

S402:基于待压缩电子数据包含的非零元素总数,将待压缩电子数据的每个非零元素的值插入至预先构建的哈希表中。

其中,哈希表也即散列表,其通过把关键码值也即Key(键)、value(值)映射至表中一个位置来访问记录,以加快查找的速度。换言之,哈希表具有去除重复元素和快速查找的功能,哈希表的键表示不重复非零元的值。举例来说,定义一表为M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希表,函数f(key)为哈希(Hash)函数。本领域技术人员可根据任何一种相关技术预先构建一哈希表,本申请对此不作任何限定。由于稀疏矩阵为包含大量零元素的一类特殊矩阵,相应的,待压缩电子数据在采用稀疏矩阵表示之后,稀疏矩阵包含的非零元素也即为待压缩电子数据对应的非零元素总数,由于哈希表可以去除重复的元素,经过S402之后,哈希表中存储的元素为待压缩电子数据的非零且不重复的元素。

S403:将哈希表的非重复元素的值存储至预先构建的存储数据结构中,并得到标识哈希表与存储数据结构的存储对应关系的哈希键值对表,以利用存储数据结构存放待压缩电子数据中的所有非重复非零元的值。

本实施例会预先构建存储数据结构,存储数据结构可采用数组格式表示,其用于存储哈希表中各非重复元素的值,所以存储数据结构的长度可根据哈希表的元素个数确定。通过存储数据结构便可存储待压缩电子数据中的所有非重复非零元的值。哈希键值对表为上个步骤的哈希表记载了存储对应关系之后所生成,也即记载了存储对应关系的哈希表便为本步骤的哈希键值对表。

S404:将待压缩电子数据对应的当前压缩存储格式的各非零元素、哈希表的各元素及存储数据结构中各元素之间建立对应关系,得到索引信息,以将待压缩电子数据从以当前压缩存储格式转换为目标值压缩存储格式。

在本实施例中,当前压缩存储格式为目前相关技术中所支持的压缩存储格式,如COO和CSR格式,由于无论是当前压缩存储格式还是哈希表还是存储数据结构,其存储的元素均为待压缩电子数据的元素,所以通过构建待压缩电子数据对应的当前压缩存储格式的各非零元素、哈希表的各元素及存储数据结构中各元素之间的对应关系,能够将待压缩电子数据从当前压缩存储格式转换至目标值压缩存储格式,所谓目标值压缩存储格式为本申请所提供的一种新型的值压缩存储格式,其为将重复元素压缩为单个元素加索引坐标的格式。其中,所谓的索引坐标即为索引信息。

在本申请提供的技术方案中,利用哈希表去掉待压缩电子数据重复元素,并把所有非重复元素保存在新的数据存储结构中,通过遍历哈希表将其键值修改为非重复元素,并将其值修改为对应下标位置。最后通过构建待压缩电子数据的当前压缩存储格式,哈希表的各元素及存储数据结构中各元素之间的对应关系,能够得到索引信息,从而将原始压缩存储格式下的待压缩电子数据转化新的目标值存储格式,整个过程处理过程简单,具备实际场景下的应用能力,实用性更强,能够去除待压缩电子数据在压缩过程中对应的值数组中的重复元素,能够充分压缩冗余存储的重复元素值,可以使所有重复的元素在值数组中只保存一次,所需存储空间显著下降,从而可以提升数据局部性以充分利用中央处理器中的高速缓冲存储器(也即cache)结构,减少因访问重复元素带来的内存带宽浪费,可以有效提高访存效率。这样当待压缩电子数据在参与任务执行过程中被读取时,能够更高效的从cache中访问到值数组的数据,有效提高访存效率不高,提升相关任务的执行效率。

需要说明的是,本申请中各步骤之间没有严格的先后执行顺序,只要符合逻辑上的顺序,则这些步骤可以同时执行,也可按照某种预设顺序执行,图4只是一种示意方式,并不代表只能是这样的执行顺序。

在上述实施例中,对于如何执行步骤S402并不做限定,本实施例中给出将待压缩电子数据存储至哈希表的一种示例性的实现过程,可包括下述内容:

预先构建哈希表,并获取待压缩电子数据的当前压缩存储格式对应的原始值数组;

初始化哈希表和原始值数组;

将原始值数组中的各非零元素的值插入至哈希表中,得到哈希键值表,以将待压缩电子数据的所有非零元素均插入至哈希表中;

根据哈希键值表的元素总数,确定待压缩电子数据的所有非重复非零元的个数。

其中,原始的哈希表可定义为value_hashmap,将待压缩电子数据的所有非零元素均插入至该哈希表之后,于是生成了哈希键值表,也即哈希键值表为插入了所有非零元素的哈希表。当前压缩存储格式为CSR,表示待压缩电子数据的稀疏矩阵可表示为A,A的尺寸为:行×列=m×n,共含有nnz个非零元素,其对应稠密向量X和Y的尺寸为:n×1和m×1。将待压缩电子数据存储至哈希表的过程可包括:

步骤1:初始化value_hashmap;

步骤2:初始化i=0,i表示CSR格式中值数组(可定义为csr_vals)的下标;

步骤3:将第i个非零元素的值插入到哈希表中,重复元素在插入哈希表后将被自动舍弃;

步骤4:令i=i+1;

步骤5:判断i是否等于nnz,若不等则返回步骤3,否则跳至步骤6。

当上述步骤完成之后,所有非重复非零元的个数(也即numVal)被统计出来,即为哈希表中元素的个数,value_hashmap的存储情况如图5所示,为了便于区分,将图5所示的value_hashmap定义为哈希键值表,此时的哈希表只有键(keys)有具体意义。

在上述实施例中,对于如何执行步骤S403并不做限定,本实施例中给出哈希键值对表的一种示例性的生成方式,可包括下述内容:

预先构建存储数据结构;初始化存储数据结构和存储数据结构的下标;初始化预先构建的哈希表位置指针;对哈希键值表的各非重复元素的值,将当前哈希表位置指针指向的目标键值放入至存储数据结构的目标位置,并将目标位置的标识值存储至目标键值处;当哈希键值表中各非重复元素的键值处包括其存储至存储数据结构相对应位置的标识值,则将当前的哈希键值表作为哈希键值对表。

在本实施例中,存储数据结构用于存储待压缩电子数据中所有非重复非零元的值,且存储数据结构采用数组格式csrv_vals表示;存储数据结构的数组长度numVal与哈希键值表的元素个数相同,在上述实施例生成哈希键值表的基础上,在哈希键值表中记载元素存储至存储数据结构相对应位置的标识值之后,为了便于描述,可将此时的哈希键值表定义为哈希键值对表。在上述实施例的基础上,本实施例的一种示例性的实现方式可包括:

步骤6:初始化numVal=value_hashmap.size,其中size表示哈希表中元素的个数;

步骤7:初始化一个新数组csrv_vals,数组长度为numVal,用于存放稀疏矩阵中所有非重复非零元的值;

步骤8:初始化j=0,其中j表示csrv_vals数组的下标;

步骤9:初始化it=value_hashmap.begin,其中it指向哈希表中元素的位置,而begin代表哈希表的第一个元素;

步骤10:将哈希表it指针指向的键(某个非重复元素的值)放入数值组(csrv_vals)的第j个位置;

步骤11:将下标位置j存放在哈希表第it个键对应的值处(it.val←j),此时的哈希表键值对分别表示的是:非重复非零元的值及其对应值数组(csrv_vals)的下标位置;

步骤12:令j=j+1;令it=it+1;

步骤13:判断it是否指向value_hashmap.end(其中,end表示哈希表的最后一个元素),若不等则返回步骤10,否则跳至下述实施例的步骤14。

当步骤13完成后,所有非重复非零元,即value_hashmap中的所有键均被存放在csrv_vals数组中,而此时value_hashmap的键值对表示非重复非零元的值及其对应值数组(csrv_vals)的下标位置,以图1中A矩阵为例,csrv_vals数组和value_hashmap哈希表对应的状态如图6所示,此时的value_hashmap定义为哈希键值对表,可表示矩阵A中有两个不重复的非零元素(a和b),其中a存放在csrv_vals数组的0号位置;而b存放在csrv_vals数组的1号位置。

在上述实施例中,对于如何执行步骤S404并不做限定,本实施例中给出索引信息的一种示例性的生成方式,可包括下述内容:

初始化当前压缩存储格式对应的原始值数组的非零元素的下标值;

预先构建索引信息,并采用索引数组表示索引信息;

对原始值数组的各非零元素,从哈希键值对表中确定当前非零元素对应在存储数据结构的存储位置,并将存储位置存储至索引数组的目标索引位置;

当索引数组存储原始值数组的各非零元素对应在存储数据结构的存储位置后,生成索引信息。

在本实施例中,索引数组可表示为csrv_vals_idx[],索引数组包含的元素个数为待压缩电子数据包含的非零元素总数;当前压缩存储格式对应的值数组可表示为csr_vals,索引信息的生成过程包括:

步骤14:初始化k=0,其中k表示某个非零元素在当前压缩存储格式中值数组(csr_vals)的下标;

步骤15:从哈希表中快速查找到该分非零元素(csr_vals[k])对应值在值数组(csrv_vals)中的索引位置,并将该索引放入索引数组的第k个位置中(csrv_vals_idx[k]);

步骤16:令k=k+1;

步骤17:判断k是否等于nnz,若不等则返回步骤14,否则结束。

当完成步骤17之后,原始格式的稀疏矩阵转化为新型值压缩存储格式,也即CSR格式中的值数组(csr_vals)被转换为新型值压缩存储格式中的无重复元素值数组(csrv_values)和对应的索引数组(csrv_vals_idx)。由于值数组通常为双精度浮点数(64位)而索引数组通常为无符号整型数组(32位或更低),因此该格式下的稀疏矩阵的内存空间被压缩。图7展示了转换完成后新型值压缩存储格式中值数组和索引数组的有关状态。图8即为通过步骤1到步骤17之后最终转换成的目标值压缩存储格式。

当上述实施例将待压缩电子数据由当前压缩存储格式转化为目标值压缩存储格式之后,当接收到需要使用待压缩电子数据参与后续稀疏矩阵向量乘运算的任务时,该任务的执行过程可包括:

接收待执行目标任务;

预先构建中间结果存储结构;

在开始执行子任务的过程中,从待压缩电子数据读取各非零元素进行计算;

对读取到的每一个非零元素,根据当前非零元素位于待压缩电子数据的顺序值,分别通过检索待压缩电子数据和索引信息,得到目标非零元素对应的列位置坐标值和索引值;

分别将列位置坐标值和索引值作为索引,从目标电子数据和存储数据结构中选择相应的第一操作元素和第二操作元素;

将第一操作元素和第二操作元素的计算结果存储至中间结果存储结构的对应位置。

在本实施例中,上述任意一个实施例所记载的数据压缩存储方法作为本实施例的稀疏矩阵向量乘运算过程的预处理操作,待执行目标任务包括利用待压缩电子数据与目标电子数据进行稀疏矩阵向量乘操作的子任务,目标电子数据采用稠密向量X表示。子任务的计算过程按照行优先的次序进行,即依次将稀疏矩阵中的行与目标电子数据进行乘法和加法运算,每行计算结束后将结果回写一个结果至子任务结果存储结构Y,也即图1所示的稠密向量Y。本实施例定义中间结果存储结构sum,其用于存储待压缩电子数据的每一行元素与目标电子数据对应元素的计算结果。上述实施例的列位置坐标值和索引值的确定方式可为:预先采用一维数组格式表示待压缩电子数据的非零元的位置,得到列位置数组;基于当前非零元素位于待压缩电子数据的顺序值,确定当前非零元素对应在列位置数组的坐标值,以作为列位置坐标值。基于列位置坐标值从目标电子数据对应的稠密向量中选择对应的元素作为第一操作元素也即操作数1。基于当前非零元素位于待压缩电子数据的顺序值,确定当前非零元素对应在索引信息的当前位置标识值;根据当前位置标识值,确定当前非零元素对应在存储数据结构的位置,以作为索引值。基于该索引值,从存储数据结构中选择对应的元素作为第二操作元素也即操作数2。本实施例的子任务的一种示例性的执行过程可包括:

步骤1:初始化i=0,其中i表示当前正在计算第i行;

步骤2:初始化sum=0,其中sum表示该行元素与X向量对应元素相乘相加后的中间结果;

步骤3:初始化j=csrv_rows_ptr[i],其中j表示计算到的第j个非零元,csrv_rows_ptr[i]为该行非零元的起始位置,同时也是上一行非零元素的终止位置;

步骤4:取出csrv_col[j]作为操作数1的索引,再通过索引从X向量中取出操作数1,其中csrv_col[j]表示第j个非零元素的列坐标;步骤4为从X中取出一个乘法操作数1,以图1中矩阵和向量为例,如图9所示。以j=2为例,此时csrv_col[2]=4,表示下一个非零元为第4+1=5列,对应稠密向量X的第五行元素6,此时的操作数1即为6。

步骤5:取出作为csrv_vals_idx[j]作为操作数2的索引,再从csrv_vals中取出操作数2的值,其中csrv_vals_idx[j]表示第j个非零元素值在csrv_vals数组中的索引;步骤5为从稀疏矩阵中取出操作数2,以图1中的矩阵和向量为例,如图10所示:以j=2为例,此时csrv_vals_idx[2]=1,表示下一个非零元的值在值数组(csrv_vals)的第1+1=2个位置,从csrv_vals[1]中取出操作数2,此时的操作数2为b;

步骤6:将两个操作数相乘后,将结果加至sum中,以图1中的矩阵和向量为例,如图11所示:以j=2为例,步骤6为将取出的两个操作数相乘后加到临时变量sum中。此时sum=6a,步骤6完成后sum=6a+6b;

步骤7:令j=j+1;

步骤8:判断j是否等于csrv_rows_ptr[i+1],csrv_rows_ptr[i+1]表示该行非零元的结束位置,同时也是下一行非零元的开始位置,若不等则返回步骤4,否则跳转至步骤9;

步骤9:将sum中的值存放至向量Y中第i个元素对应的位置,此时,稀疏矩阵中第i行的非零元计算已经完成。以图1中的矩阵和向量为例,如图12所示:以i=0为例,此时第0行的非零元已经全部计算完毕,将其sum作为结果写回至稠密向量Y中,即Y[0]的计算结果为6a+7b;

步骤10:令i=i+1;

步骤11:判断i是否等于m,若不等则返回步骤4,否则所有行的非零元全部计算完毕,子任务执行流程结束。以图1中的矩阵和向量为例,计算结果如图13所示。

由上可知,本实施例在上述实施例通过遍历CSR格式的值数组,用哈希表去掉重复元素并把所有非重复元素保存在新初始化的值数组中。遍历哈希表,将其“键”修改为非重复元素,“值”修改为对应下标位置。再次遍历CSR格式的值数组,从哈希表中查找该值对应的下标位置,并存放在新初始化的下标数组中的基础上,在执行子任务时,首先通过下标数组找到操作数对应下标,再通过下标从值数组中取出操作数。本发明可以使所有重复的元素在值数组中只保存一次,因此该数组的存储空间减少,数据局部性提升。在计算时,中央处理器更可能在cache中访问到值数组的数据,有效提高计算速度,提升子任务执行效率。

本申请还针对数据压缩方法提供了相应的装置,进一步使得方法更具有实用性。其中,装置可从功能模块的角度和硬件的角度分别说明。下面对本申请提供的数据压缩装置进行介绍,该装置用以实现本申请提供的数据压缩方法,在本实施例中,数据压缩装置可以包括或被分割成一个或多个程序模块,该一个或多个程序模块被存储在存储介质中,并由一个或多个处理器所执行,已完成实施例一公开的数据压缩方法。本申请所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述数据压缩装置在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能,下文描述的数据压缩装置与上文描述的数据压缩方法可相互对应参照。

基于功能模块的角度,参见图14,图14为本申请提供的数据压缩装置在一种具体实施方式下的结构图,该装置可包括:

数据获取模块141,用于获取采用稀疏矩阵表示的待压缩电子数据;

表存储模块142,用于基于待压缩电子数据包含的非零元素总数,将待压缩电子数据的每个非零元素的值插入至预先构建的哈希表中;

数据存储模块143,用于将哈希表的非重复元素的值存储至预先构建的存储数据结构中,并得到标识哈希表与存储数据结构的存储对应关系的哈希键值对表,以利用存储数据结构存放待压缩电子数据中的所有非重复非零元的值;其中,存储数据结构的长度根据哈希表的元素个数确定;

对应关系构建模块144,用于将待压缩电子数据对应的当前压缩存储格式的各非零元素、哈希表的各元素及存储数据结构中各元素之间建立对应关系,得到索引信息,以将待压缩电子数据从以当前压缩存储格式转换为目标值压缩存储格式;其中,目标值压缩存储格式为将重复元素压缩为单个元素加索引坐标的格式。

可选的,在本实施例的一些实施方式中,上述表存储模块142还可用于:

预先构建哈希表,并获取待压缩电子数据的当前压缩存储格式对应的原始值数组;

初始化哈希表和原始值数组;

将原始值数组中的各非零元素的值插入至哈希表中,得到哈希键值表,以将待压缩电子数据的所有非零元素均插入至哈希表中;

根据哈希键值表的元素总数,确定待压缩电子数据的所有非重复非零元的个数。

可选的,在本实施例的另一些实施方式中,上述数据存储模块143还可用于:

预先构建存储数据结构;存储数据结构用于存储待压缩电子数据中所有非重复非零元的值,且存储数据结构采用数组格式表示;存储数据结构的数组长度与哈希键值表的元素个数相同;

初始化存储数据结构和存储数据结构的下标;

初始化预先构建的哈希表位置指针;

对哈希键值表的各非重复元素的值,将当前哈希表位置指针指向的目标键值放入至存储数据结构的目标位置,并将目标位置的标识值存储至目标键值处;

当哈希键值表中各非重复元素的键值处包括其存储至存储数据结构相对应位置的标识值,则将当前的哈希键值表作为哈希键值对表。

示例性的,在本实施例的一些实施方式中,上述对应关系构建模块144还可用于:

初始化当前压缩存储格式对应的原始值数组的非零元素的下标值;

预先构建索引信息,并采用索引数组表示索引信息;索引数组包含的元素个数为待压缩电子数据包含的非零元素总数;

对原始值数组的各非零元素,从哈希键值对表中确定当前非零元素对应在存储数据结构的存储位置,并将存储位置存储至索引数组的目标索引位置;

当索引数组存储原始值数组的各非零元素对应在存储数据结构的存储位置后,生成索引信息。

示例性的,在本实施例的另一些实施方式中,上述装置例如还可包括任务执行模块,其可用于:

接收待执行目标任务;其中,待执行目标任务包括利用待压缩电子数据与目标电子数据进行稀疏矩阵向量乘操作的子任务;目标电子数据采用稠密向量表示;

预先构建中间结果存储结构;中间结果存储结构用于存储待压缩电子数据的每一行元素与目标电子数据对应元素的计算结果;

在开始执行子任务的过程中,从待压缩电子数据读取各非零元素进行计算;

对读取到的每一个非零元素,根据当前非零元素位于待压缩电子数据的顺序值,分别通过检索待压缩电子数据和索引信息,得到目标非零元素对应的列位置坐标值和索引值;

分别将列位置坐标值和索引值作为索引,从目标电子数据和存储数据结构中选择相应的第一操作元素和第二操作元素;

将第一操作元素和第二操作元素的计算结果存储至中间结果存储结构的对应位置。

作为上述实施例的一种示例性的实现方式,上述任务执行模块还可进一步用于:

预先采用一维数组格式表示待压缩电子数据的非零元的位置,得到列位置数组;

基于当前非零元素位于待压缩电子数据的顺序值,确定当前非零元素对应在列位置数组的坐标值,以作为列位置坐标值。

作为上述实施例的另一种示例性的实现方式,上述任务执行模块还可进一步用于:

基于当前非零元素位于待压缩电子数据的顺序值,确定当前非零元素对应在索引信息的当前位置标识值;

根据当前位置标识值,确定当前非零元素对应在存储数据结构的位置,以作为索引值。

本申请所述数据压缩装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本实施例能够解决相关技术访存效率低的问题,有效提升以稀疏矩阵格式表示的电子数据的访存效率。

上文中提到的数据压缩装置是从功能模块的角度描述,进一步的,本申请还提供一种电子设备,是从硬件角度描述。图15为本申请实施例提供的电子设备在一种实施方式下的结构示意图。如图15所示,该电子设备包括存储器150,用于存储计算机程序;处理器151,用于执行计算机程序时实现如上述任一实施例提到的数据压缩方法的步骤。

其中,处理器151可以包括一个或多个处理核心,比如4核心处理器、8核心处理器,处理器151还可为控制器、微控制器、微处理器或其他数据处理芯片等。处理器151可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable GateArray,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器151也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器151可以集成有GPU(Graphics Processing Unit,图形处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器151还可以包括AI(ArtificialIntelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器150可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器150还可包括高速随机存取存储器以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。存储器150在一些实施例中可以是电子设备的内部存储单元,例如服务器的硬盘。存储器150在另一些实施例中也可以是电子设备的外部存储设备,例如服务器上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器150还可以既包括电子设备的内部存储单元也包括外部存储设备。存储器150不仅可以用于存储安装于电子设备的应用软件及各类数据,例如:执行数据压缩方法过程中的程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。本实施例中,存储器150至少用于存储以下计算机程序1501,其中,该计算机程序被处理器151加载并执行之后,能够实现前述任一实施例公开的数据压缩方法的相关步骤。另外,存储器150所存储的资源还可以包括操作系统1502和数据1503等,存储方式可以是短暂存储或者永久存储。其中,操作系统1502可以包括Windows、Unix、Linux等。数据1503可以包括但不限于数据压缩结果对应的数据等。

在一些实施例中,上述电子设备还可包括有显示屏152、输入输出接口153、通信接口154或者称为网络接口、电源155以及通信总线156。其中,显示屏152、输入输出接口153比如键盘(Keyboard)属于用户接口,可选的用户接口还可以包括标准的有线接口、无线接口等。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。通信接口154可选的可以包括有线接口和/或无线接口,如WI-FI接口、蓝牙接口等,通常用于在电子设备与其他电子设备之间建立通信连接。通信总线156可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

本领域技术人员可以理解,图15中示出的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的组件,例如还可包括实现各类功能的传感器157。

本申请所述电子设备的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本实施例能够解决相关技术访存效率低的问题,有效提升以稀疏矩阵格式表示的电子数据的访存效率。

可以理解的是,如果上述实施例中的数据压缩方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、多媒体卡、卡型存储器(例如SD或DX存储器等)、磁性存储器、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。

基于此,本申请还提供了一种可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时如上任意一实施例所述数据压缩方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的硬件包括装置及电子设备而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

以上对本申请所提供的一种数据压缩方法、装置、电子设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,基于本申请中的实施例,对于本技术领域的普通技术人员来说,在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

相关技术
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 模态框构建方法、装置、电子设备、计算机可读存储介质
  • 日志信息处理方法、装置、电子设备及可读存储介质
  • 电子设备、音量调节方法及装置、计算机可读存储介质
  • 路线规划方法、装置、电子设备及可读存储介质
  • 数据压缩方法、装置、电子设备及计算机可读存储介质
  • 数据压缩方法、装置、电子设备及计算机可读存储介质
技术分类

06120116587127