CN113870918B - 存内稀疏矩阵乘法运算方法、方程求解方法以及求解器 - Google Patents
存内稀疏矩阵乘法运算方法、方程求解方法以及求解器 Download PDFInfo
- Publication number
- CN113870918B CN113870918B CN202111165010.7A CN202111165010A CN113870918B CN 113870918 B CN113870918 B CN 113870918B CN 202111165010 A CN202111165010 A CN 202111165010A CN 113870918 B CN113870918 B CN 113870918B
- Authority
- CN
- China
- Prior art keywords
- matrix
- vector
- binary
- memory array
- sparse matrix
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Operations Research (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种存内稀疏矩阵乘法运算方法、方程求解方法以及求解器,其乘法运算方法包括:对原始稀疏矩阵进压缩形成压缩矩阵,将压缩矩阵的元素表示为补码后将矩阵拆分为二进制的符号位矩阵、数据位矩阵;将拆分后的矩阵分别存入二值存储器阵列;将原始向量中与压缩矩阵相乘的元素表示为补码并进行拆分后以电压形式输入存储器阵列,与存储位的电导相乘后以电流的形式输出,检测输出电流并进行模数转换为二进制数值;将各存储器阵列的乘积结果根据二进制运算规则进行移位与累加,得到原始稀疏矩阵与原始向量的乘积。通过上述运算方法,可以降低存储空间,从而降低电路功耗,且避免出现低电导值,减小计算误差。
Description
技术领域
本发明属于模拟电路领域,更具体地,涉及一种存内稀疏矩阵乘法运算方法、方程求解方法以及求解器。
背景技术
基于各种非易失存储器的存算一体化架构是一种用于处理数据密集型任务的新兴计算架构,由于计算过程直接在存储器中进行,最大限度的降低了运算过程中的数据传输,使得存算一体化架构具有很高的计算能效。目前,存算一体架构已在神经形态计算领域取得了显著的成就,各种基于非易失性存储器搭建的人工神经网络证实了存算一体技术的巨大潜力。
然而,受限于非易失性存储器的阵列结构与固定的矩阵运算范式,目前是将整个原始矩阵阵列完整地映射到阵列的物理结构(即十字交叉结构)。这种映射方式对稠密矩阵很有效,但是稀疏矩阵中有大量的0元素,存储这些0元素有几个缺点:(1)0对矩阵乘法是没有意义的,存储0元素会浪费宝贵的存储空间(2)0在映射过程中会被映射为低电导值,但是电导作为物理量无法等于0,因此,对0元素的存储是有误差的,这使得阵列执行稀疏矩阵乘法时的计算误差增大。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种存内稀疏矩阵乘法运算方法、方程求解方法以及求解器,其目的在于在实现存算一体化的同时节省存储空间并提高计算精度。
为实现上述目的,按照本发明的第一方面,提供了一种存内稀疏矩阵乘法运算方法,其包括:
对原始稀疏矩阵进压缩形成压缩矩阵,将压缩矩阵的元素表示为补码后将矩阵拆分为二进制的符号位矩阵、数据位矩阵;
将拆分后的矩阵分别存入二值存储器阵列;
将原始向量中与压缩矩阵相乘的元素表示为补码并进行拆分后以电压形式输入存储器阵列,与存储位的电导相乘后以电流的形式输出,检测输出电流并进行模数转换为二进制数值;
将各存储器阵列的乘积结果根据二进制运算规则进行移位与累加,得到原始稀疏矩阵与原始向量的乘积。
优选地,对原始稀疏矩阵进压缩,包括,将矩阵中同一行元素中的零元素去除、将非零元素移位压缩至矩阵的同一侧,同一行中被压缩后的非零元素相邻、非零元素之间不含零元素。
优选地,,将拆分后的矩阵分别存入二值存储器阵列,包括:
将向量以电压形式输入存储器阵列,与存储位的电导相乘后以电流的形式输出,包括:
优选地,当原始稀疏矩阵为对角矩阵时,
将拆分后的矩阵分别存入二值存储器阵列,包括:将同一列数据存入存储器阵列的同一字线;
将向量以电压形式输入存储器阵列,与存储位的电导相乘后以电流的形式输出,包括:
将与原始稀疏矩阵非零元素相乘的向量元素同步输入当前存储器阵列的不同位线;
通过检测电路同步检测并列位线的计算结果,得到当前存储阵列与补码向量的乘积结果。
优选地,所述检测电路包括第一晶体管、第二晶体管以及电容,其中,第一晶体管的源极与第二晶体管的漏极相连并与存储器阵列的位线相连,所述电容连接于位线与地之间,所述第一晶体管的漏极接高电平,所述第二晶体管的源极接地;
所述检测输出电流步骤包括:
预放电:将第二晶体管的栅极接入开启电压、第一晶体管的栅极接入低电平以使电容内积累的电荷释放;
读取阶段:将第一晶体管的栅极接入开启电压、第二晶体管的栅极接入低电平,获取位线电流对电容充电,将电流信号转换位电压信号并输出。
优选地,当原始稀疏矩阵为对角矩阵时,在通过检测电路检测计算结果之前,先将第二晶体管的栅极接低电平,并通过所述第一晶体管的栅极输入向量。
优选地,所述存储器阵列的介质呈非线性。
按照本发明的第二方面,提供了一种存内稀疏矩阵方程求解方法,其包括:
步骤S1:确定原始矩阵方程A·x=b,其中,A为原始稀疏矩阵,x为待求解向量,预设原始矩阵方程的向量解xn、解精度tol1和最大迭代次数m1,求残差向量r=b-A·x;
步骤S2:确定残差矩阵方程A·d=r,预设残差矩阵方程的初始化解dn、解精度tol2和最大迭代次数m2;
步骤S3:通过权利要求1至7任一项所述的存内稀疏矩阵乘法运算方法计算A·d,获取A·d的乘积结果r′和当前迭代次数m2′,判断是否满足r′-r<tol2或m′2>m2,若是,则输出d值;若否,则更新解d并重复步骤S3;
步骤S4:根据输出d值更新向量解x=x+d,重新计算残差向量r并获取当前迭代次数m1′,判断是否满足r<tol1或m′1>m1,若是,则输出x,若否,则跳转至步骤S3。
按照本发明的第三方面,提供了一种存内稀疏矩阵方程求解器,其包括:数字计算模块和存内运算模块,所述数字计算模块包括第一处理单元、存储单元和第二处理单元,所述存内运算模块包括非易失性存储器阵列,其中,
第一处理单元用于执行:原始稀疏矩阵A的压缩、补码转换和拆分;预设原始矩阵方程A·x=b的向量解xn、解精度tol1和最大迭代次数m1;计算残差向量r=b-A·x;根据d值更新向量解x=x+d,重新计算残差向量r并获取当前迭代次数m1′,判断是否满足r<tol1或m′1>m1,若是,则输出x;若否,则将更新残差向量r存入存储单元直至足r<tol1或m′1>m1;
存储单元用于将拆分后的矩阵传输至存内运算模块的存储器阵列、将残差向量r传输至第二处理单元以及将d值传输给第一处理单元;
第二处理单元用于确定残差矩阵方程A·d=r,预设残差矩阵方程的初始化解dn、解精度tol2和最大迭代次数m2,以及通过权利要求1至7任一项所述的存内稀疏矩阵乘法运算方法计算A·d,获取A·d的乘积结果r′和当前迭代次数m2′,判断是否满足r′-r<tol2或m′2>m2,若是,则输出d值;若否,则更新解d并重复计算A·d直至满足r′-r<tol2或m′2>m2。
优选地,所述第一处理单元为CPU,所述存储单元为DRAM,所述第二处理单元为FPGA。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,由于在执行稀疏矩阵乘法运算时,将稀疏矩阵进行压缩,去除零元素,然后将压缩后的元素转换为补码,将补码拆分为二进制矩阵后映射进存储器阵列。由于矩阵进行压缩,可以降低存储空间,从而降低电路功耗;且去除零元素,在在映射过程中避免出现低电导值,减小计算误差。同时,在执行稀疏矩阵方程求解时,通过执行数值迭代算法和精度修正算法,其计算精度可调且系统鲁棒性高。
附图说明
图1是本发明一实施例中的存内稀疏矩阵方程求解器的结构示意图;
图2是本发明一实施例中的存内运算模块的结构示意图;
图3是本发明一实施例中的存内稀疏矩阵乘法运算方法地步骤流程图;
图4是本发明一实施例中的非对角矩阵与存储器阵列的映射过程图;
图5为本发明一实施例中的对角矩阵与存储器阵列的映射过程图;
图6为本发明一实施例中的检测电路的结构示意图;
图7为本发明一实施例中的存内稀疏矩阵方程求解方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为了便于理解,首先对存内稀疏方程求解器的结构框架进行介绍。
如图1所示为本发明一实施例中的存内稀疏矩阵方程求解器的结构示意图,存内稀疏矩阵方程求解器包括数字计算模块和存内运算模块,其中,数字计算模块包括第一处理单元PE1、存储单元和第二处理单元PE2,存内运算模块包括非非易失性存储器阵列以及外围电路。第一处理单元PE1为CPU或GPU,存储单元为DRAM,第二处理单元PE2为FPGA。非易失性存储器阵列为十字交叉结构,包含有多条位线(行线)和多条字线(列线)。外部电路包括阵列外部读取电路,移位累加单元与缓存单元,行线、列线驱动单元。其中,读取电路为三端口,输入端1与阵列的行输出端相连,输入端2与行线驱动单元相连,输出端与移位累加单元的输入端相连,移位累加单元的输出端连接到缓存上。行列线驱动单元的输入端与缓存单元连接,输出端与阵列的行、列线连接,用于对阵列施加数据输入。进一步的,参见图2,存内运算模块内部可包含多个存储阵列,每个存储阵列对应有相应的外围电路进行数据的存储和读取。
如图3所述为本申请一实施例中存内稀疏矩阵乘法运算方法地步骤流程图,该乘法运算方法包括:
步骤S110:对原始稀疏矩阵进压缩形成压缩矩阵,将压缩矩阵的元素表示为补码后将矩阵拆分为二进制的符号位矩阵、数据位矩阵。
对于矩阵的压缩、补码转换和矩阵拆分,是数字计算模块中实现,具体可以是在第一处理单元中实现。
为了方便说明,以A·x为例,其中,A为原始稀疏矩阵,x为原始向量。
首先,根据矩阵与向量的运算规则,对原始稀疏矩阵进行压缩,压缩的规则为将矩阵中与向量相乘并累加的同一行中的零元素去除,将非零元素移位压缩至矩阵的同一侧,被压缩后的非零元素相邻,非零元素之间不含零元素。例如,如图4所示,进行压缩后,去除同一行的零元素,将同一行的非零元素压缩至阵列最左侧,并将右侧两列删除,实现列压缩,得到压缩矩阵/>然后将压缩矩阵中的各元素表示为补码,形成补码矩阵,然后将补码矩阵拆分为符号位矩阵和数据位矩阵,若有多个数据位,则拆分成多个数据位矩阵,一般包括高位数据位矩阵和低位数据位矩阵,如图4中仅示出了最末位的数据位矩阵。
在一实施例中,在拆分成符号位矩阵和数据位矩阵后,还可以对符号位矩阵和数据位矩阵进一步压缩,以进一步缩小内存空间。
步骤S120:将拆分后的矩阵分别存入二值存储器阵列。
在拆分成二值矩阵后,将拆分的各矩阵分别映射至二值存储器阵列中,存储时,存储单元的低阻态代表数据‘1’,高阻态代表数据‘0’。
在一具体的实施例中,一拆分后的二值矩阵为将拆分后的矩阵映射至二值存储器阵列,包括:将矩阵/>同一行的数据[ai1,……aim])存入存储器阵列的同一位线、不同行的数据存入存储器阵列的不同位线。如图4所示为当原始稀疏矩阵为非对角矩阵时,将其中一个数据位矩阵映射至二值存储器阵列,其中,位线上的电阻单元对应阵列行元素。如图5所示为当原始稀疏矩阵为对角矩阵时,将其中一个数据位矩阵映射至二值存储器阵列,其中,位线上的电导对应阵列行元素,由此可见,对角矩阵元素存于存储器阵列的同一字线上。
步骤S130:将原始向量中与压缩矩阵相乘的元素表示为补码并进行拆分后以电压形式输入存储器阵列,与存储位的电导相乘后以电流的形式输出,检测输出电流并进行模数转换为二进制数值。
由于存入存储器阵列的矩阵是经过压缩后的矩阵,不能直接跟原始向量相乘,需要提取原始向量中与存入存储器阵列的元素相乘的向量元素输入存储阵列的字线。
在一实施例中,当前存储器阵列中映射的压缩矩阵为每一位线对应阵列的一行元素,将与同一位线上的数据[ai1,……aim]相乘的向量/>同步输入存储器阵列的字线,且不同位线上的数据分开计算,此时,可以进行列输入、行输出。例如,与[a11,……a1m]相乘的向量为/>将/>中的每个元素同步输入字线,得到y1=a11*x11+……a1m*x1m,在输出y1对应的电流时,通过检测电路检测当前位线的输出电流并进行数模转换,得到二进制计算结果y1。然后进行另一位线数据的计算,例如,与[an1,……anm]相乘的向量为/>则将/>中的每个元素同步输入字线,得到yn=an1*xn1+……anm*xnm,依次类推,得到当前存储阵列与向量的乘积结果/>
在一实施例中,如图5所示,当原始稀疏矩阵为对角矩阵时,压缩后的矩阵只有一列,该列数据存入存储器阵列的同一字线上,此时,可以进行行输入、行输入,且并行计算,将与当前存储阵列相乘的向量同步输入当前存储阵列的不同位线,然后通过检测电路同步检测并列位线的计算结果,得到当前存储阵列与补码向量的乘积结果。
在一实施例中,如图6所示,检测电路包括晶体管1、晶体管2以及电容CP,其中,晶体管1的源极与晶体管2的漏极相连并与存储器阵列的位线BL相连,所述电容CP连接于位线BL输出端与地之间,晶体管1的漏极接高电平晶体管2的源极接地。优选的,晶体管1和晶体管2为NMOS场效应晶体管。
检测输出电流步骤包括:
预放电:将晶体管2的栅极接入开启电压、晶体管1的栅极接入低电平以使电容内积累的电荷释放;
读取阶段:将晶体管1的栅极接入开启电压、晶体管2的栅极接入低电平,获取位线电流对电容充电,将电流信号转换位电压信号并输出。
在一实施例中,如图5所示,当原始稀疏矩阵为对角矩阵时,在通过检测电路检测计算结果之前,先将晶体管2的栅极接低电平,并通过所述晶体管1的栅极向位线输入向量。
因此,为实现针对任意类型的稀疏矩阵乘法的优化,降低面积开销,提升计算能效,上述读取单元支持两种工作模式,当原始稀疏矩阵为对角矩阵时,读取电路处于工作模式1,通过上述向位线输入向量并检测位线的输出;当原始稀疏矩阵为非对角矩阵时,读取电路处于工作模式2,通过字线输入向量并检测位线的输出。以工作模式2为例,电路工作时的时序图如图6所示。预放电时,晶体管2的栅极G2输入晶体管的开启电压Vth,其余输入口输入0电平。此时寄生电容内积累的电荷会在短时间内被释放,然后电路进入读取阶段。读取时,G 1输入Vth,G 2输入0电平。行线电压VBL由于对阵列输入状态不同输出不同的电平,最终电平输出由比较器转换为数字输出。
在一实施例中,通过读取电路读取电压信号后,通过电压比较器将电压模拟信号转换为数字信号。
步骤S140:将各存储器阵列的乘积结果根据二进制运算规则进行移位与累加,得到原始稀疏矩阵与原始向量的乘积。
在一实施例中,如图2所示,计算结果由阵列读取单元进行读取,传输给移位累加单元进行移位和累加操作,将最终计算结果传输给缓存单元进行暂存。数据输入时,按照低位数据,高位数据,符号位的顺序进行。位运算结果根据二进制运算规则进行移位和累加后得到正确的稀疏矩阵运算结果并存入缓存单元。其中,符号位数据与高位/低位数据的乘法结果需要取负。
在一实施例中,上述存储器为非线性存储器,包括自整流阻变存储器、二极管+阻变存储器(1D1R)、选通管+阻变存储器(1S1R)、铁电隧道结存储器等。
本申请中,由于在执行稀疏矩阵乘法运算时,将稀疏矩阵进行压缩,去除零元素,然后将压缩后的元素转换为补码,将补码拆分为二进制矩阵后映射进存储器阵列,配合特定的矩阵算法,实现存储阵列内压缩矩阵的乘积运算。由于矩阵进行压缩,可以降低存储空间,从而降低电路功耗;且去除零元素,在在映射过程中避免出现低电导值,减小计算误差。
本申请还涉及一种存内稀疏矩阵方程求解方法,如图7所示为存内稀疏矩阵方程求解方法的流程图,该方法包括:
步骤S1:确定原始矩阵方程A·x=b,其中,A为原始稀疏矩阵,x为待求解向量,预设原始矩阵方程的向量解xn、解精度tol1和最大迭代次数m1,求残差向量r=b-A·x。
此步骤在第一处理单元中进行,求得的残差向量r通过存储单元输入第二处理单元,第一单元还将原始稀疏矩阵A存入存储器阵列。
步骤S2:确定残差矩阵方程A·d=r,预设残差矩阵方程的初始化解dn、解精度tol2和最大迭代次数m2。
此步骤在第二处理单元中进行。
步骤S3:通过存内稀疏矩阵乘法运算方法计算A·d,获取A·d的乘积结果r′和当前迭代次数m2′,判断是否满足ε=r′-r<tol2或m′2>m2,若是,则输出d值;若否,则更新解d并重复步骤S3。
此步骤由第二处理单元控制存内运算模块执行,输出d值由第二处理单元通过存储单元反馈给第一处理单元。
步骤S4:根据输出d值更新向量解x=x+d,重新计算残差向量r并获取当前迭代次数m1′,判断是否满足r<tol1或m′1>m1,若是,则输出x,若否,则跳转至步骤S3。
此步骤在第一处理单元中进行,当不满足判断条件时,则将更新的残差向量r输入第二处理单元并继续计算d值。
具体的,上述更新解d,根据具体使用的数学方法决定,如果使用共轭梯度法就按共轭梯度法的更新方式进行更新,如果使用Jacoboi方法就根据Jacobi方法进行更新。
本申请还涉及一种存内稀疏矩阵方程求解器,如图1所示,存内稀疏矩阵方程求解器,包括:数字计算模块和存内运算模块,所述数字计算模块包括第一处理单元、存储单元和第二处理单元,所述存内运算模块包括非易失性存储器阵列,其中,
第一处理单元用于执行:原始稀疏矩阵A的压缩、补码转换和拆分;预设原始矩阵方程A·x=b的向量解xn、解精度tol1和最大迭代次数m1;计算残差向量r=b-A·x;根据d值更新向量解x=x+d,重新计算残差向量r并获取当前迭代次数m1′,判断是否满足r<tol1或m′1>m1,若是,则输出x;若否,则将更新残差向量r存入存储单元直至足r<tol1或m′1>m1;
存储单元用于将拆分后的矩阵传输至存内运算模块的存储器阵列、将残差向量r传输至第二处理单元以及将d值传输给第一处理单元;
第二处理单元用于确定残差矩阵方程A·d=r,预设残差矩阵方程的初始化解dn、解精度tol2和最大迭代次数m2,以及通过存内稀疏矩阵乘法运算方法计算A·d,获取A·d的乘积结果r′和当前迭代次数m2′,判断是否满足r′-r<tol2或m′2>m2,若是,则输出d值;若否,则更新解d并重复计算A·d直至满足r′-r<tol2或m′2>m2。
上述存内稀疏矩阵方程求解器用于实现上述存内稀疏矩阵方程求解方法,以下简单介绍通过上述存内稀疏矩阵方程求解器执行上述存内稀疏矩阵方程求解方法的过程:
第一处理单元将数学问题转换为矩阵方程的形式,记为A·x=b,并将将原始稀疏矩阵A存入存储器阵列,同时预设原始矩阵方程的向量解xn、解精度tol1和最大迭代次数m1,求当前残差向量r=b-A·x。第一处理单元还将求得的残差向量r通过存储单元反馈第二处理单元。第二处理单元根据获取的残差向量r建立残差矩阵方程A·d=r,并且预设残差矩阵方程的初始化解dn、解精度tol2和最大迭代次数m2。第二处理单元还控制存内运算模块计算A·d,并获取A·d的乘积结果r′和当前迭代次数m2′,判断是否满足ε=r′-r<tol2或m′2>m2,若是,则通过存储单元将当前d值反馈给第一处理单元;若否,则更新解d并重复执行A·d,直至满足ε=r′-r<tol2或m′2>m2。当第一处理单元接收到反馈的d值后,根据反馈的d值更新向量解x=x+d,并重新计算残差向量r,判断是否满足r<tol1或m′1>m1,若是,则输出x,若否,则将更新的残差向量r通过存储单元反馈给第二处理单元,第二处理单元根据更新的残差向量r继续控制存内运算模块计算A·d,直至反馈回第一处理单元的d值使残差向量r满足r<tol1或m′1>m1为止。
本申请提供了一种存内稀疏矩阵方程求解器,基于数值迭代算法和非易失性存储器的存算一体化特性,包含数字计算模块和存内计算模块,由非易失性存储器阵列执行精度可调的稀疏矩阵乘法运算,由外部控制单元执行数值迭代算法和精度修正算法的进行,该求解器可广泛适用于科学、工程学问题中稀疏线性方程组的求解、定态/时变偏微分方程的求解、矩阵特征值及特征向量的求等任务,系统可重构性较高
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种存内稀疏矩阵乘法运算方法,其特征在于,包括:
对原始稀疏矩阵进行压缩形成压缩矩阵,将压缩矩阵的元素表示为补码后将矩阵拆分为二进制的符号位矩阵、数据位矩阵;
将拆分后的二进制的符号位矩阵、数据位矩阵分别存入二值非易失性存储器阵列,二值非易失性存储器阵列的各存储位的不同阻态代表所存入矩阵的对应位置的数据,存储单元的低阻态代表数据‘1’,高阻态代表数据‘0’;
将原始向量中与压缩矩阵相乘的元素表示为补码并进行拆分后以电压形式输入二值非易失性存储器阵列,与存储位的电导相乘后以电流的形式输出,检测输出电流并进行模数转换为二进制数值;
将各二值非易失性存储器阵列的乘积结果根据二进制运算规则进行移位与累加,得到原始稀疏矩阵与原始向量的乘积。
2.如权利要求1所述的存内稀疏矩阵乘法运算方法,其特征在于,对原始稀疏矩阵进行压缩,包括,将矩阵中同一行元素中的零元素去除、将非零元素移位压缩至矩阵的同一侧,同一行中被压缩后的非零元素相邻、非零元素之间不含零元素。
3.如权利要求1所述的存内稀疏矩阵乘法运算方法,其特征在于,将拆分后的矩阵分别存入二值非易失性存储器阵列,包括:
将向量以电压形式输入二值非易失性存储器阵列,与存储位的电导相乘后以电流的形式输出,包括:
4.如权利要求1所述的存内稀疏矩阵乘法运算方法,其特征在于,当原始稀疏矩阵为对角矩阵时,
将拆分后的矩阵分别存入二值非易失性存储器阵列,包括:将同一列数据存入二值非易失性存储器阵列的同一字线;
将向量以电压形式输入二值非易失性存储器阵列,与存储位的电导相乘后以电流的形式输出,包括:
将与原始稀疏矩阵非零元素相乘的向量元素同步输入当前二值非易失性存储器阵列的不同位线;
通过检测电路同步检测并列位线的计算结果,得到当前二值非易失性存储器阵列与补码向量的乘积结果。
5.如权利要求3或4所述的存内稀疏矩阵乘法运算方法,其特征在于,所述检测电路包括第一晶体管、第二晶体管以及电容,其中,第一晶体管的源极与第二晶体管的漏极相连并与二值非易失性存储器阵列的位线相连,所述电容连接于位线与地之间,所述第一晶体管的漏极接高电平,所述第二晶体管的源极接地;
所述检测输出电流步骤包括:
预放电:将第二晶体管的栅极接入开启电压、第一晶体管的栅极接入低电平以使电容内积累的电荷释放;
读取阶段:将第一晶体管的栅极接入开启电压、第二晶体管的栅极接入低电平,获取位线电流对电容充电,将电流信号转换位电压信号并输出。
6.如权利要求5所述的存内稀疏矩阵乘法运算方法,其特征在于,当原始稀疏矩阵为对角矩阵时,在通过检测电路检测计算结果之前,先将第二晶体管的栅极接低电平,并通过所述第一晶体管的栅极输入向量。
7.如权利要求1所述的存内稀疏矩阵乘法运算方法,其特征在于,所述二值非易失性存储器阵列的介质呈非线性。
8.一种存内稀疏矩阵方程求解方法,其特征在于,包括:
步骤S1:确定原始矩阵方程A·x=b,其中,A为原始稀疏矩阵,x为待求解向量,预设原始矩阵方程的向量解xn、解精度tol1和最大迭代次数m1,求残差向量r=b-A·x;
步骤S2:确定残差矩阵方程A·d=r,预设残差矩阵方程的初始化解dn、解精度tol2和最大迭代次数m2;
步骤S3:通过权利要求1至7任一项所述的存内稀疏矩阵乘法运算方法计算A·d,获取A·d的乘积结果r′和当前迭代次数m2′,判断是否满足r′-r<tol2或m′2>m2,若是,则输出d值;若否,则更新解d并重复步骤S3;
步骤S4:根据输出d值更新向量解x=x+d,重新计算残差向量r并获取当前迭代次数m1′,判断是否满足r<tol1或m′1>m1,若是,则输出x,若否,则跳转至步骤S3。
9.一种存内稀疏矩阵方程求解器,其特征在于,包括:数字计算模块和存内运算模块,所述数字计算模块包括第一处理单元、存储单元和第二处理单元,所述存内运算模块包括二值非易失性存储器阵列,其中,
第一处理单元用于执行:原始稀疏矩阵A的压缩、补码转换和拆分;预设原始矩阵方程A·x=b的向量解xn、解精度tol1和最大迭代次数m1;计算残差向量r=b-A·x;根据d值更新向量解x=x+d,重新计算残差向量r并获取当前迭代次数m1′,判断是否满足r<tol1或m′1>m1,若是,则输出x;若否,则将更新残差向量r存入存储单元直至满足r<tol1或m′1>m1;
存储单元用于将拆分后的矩阵传输至存内运算模块的二值非易失性存储器阵列、将残差向量r传输至第二处理单元以及将d值传输给第一处理单元;
第二处理单元用于确定残差矩阵方程A·d=r,预设残差矩阵方程的初始化解dn、解精度tol2和最大迭代次数m2,以及通过权利要求1至7任一项所述的存内稀疏矩阵乘法运算方法计算A·d,获取A·d的乘积结果r′和当前迭代次数m2′,判断是否满足r′-r<tol2或m′2>m2,若是,则输出d值;若否,则更新解d并重复计算A·d直至满足r′-r<tol2或m′2>m2。
10.如权利要求9所述的存内稀疏矩阵方程求解器,其特征在于,所述第一处理单元为CPU,所述存储单元为DRAM,所述第二处理单元为FPGA。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111165010.7A CN113870918B (zh) | 2021-09-30 | 2021-09-30 | 存内稀疏矩阵乘法运算方法、方程求解方法以及求解器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111165010.7A CN113870918B (zh) | 2021-09-30 | 2021-09-30 | 存内稀疏矩阵乘法运算方法、方程求解方法以及求解器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113870918A CN113870918A (zh) | 2021-12-31 |
CN113870918B true CN113870918B (zh) | 2023-03-28 |
Family
ID=79001459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111165010.7A Active CN113870918B (zh) | 2021-09-30 | 2021-09-30 | 存内稀疏矩阵乘法运算方法、方程求解方法以及求解器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113870918B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572011A (zh) * | 2014-12-22 | 2015-04-29 | 上海交通大学 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI118612B (fi) * | 2002-11-06 | 2008-01-15 | Nokia Corp | Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite |
US7953958B2 (en) * | 2006-09-29 | 2011-05-31 | Mediatek Inc. | Architecture for joint detection hardware accelerator |
US10489063B2 (en) * | 2016-12-19 | 2019-11-26 | Intel Corporation | Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication |
US10146738B2 (en) * | 2016-12-31 | 2018-12-04 | Intel Corporation | Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data |
US10572568B2 (en) * | 2018-03-28 | 2020-02-25 | Intel Corporation | Accelerator for sparse-dense matrix multiplication |
US20200210517A1 (en) * | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
-
2021
- 2021-09-30 CN CN202111165010.7A patent/CN113870918B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572011A (zh) * | 2014-12-22 | 2015-04-29 | 上海交通大学 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113870918A (zh) | 2021-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11714749B2 (en) | Efficient reset and evaluation operation of multiplying bit-cells for in-memory computing | |
US20210365241A1 (en) | Multiplication and accumulation circuit based on radix-4 booth code and differential weight | |
CN111652363B (zh) | 存算一体电路 | |
CN109800876B (zh) | 一种基于NOR Flash模块的神经网络的数据运算方法 | |
US20240112029A1 (en) | Acceleration of model/weight programming in memristor crossbar arrays | |
CN111563599B (zh) | 一种量子线路的分解方法、装置、存储介质及电子装置 | |
CN107633298B (zh) | 一种基于模型压缩的递归神经网络加速器的硬件架构 | |
CN110647983A (zh) | 一种基于存算一体器件阵列的自监督学习加速系统及方法 | |
WO2019100036A1 (en) | Memristive neural network computing engine using cmos-compatible charge-trap-transistor (ctt) | |
US20200159810A1 (en) | Partitioning sparse matrices based on sparse matrix representations for crossbar-based architectures | |
CN114707647B (zh) | 适用于多精度神经网络的精度无损存算一体装置及方法 | |
CN113342126B (zh) | 一种基于ReRAM的可重构电流镜加权电路 | |
CN112181895B (zh) | 可重构架构、加速器、电路部署和计算数据流方法 | |
CN113314163A (zh) | 存储器器件、计算器件以及计算方法 | |
CN114937470B (zh) | 基于多比特sram单元的定点全精度存内计算电路 | |
CN115390789A (zh) | 基于磁隧道结计算单元的模拟域全精度存内计算电路及方法 | |
CN113870918B (zh) | 存内稀疏矩阵乘法运算方法、方程求解方法以及求解器 | |
CN115394336A (zh) | 一种存算fpga架构 | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
US20220075600A1 (en) | Memory device and operation method thereof | |
CN114822638A (zh) | 计算器件以及计算方法 | |
CN110262771B (zh) | 一种基于mos晶体管的基本运算电路及其扩展电路 | |
CN115658013B (zh) | 向量乘加器的rom存内计算装置和电子设备 | |
Huang et al. | Automated Quantization Range Mapping for DAC/ADC Non-linearity in Computing-In-Memory | |
CN113672860B (zh) | 一种正负数兼容的存内运算方法、乘加运算装置及其应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |