CN108140016A - 确定矩阵-向量相乘的运算最优序列的优化器 - Google Patents

确定矩阵-向量相乘的运算最优序列的优化器 Download PDF

Info

Publication number
CN108140016A
CN108140016A CN201580083827.6A CN201580083827A CN108140016A CN 108140016 A CN108140016 A CN 108140016A CN 201580083827 A CN201580083827 A CN 201580083827A CN 108140016 A CN108140016 A CN 108140016A
Authority
CN
China
Prior art keywords
matrix
vector
optimizer
calculate
data
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.)
Granted
Application number
CN201580083827.6A
Other languages
English (en)
Other versions
CN108140016B (zh
Inventor
彼得·弗拉基米罗维奇·特里福诺夫
斯坦尼斯拉夫·彼得罗维奇·瑞斯
王元钢
陈晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN108140016A publication Critical patent/CN108140016A/zh
Application granted granted Critical
Publication of CN108140016B publication Critical patent/CN108140016B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Abstract

一种优化器,用于确定计算向量x与二进制矩阵A的乘积的运算最优序列,所述优化器用于执行如下步骤:a)确定位于包含二进制矩阵A的系统矩阵H∈GF(2)n×m的行空间的低权重向量z的集合S;b)选择子集使得对于任何i∈P,存在至少一个z∈S,zi=1;c)选择子矩阵作为A的列,A在子集P中没有指数;d)估算执行以下步骤所需的算法运算的数量:对于向量x计算第一部分结果以及计算第二部分结果yP作为第一部分结果的元素和向量x的元素的线性组合;e)对于不同子集P,执行步骤b)至d),基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算最优序列。

Description

确定矩阵-向量相乘的运算最优序列的优化器
技术领域
本发明涉及向量-矩阵相乘计算领域,本发明尤其涉及确定计算向量与矩阵乘积的运算最优序列的优化器。所述矩阵为GF(2μ)上的二进制矩阵或编码矩阵。本发明也涉及用于数据编码的存储控制器,以及用于恢复部分纠删数据的存储控制器。本发明还涉及确定计算向量-矩阵乘积的运算最优序列的方法,以及恢复部分纠删数据的方法。
本发明也涉及存储程序代码的计算机可读存储介质,所述程序代码包含用于实现该类方法的指令。
背景技术
纠删编码常用于存储系统,以提供保护,使其免于各类故障。存储系统的控制器需要实现用于从数据中计算奇偶校验符号以及用于从未纠删符号中恢复损失(纠删)符号的一些算法。通常,这些算法简化为向量-矩阵相乘。然而,现代存储介质,比如SSD,提供极高性能,使得控制器计算性能可能成为系统中的瓶颈。解决该问题的现有方案包括能够高效计算数据大块的异或的硬件RAID控制器,以及软件RAID实现方式,可包括定义纠删码的矩阵相乘的快速算法。这些算法可以是编码特定,或者是通用的,即不考虑编码的代数特性的算法。
采用矩阵G产生的纠删码进行数据编码一般实现为c=xG,其中G=(I|A),I是标识矩阵,A为GF(2m),m≥1上的k×r矩阵。纠删解码也可表示为其中j1,...,jt是需要恢复数据的故障存储设备的指数,i1,...,il为参与修复的非故障设备的指数,Q为矩阵,使得(I|QT|0)PGT=0,其中P是置换矩阵,作如下映射:s→js,1≤s≤t,t+s′→is′,1≤s′≤l。因此,存储系统需要高效的技术在GF(2m)上计算向量-矩阵乘积。可见该运算简化为GF(2m)个元素的加法(即,异或)及乘法。
解决该问题的现有技术包括:
1.硬件RAID控制器,完全或部分实现一些预定义矩阵(典型的,r≤2)相乘。
2.软件库,可以实现计算向量-矩阵乘积的快速或传统算法。所使用的算法可分为如下类别:
●编码特定的,使用对应矩阵的代数结构
●通用的,实现向量与一些矩阵快速相乘
●软件技艺,能够在现代CPU上高效实现标准矩阵-向量相乘y=xA,
硬件RAID控制器的主要缺陷在于r较大时难以实现编码和纠删重建技术,需要支持许多不同的系统配置。所以,硬件RAID正在被软件RAID代替。然而,即使现代CPU性能有了巨大进步,纠删编码和重建算法的软件实现的性能,即,执行对应运算所需钟摆数,可能劣于现代存储器比如SSD或RRAM的性能,即,读写对应的数据块所需钟摆数。
此外,获得的快速代数编码及重建算法可能不是针对所有代码,仅仅对于较大系统益处显著。另一方面,现有通用快速向量-矩阵乘法技术的设计没有考虑到有限域计算。即,所述算法没有利用标识x+x+=0,该标识存在于用于纠删码构建的有限域GF(2m)中。这使得这些算法极其不佳。即,Kronrod-Arlazarov-Diniz-Faradjev算法的复杂性为Mailman算法的复杂性为Williams算法的复杂性为然而,后者难以应用于GF(2m)中的向量。
发明内容
本发明的目的包括提供一种优化器,及一种确定计算向量与二进制矩阵乘积的运算最优序列的方法。所述优化器和所述方法解决了现有技术中的一个或多个问题。本发明另一目的为提供一种存储控制器,及一种恢复部分纠删数据的方法。所述存储控制器及方法解决了现有技术中的一个或多个问题。本发明的目的尤其可以包括减少存储系统中纠删编码解码运算的延时。
本发明第一方面提供一种优化器,用于确定计算向量x与二进制矩阵A的乘积的运算最优序列,所述优化器用于执行如下步骤:
a)确定位于包含二进制矩阵A的系统矩阵H∈GF(2)n×m的行空间的低权重向量z的集合S;
b)选择子集使得对于任何i∈P,存在至少一个z∈S,zi=1;
c)选择子矩阵作为A的列,A在子集P中没有指数;
d)估算执行以下步骤所需的算法运算的数量:
-对于所述向量x计算第一部分结果以及
-计算第二部分结果yP作为所述第一部分结果的元素和所述向量x的元素的线性组合;以及
e)对于不同子集P,执行步骤b)至d),基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算最优序列。
子集P也可以根据选取。
第一方面的所述优化器的实施例能够减少实现任意向量与给定矩阵A相乘所需的算术运算数量和/或减少整体计算延时。
第一方面的所述优化器可以在与计算设备分离的设备中实现,该计算设备用于根据第一方面所述优化器确定的最优序列实施向量-矩阵计算。这是有益处的,因为对于给定矩阵A,最优序列仅仅需要确定一次。随后,计算设备可以对于向量x的不同选择实现最优序列。如果计算设备对于不同矩阵A进行向量-矩阵计算,所述优化器可用于对于矩阵A的不同选择提前计算最优序列,并存储最优序列使得计算设备可以查询并检索给定矩阵A的最优序列。
在其他实施例中,第一方面所述优化器可被包括在用于向量-矩阵计算的计算设备中。这尤其有利于计算设备用于实现对于大量不同矩阵的向量-矩阵计算。所以,优选的,计算设备可确定用于实现向量-矩阵乘积计算的最优序列。
在第一方面所述优化器的第一种实现方式中,所述第一部分结果的元素和所述输入x的元素的线性组合为:
在第一方面所述优化器的第二种实现方式中,所述子集随机选取。
随机选取所述子集可包括:使用伪随机算法。所述子集的随机选取具有如下优势:对于子集P的完全不同的选择,可以确定需要多少运算并选取最优子集。
在第一方面所述优化器的第三种实现方式中,在确定计算所述第一部分结果所需算法运算的数量时,假设使用了mailman算法。
mailman算法代表执行第一部分结果的向量-矩阵计算的高效方式。
本发明第二方面提供一种用于确定计算向量与GF(2μ)上的编码矩阵的乘积的运算最优序列的优化器,所述优化器包含:
-计算单元,用以将编码矩阵分解为非二进制矩阵和二进制矩阵的乘积;以及
-优化器,用以根据第一方面确定计算所述向量与所述二进制矩阵乘积的运算序列。
因此,确定计算向量与编码矩阵(不一定是二进制矩阵)乘积的最优序列的问题,可被简化为确定计算向量与二进制矩阵乘积的最优序列的问题。该问题可以通过第一方面所述优化器解决。
本发明第五第六方面的方法可以分别被本发明第一第二方面所述优化器执行。本发明第五第六方面的方法的进一步特征或实现方式可以实现本发明第一第二方面所述优化器及其不同实现方式的功能。
在第二方面所述优化器的第一种实现方式中,所述编码矩阵是用于数据编码的线性块代码的检查矩阵,所述数据存储于多个存储设备中。
已发现如果用在用于数据编码的线性块代码的矩阵中,采用第二方面优化器单独优化运算序列尤其有益,该数据存储在多个存储设备上。这尤其有益,因为可基于可能的存储配置之一确定所述矩阵。换言之,有限个存储配置中每一个都对应有编码矩阵。对于每一个所述编码矩阵,第二方面所述优化器可确定用于采用编码矩阵计算向量-矩阵相乘的运算最优序列。该最优序列可被存储在存储控制器,因此该存储器可访问每一个可能存储配置的最优序列。
本发明第三方面涉及存储控制器,用于数据编码,所述数据存储于多个存储设备中,包括:
-探测器,用于探测所述多个存储设备的存储配置;
-控制器,用于确定编码矩阵M,所述矩阵用以根据所述存储配置编码数据;
-优化器,尤其是第二方面所述的优化器,用于确定计算向量与所述编码矩阵M乘积的运算最优序列;以及
-可编程逻辑线路,可编程,以使用所述确定的运算序列编码数据。
第三方面的存储控制器可检测存储配置,确定相应编码矩阵,及确定相应的计算向量与编码矩阵乘积的运算最优序列。尤其的,无论何时探测器检测到存储配置已改变,存储控制器可用于确定新的运算最优序列。因此,无需存储控制器的外部编程,存储控制器自身可确定运算最优序列,也即确定了计算向量-矩阵相乘的最优方式。当根据当前存储配置在多个存储设备上存储数据时,该向量-矩阵乘法是必要的。
本发明第四方面涉及存储控制器,用于从多个存储设备中恢复部分纠删数据,包括:
-探测器,用以探测部分纠删数据的故障配置;
-控制器,用于确定编码矩阵M,所述矩阵用以根据所述故障配置恢复数据;
-优化器,尤其是第二方面所述的优化器,用于确定计算向量与所述编码矩阵M乘积的运算序列;以及
-可编程逻辑线路,可编程,以使用所述确定的运算序列解码数据。
第四方面的存储控制器可用于恢复部分纠删数据,该数据由第三方面的存储控制器编码。尤其,第四方面的存储控制器也可以是第三方面的存储控制器。即,同一个存储控制器可用于编码数据并恢复部分纠删数据。
在第三方面或第四方面的存储控制器的第一种实现方式中,可编程逻辑电路包含场可编程门阵列。场可编程门阵列(Field-programmable gate arrays,FPGA)生产后可被配置并可高效执行配置的运算。因此,FPGA可用于实现所述优化器确定的最优运算序列。
可以执行算术运算序列,而不是FPGA分流,算术运算通过GPU、CPU或任何其他计算设备采用所提供的方法获得。
本发明第五方面提供一种用于确定计算向量x与二进制矩阵H的乘积的运算最优序列的方法,包含:
a)确定位于包含二进制矩阵A的系统矩阵H∈GF(2)n×m的行空间的低权重向量z的集合S;
b)选择子集使得对于任何i∈P,存在至少一个z∈S,zi=1;
c)选择子矩阵作为A的列,A在子集中没有指数;
d)估算执行以下步骤所需的算法运算的数量:
-对于所述向量x计算第一部分结果以及
-计算第二部分结果yP作为所述第一部分结果的元素和所述向量x的元素的线性组合;
e)对于不同子集P,执行步骤b)至d),基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算序列。
子集P也可以根据选取。
本发明第六方面提供一种用于确定计算向量与编码矩阵的GF(2μ)乘积的运算最优序列的方法,包含:
a)将编码矩阵分解为非二进制矩阵和二进制矩阵的乘积;以及
b)根据前述第五方面的方法确定计算所述向量与所述二进制矩阵乘积的运算序列。
本发明第七方面涉及一种用于恢复部分纠删数据的方法,包含:
-探测部分纠删数据的故障配置;
-确定编码矩阵M,所述矩阵用以根据所述故障配置恢复数据;
-根据前述第六方面确定计算向量与所述编码矩阵M乘积的运算序列;以及
-使用所述确定的运算序列从部分纠删数据中恢复原始数据。
本发明第八方面提供一计算机可读存储介质,存储有程序代码,所述程序代码包含用于实现第五、第六或第七方面,或第五、第六或第七方面任一实现方式所述的方法的指令。
附图说明
为了更清楚地说明本发明实施例中的技术特征,下面将对实施例描述中所需要使用的附图作简单地介绍。下面描述中的附图仅仅是本发明的一些实施例,这些实施例在不违背本发明如权力要求书中所定义的保护范围的情况下,可以进行修改。
图1是本发明第一实施例第一优化器的框图;
图2是本发明第二实施例第二优化器的框图;
图3是本发明另一实施例存储控制器的框图;
图4是本发明一实施例存储系统架构的框图;
图5是本发明另一实施例确定计算向量x与二进制矩阵H乘积的运算最优序列的方法流程图;
图6是本发明另一实施例确定计算向量与在GF(2μ)上编码矩阵乘积的运算最优序列的方法流程图;
图7是本发明另一实施例恢复部分纠删数据的方法流程图;以及
图8对比可选方法示出了本发明方法的编码复杂性。
具体实施方式
图1是本发明第一实施例第一优化器100的框图。第一优化器100可选的连接于可编程逻辑电路110,图1中以虚线标出。可编程逻辑电路110可选的连接于多个存储设备120。所述优化器110用于确定运算最优序列,可编程逻辑电路110可用于实现运算最优序列。比如,可编程逻辑电路120可实现编码运算最优序列,以计算数据编码。该数据存储与多个存储设备上。
FPGA分流
每次系统配置改变,任何存储设备故障或被替换时,用于编码及纠删恢复的矩阵需要更改。我们提议在存储系统架构中引入FPGA设备,分流矩阵乘法运算对应的计算至该设备中,该运算是纠删编码和恢复所需要的。即,提议的存储系统架构(参见以下图9)可包括控制单元,其检测系统配置变化,包括设备故障和恢复,以及为纠删编码和恢复构建合适的矩阵。上述方法用于构建算术运算序列,实现矩阵乘法。这些序列表征为VHDL规范,该规范被翻译并加载到FPGA。需要纠删编码或恢复的所有数据接入运算调用FPGA以执行相应乘法运算。
图2是本发明第二实施例第二优化器200的框图。第二优化器200包含计算单元210及第一优化器100。第一优化器100可以为图1所示优化器。计算单元210可用于将编码矩阵分解为非二进制矩阵和二进制矩阵的乘积。对于二进制矩阵,优化器100可确定计算向量与二进制矩阵乘积的最优序列。
图3是存储控制器300的框图。存储控制器300包含探测器310,控制器320,优化器330,及可编程逻辑电路340。
存储控制器可配置如下:探测器310用于探测多个存储设备的存储配置。控制器320用于确定编码矩阵M,该矩阵用以根据存储配置编码数据。所述优化器330用于确定计算向量与编码矩阵M乘积的运算序列,尤其是图2所示优化器。可编程逻辑电路340被编程以采用优化器330确定的运算序列编码数据。
同时,存储控制器300的部件可配置如下:探测器310用以探测部分纠删数据的故障配置。控制器320用于确定编码矩阵M,该矩阵用以根据故障配置恢复数据。所述优化器330用于确定计算向量与编码矩阵M乘积的运算序列,尤其是图2所示优化器。可编程逻辑电路340被编程,即,可被优化器330编程,以采用优化器确定的运算序列解码数据。
所以,存储控制器的部件可用于数据编码,该数据存储于多个存储设备,也可以从多个存储设备中恢复部分纠删数据。
可选的,如图3虚线所示,存储控制器连接至多个存储设备350。可编程逻辑电路340可直接连接至多个存储设备350。然而,在本发明其他实施例中,存储控制器300的其他部件,即,探测器310、控制器320和/或优化器330可直接连接至多个存储设备350。多个存储设备350可包括SSD、硬盘驱动器和/或其组合。
图4是本发明一实施例存储系统架构400的框图。架构400包含控制单元410,其检测多个存储设备450的配置。控制单元410用于提供多个存储设备的检测到的配置信息至单元430,该单元用于生成编码纠删解码的运算序列。单元430用于提供确定的最佳序列至VHDL转换器435,转换器435用于提供编程至FPGA 440。应用420(即,在通用计算机上执行)提供数据给FPGA 440,FPGA 440被编程以使用最优序列编码数据并将编码数据写入多个存储设备450。
图5是本发明另一实施例确定计算向量x与二进制矩阵H乘积的运算最优序列的方法流程图。
该方法包含:第一步骤510:确定位于包含二进制矩阵A的系统矩阵H∈GF(2)n×m的行空间的低权重向量z的集合S。
第二步骤520:选择子集使得对于任何i∈P,存在至少一个i∈S,zi=1。子集P可随机选择,即,使用伪随机算法。子集P也可以被选作整个集合{0,…,m-1},即,根据
第三步骤530:选择子矩阵作为A的列,A在子集P中没有指数。
第四步骤540:估算执行以下步骤所需的算法运算的数量:
对于向量x计算第一部分结果以及计算第二部分结果yP作为第一部分结果的元素和向量x的元素的线性组合。
第五步骤550:对于不同子集P,执行第一至第四步骤510-540,基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算序列。第一至第四步骤可被执行,例如,预定次数次。
图5所示方法可描述如下:
首先考虑计算y=xA的问题。x是输入向量,A是包含GF(2m)个元素的固定矩阵,m>1。该类表达式的高效估算基于表达式是二进制矩阵,L是块对角矩阵。这能够大大减少成本高昂的GF(2m)乘法数量。
当m=1,即A为二进制矩阵时,可以使用一些现有快速向量-矩阵乘法算法计算y的少数元素,然后恢复剩余数值作为已计算数值和x的元素的线性组合。只要这些线性组合中项的数量较小,该方法大有裨益。
为了减少整体处理延时,对于上述向量-矩阵乘法,快速算法可以被转换为VHDL代码,相应计算可被分流至附加到系统的FPGA。只要存储系统配置改变,或任一设备故障或恢复,FPGA需要被重新配置。
GF(2m)中矩阵相乘
考虑计算y=xA的问题,A为GF(2m)的k×r矩阵,使得,使得α作为GF(2m)的原始元素,可得如下:
Ajit∈GF(2),1≤i≤r。
这可以用矩阵符号表示为L为mr×r块对角矩阵,块(α0,...,αm-1)T位于其主对角线上,为k×mr二进制矩阵,包括Ajit个元素。
二进制矩阵相乘
考虑计算y=xA的问题,A为GF(2m)的k×r矩阵。可知y的一些元素可表示为y其他元素与x元素的线性组合。人们有兴趣找到这类仅包括一些项的线性组合。
使得H(I|AT)(。那么(y|x)HT=0,。H可被认为是一些线性块代码(通常,与原始纠删码无关)的检查矩阵。本发明实施例中,提出的方法可包括以下步骤:
1.找到在矩阵H的行空间的低权重向量z,即,找到H行此类线性组合,其具有少量非零项。
2.选择子集{1P{1,...,r},使得对于任何i∈P,存在至少一个z:zi=1。
P中元素的数量需要针对特定组合,k,r而优化。
3.使用Mailman(或一些其他已有算法)构建算术运算序列,用于计算 是A的子矩阵,其列中指数不在P中。
4.剩余数值由如下提供:
z是来自于H的行空间的低权重向量,使得zi=1。
5.针对一些随机选取的不同子集P,执行步骤2至4,选择最短的运算序列。
比如,考虑计算y=xA,其中
得到
使得P={1,2,3},可见z=(110010110100),其是行0和1的和,属于H的行空间。得到y0=y1+x0+x2+x3+x5。只需要四次加法即可计算该数值,而直接计算时,则需要七次。
图6是本发明另一实施例确定计算向量与编码矩阵GF(2μ)乘积的运算最优序列的方法流程图。该方法包括第一步骤610:将编码矩阵分解为非二进制矩阵和二进制矩阵的乘积;第二步骤620:确定计算向量与二进制矩阵乘积的运算序列。
图7是本发明另一实施例恢复部分纠删数据的方法流程图。所述方法包含:第一步骤710:探测部分纠删数据的故障配置。这比较重要,因为具体故障配置决定了数据恢复所需的编码矩阵;第二步骤720:确定根据故障配置恢复数据的编码矩阵M。
接下来,第三步骤730:确定计算向量及编码矩阵M的乘积的运算最优序列。最后,步骤740:使用确定的运算最优序列,从部分纠删数据中恢复原始数据。
图8所示为对于本申请提出的方法、mailman算法,及标准方法,实现n×n×二进制矩阵乘法所需加法的次数。对比直接乘法(当下存储常用)及mailman算法,提出的矩阵乘法算法能够减少算术运算的数量。可见可以获得高达15%收益。可见通过消除由方程式(1)带来的常见子表达式,可能进一步减少算术运算数量,但这可能引起更长的计算延时。
表1:里德-所罗门代码基于FPGA编码的计算延时
代码 提出的方法 传统算法
(16,14,3) 48 1180
(16,13,4) 49 1656
(16,12,5) 49 2010
(16,11,6) 49 2248
(16,10,7) 49 2478
表一示出了对于Altera EP2C70F896C6-R设备使用FPGA模拟器ICARUS,各种里德-所罗门代码的系统编码延时。
简而言之,本发明一些实施例的关键点包括:
1获得向量与矩阵GF(2m)乘法的快速算法的方法,包括:将矩阵分解为二进制矩阵和非二进制矩阵的乘积,选择二进制矩阵的子矩阵,构建二进制矩阵的子矩阵乘法的快速算法,识别线性表达式,线性表达式将向量与二进制矩阵的乘积的剩余元素与计算出的元素和输入数值相关联,选择需要最少数量运算的表达式。
2存储系统使用纠删码,以及使用计算校验符号及恢复纠删符号的方法所获得的算法。
3上述存储系统包括FPGA设备,用于分流根据上述方法得到的算法所对应的纠删编码和恢复计算。
上文所有描述仅仅为本发明的实施方式,本发明所保护的范围并不仅限于此。本领域技术人员可以容易地做出任何变化或替换。因此,本发明的保护范围应以所附权利要求的保护范围为准。

Claims (13)

1.一种优化器(100),用于确定计算向量x与二进制矩阵A的乘积的运算最优序列,其特征在于,所述优化器用于执行如下步骤:
a)确定(510)位于包含所述二进制矩阵A的系统矩阵H∈GF(2)n×m的行空间的低权重向量z的集合S;
b)选择(520)子集,使得对于任何i∈P,存在至少一个z∈s,zi=1;
c)选择(530)子矩阵作为A的列,A在子集P中没有指数;
d)估算(540)执行以下步骤所需的算法运算的数量:
对于所述向量x计算第一部分结果以及
计算第二部分结果yP作为所述第一部分结果的元素和所述向量x的元素的线性组合;
e)对于不同子集P,执行(550)步骤b)至d),基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算最优序列。
2.根据前述权利要求的所述优化器(100),其特征在于,所述第一部分结果的元素和所述输入x的元素的线性组合为:
3.根据前述权利要求的所述优化器(100),其特征在于,所述子集随机选出。
4.根据前述权利要求的所述优化器(100),其特征在于,在确定计算所述第一部分结果所需算法运算的数量时,假设使用了mailman算法。
5.一种确定计算向量与GF(2μ)上的编码矩阵乘积的运算最优序列的优化器(200),其特征在于,所述优化器包含:
计算单元(210),用以将所述编码矩阵分解为非二进制矩阵和二进制矩阵的乘积;以及
优化器(100),用以根据前述权利要求确定计算所述向量与所述二进制矩阵乘积的运算序列。
6.根据权利要求5所述的优化器(200),其特征在于,所述编码矩阵是用于数据编码的线性块代码的检查矩阵,所述数据存储于多个存储设备(120、350和450)。
7.一种存储控制器(300),用于数据编码,所述数据存储于多个存储设备(120、350和450),其特征在于,包含:
探测器(310),用于探测所述多个存储设备(120、350和450)的存储配置;
控制器(320),用于确定编码矩阵M,所述矩阵用以根据所述存储配置编码数据;
优化器(330),尤其是根据权利要求5或6所述的优化器,用于确定计算向量与所述编码矩阵M乘积的运算最优序列;以及
可编程逻辑线路(340),可编程,以使用所述确定的运算序列编码数据。
8.一种存储控制器(300),用于从多个存储设备(120、350和450)中恢复部分纠删数据,其特征在于,包含:
探测器(310),用于探测部分纠删数据的故障配置;
控制器(320),用于确定编码矩阵M,该矩阵用以根据所述故障配置恢复数据;
优化器(330),尤其是权利要求5或6所述的优化器,用于确定计算向量与所述编码矩阵M乘积的运算最优序列;以及
可编程逻辑线路(340),可编程,以使用所述确定的运算序列解码数据。
9.根据权利要求7和8所述的存储控制器(300),其特征在于,所述可编程逻辑线路(340)包含场可编程门阵列。
10.一种确定计算向量x与二进制矩阵H乘积的运算最优序列的方法,其特征在于,包含:
a)确定(510)位于包含二进制矩阵A的系统矩阵H∈GF(2)n×m的行空间的低权重向量z的集合S;
b)选择(520)子集,使得对于任何i∈P,存在至少一个z∈S,zi=1;
c)选择(530)子矩阵作为A的列,A在子集中没有指数;
d)估算(540)执行以下步骤所需的算法运算的数量:
对于所述向量x计算第一部分结果以及
计算第二部分结果yP作为所述第一部分结果的元素和所述向量x的元素的线性组合;
e)对于不同子集P,执行(550)步骤b)至d),基于产生最小数量的算法运算的优选子集P,选择计算乘积xA的运算序列。
11.一种确定计算向量与编码矩阵GF(2μ)乘积的运算最优序列的方法,其特征在于,包含:
a)将编码矩阵分解(610)为非二进制矩阵和二进制矩阵的乘积;以及
b)根据前述权利要求10的方法确定(620)所述计算向量与所述二进制矩阵乘积的运算序列。
12.一种恢复部分纠删数据的方法,其特征在于,包含:
探测(710)部分纠删数据的故障配置;
确定(720)编码矩阵M,所述矩阵用以根据所述故障配置恢复数据;
根据前述权利要求11确定(730)计算向量与所述编码矩阵M乘积的运算序列;以及
使用所述确定的运算序列从部分纠删数据中恢复(740)原始数据。
13.一种计算机可读存储介质,用于存储程序代码,其特征在于,所述程序代码包含用于实现权利要求10至12所述方法的指令。
CN201580083827.6A 2015-10-12 2015-10-12 确定矩阵-向量相乘的运算最优序列的优化器 Active CN108140016B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/RU2015/000663 WO2017065628A1 (en) 2015-10-12 2015-10-12 Optimizer for determining an optimal sequence of operations for matrix-vector multiplication

Publications (2)

Publication Number Publication Date
CN108140016A true CN108140016A (zh) 2018-06-08
CN108140016B CN108140016B (zh) 2021-02-23

Family

ID=55969446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580083827.6A Active CN108140016B (zh) 2015-10-12 2015-10-12 确定矩阵-向量相乘的运算最优序列的优化器

Country Status (2)

Country Link
CN (1) CN108140016B (zh)
WO (1) WO2017065628A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176962A (zh) * 2019-12-02 2020-05-19 深圳先进技术研究院 Fpga平台及其性能评估与设计优化的方法、存储介质
US11269973B2 (en) 2020-04-28 2022-03-08 Hewlett Packard Enterprise Development Lp Crossbar allocation for matrix-vector multiplications

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719397B2 (en) 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
NING CHEN: "《Cyclotomic FFTs With Reduced Additive Complexities Based on a Novel Common Subexpression Elimination Algorithm》", 《PUBLISHED IN: IEEE TRANSACTIONS ON SIGNAL PROCESSING》 *
NING CHEN: "《Reduced-Complexity Reed–Solomon Decoders Based on Cyclotomic FFTs》", 《IEEE SIGNAL PROCESSING LETTERS》 *
PETER TRIFONOV: "Matrix-Vector Multiplication via Erasure Decoding", 《11TH INTERNATION SYMPOSIUM ON PROBLEMS ON PROBLEMS OF REDUNDANCY IN INFORMATION AND COMTROL SYSTEMS》 *
朱卫卫: "《基于二进制矩阵的RS编码优化算法》", 《计算机工程》 *
蒋海波: "《二进制范德蒙编码存储策略的低计算量优化方法》", 《四川大学学报(工程科学版)》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176962A (zh) * 2019-12-02 2020-05-19 深圳先进技术研究院 Fpga平台及其性能评估与设计优化的方法、存储介质
CN111176962B (zh) * 2019-12-02 2021-09-10 深圳先进技术研究院 Fpga平台及其性能评估与设计优化的方法、存储介质
US11269973B2 (en) 2020-04-28 2022-03-08 Hewlett Packard Enterprise Development Lp Crossbar allocation for matrix-vector multiplications

Also Published As

Publication number Publication date
WO2017065628A1 (en) 2017-04-20
CN108140016B (zh) 2021-02-23

Similar Documents

Publication Publication Date Title
Tao et al. Significantly improving lossy compression for scientific data sets based on multidimensional prediction and error-controlled quantization
Rashmi et al. Having Your Cake and Eating It Too: Jointly Optimal Erasure Codes for {I/O}, Storage, and Network-bandwidth
Ramamoorthy et al. Universally decodable matrices for distributed matrix-vector multiplication
JP4905161B2 (ja) Raid装置及びガロア体を用いたデータ復元装置
CN102833040B (zh) 解码处理方法、装置及编解码系统
CN104160452B (zh) 用于存储数据和对擦除进行纠正的方法、系统和装置
CN104052576B (zh) 一种云存储下基于纠错码的数据恢复方法
US20150236725A1 (en) Dynamically Configuring Erasure Code Redundancy And Distribution
CN101944067A (zh) 存储数据的方法和存储器系统
JP5486520B2 (ja) セキュア集合関数システム、秘密集合関数装置、セキュア集合関数処理方法、セキュア集合関数プログラム
JP2011041326A5 (zh)
CN108140016A (zh) 确定矩阵-向量相乘的运算最优序列的优化器
KR101526515B1 (ko) 의사 랜덤 수열을 이용하여 데이터를 저장하기 위한 장치
KR20180082927A (ko) 메모리장치의 에러정정장치 및 에러정정방법과, 에러정정장치를 포함하는 메모리 컨트롤러
CN104885056B (zh) 高效高可用性存储系统
Baker et al. Efficient quantum circuit decompositions via intermediate qudits
Fu et al. Short code: An efficient RAID-6 MDS code for optimizing degraded reads and partial stripe writes
Stephens et al. Universal fault tolerant quantum computation on bilinear nearest neighbor arrays
JP5480828B2 (ja) 秘密ソートシステム、秘密ソート装置、秘密ソート方法、秘密ソートプログラム
Yeh et al. Molecular solutions to the binary integer programming problem based on DNA computation
Furber et al. Sparse distributed memory using rank-order neural codes
KR101616347B1 (ko) 범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법
Zhang et al. SA-RSR: A read-optimal data recovery strategy for XOR-coded distributed storage systems
KR101893655B1 (ko) 다중 가상머신 환경에서의 패스쓰루 gpu를 이용한 계층적 raid의 패리티 생성 시스템
Estrada-Galinanes et al. Simple data entanglement layouts with high reliability

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