基于非易失性存储器阵列的复数点乘运算的方法及系统

文档序号:29424174发布日期:2022-03-26 14:47阅读:420来源:国知局
基于非易失性存储器阵列的复数点乘运算的方法及系统

1.本发明涉及一种存内计算,尤其涉及一种基于非易失性存储器阵列的复数点乘运算的方法及系统。


背景技术:

2.随着社会对算力需求的剧增,现有的计算架构遭遇功耗墙、性能墙、内存墙、摩尔定律趋缓等挑战,迫切需要计算架构的创新,解决路径主要体现在两点:突破计算架构和打破存储墙,而存内计算就是一种属于打破存储墙的技术。
3.传统的冯诺伊曼架构是计算机的经典架构,同时也是目前计算机以及处理器芯片的主流架构。在冯诺伊曼架构中,计算(处理)单元和内存完全分离,在计算过程中,计算单元根据指令从内存中读取数据,在计算单元中完成计算,结果再存回内存。而存内计算与传统的冯诺伊曼架构的主要不同就是把计算嵌入到内存里面去,内存同时担任计算和存储的任务,在存储/读取数据的同时完成运算。存内计算的集成度高、功耗低等特性使其有望成为未来嵌入式人工智能(如智能iot)的重要基础技术。
4.利用现有的存内计算技术进行矩阵向量点乘运算,无论是向量还是矩阵,都属于实数域范畴,所以现有的存内计算技术不具备在复数域上进行并行矩阵向量点乘运算的能力,这一完备性的缺失大大限制了存内计算技术的适用范围和应用场景。


技术实现要素:

5.发明目的:本发明旨在提供一种基于非易失性存储器阵列的复数点乘运算的方法及系统,解决无法在复数域上实现并行矩阵向量点乘运算的问题。
6.技术方案:本发明所述的基于非易失性存储器阵列的复数点乘运算的方法,包括以下步骤:
7.(1)n维复数输入向量x转化为2n维实数向量x;
8.(2)m*n维的复数输入矩阵h转化为2m*2n维的实数矩阵h;
9.(3)根据矩阵h设计存内计算硬件阵列;
10.(4)在阵列上实现矩阵向量点乘运算;
11.(5)将2m维实数输出向量y转化为m维复数输出向量y。
12.步骤(1)中包括以下步骤:
13.(11)令输入向量x的第a个复数向量元xa=x
ar
+jx
ai

14.其中,x
ar
为xa的实部,x
ai
为xa的虚部,j为虚数单位,从1到n遍历a;
15.(12)将x
ar
作为实数向量x的第2a-1个向量元x
2a-1
,将x
ai
作为实数向量x的第2a个向量元x
2a

16.步骤(2)中包括以下步骤:
17.(21)令m*n维的复数输入矩阵h的每个复数矩阵元h
bc
=h
bcr
+jh
bci

18.其中,h
bc
表示矩阵h第b行第c列的矩阵元,h
bcr
为h
bc
的实部,h
bci
为h
bc
的虚部,j为虚
数单位;从1到m遍历b,从1到n遍历c;
19.(22)将h
bcr
作为矩阵h第2b-1行第2c-1列的矩阵元h
2b-1,2c-1
和第2b行第2c列的矩阵元h
2b,2c
,将h
bci
作为矩阵h第2b行第2c-1列的矩阵元h
2b,2c-1
,将-h
bci
作为矩阵h第2b-1行第2c列的矩阵元h
2b-1,2c

20.步骤(3)中包括以下步骤:
21.(31)矩阵h取转置得到决定阵列结构的矩阵g,即g=h
t

22.(32)由2n*2m个存储器单元构成2n行2m列的阵列,其中第d行第e列的存储器单元的电导由矩阵g的矩阵元g
de
决定,其中g
de
表示矩阵g第d行第e列的矩阵元;从1到2n遍历d,从1到2m遍历e。
23.步骤(4)中包括以下步骤:
24.(41)令阵列第g行输入等于2n维实数输入向量x的第g个向量元xg大小的电压;从1到2n遍历g;
25.(42)获得第k列电流大小作为2m维实数输出向量y的第k个向量元yk,从1到2m遍历k。
26.步骤(5)中将2m维实数输出向量y的第2f-1个向量元记为y
fr
,第2f个向量元记为y
fi
,用y的第2f-1个实数向量元y
fr
和第2f个实数向量元y
fi
组合成一个复数yf=y
fr
+jy
fi

27.其中,y
fr
为yf的实部,y
fi
为yf的虚部,j为虚数单位;然后将yf作为复数输出向量y的第f个向量元,从1到m遍历f。
28.本发明所述的基于非易失性存储器阵列的复数点乘运算的系统,包括输入向量转化单元、输入矩阵转化单元、存内计算阵列单元、点乘运算单元和输出向量转化单元;
29.所述输入向量转化单元将n维复数输入向量x转化为2n维实数向量x;所述输入矩阵转化单元将m*n维的复数输入矩阵h转化为2m*2n维的实数矩阵h;所述存内计算阵列单元根据矩阵h设计;所述点乘运算单元在阵列上实现x和h矩阵向量点乘运算,获得2m维实数输出向量y;所述输出向量转化单元将2m维实数输出向量y转化为m维复数输出向量y。
30.所述存内计算阵列单元为非易失性存储器阵列,所述阵列结构矩阵g等于矩阵h的转置,即g=h
t

31.所述输入向量转换单元包括可编程多通道信号源,对所述信号源编程,当计算机输入n维复数向量x时,信号源并行输出2n路直流电压,第2k-1路电压的大小等于x
kr
,第2k路电压大小等于x
ki
,从1到n遍历k;第k路的直流电压作为存内计算硬件阵列第k行的输入电压。
32.所述输出向量转换单元包括可编程多通道示波器,对所述示波器编程,当示波器接收到2m路直流电流后,在计算机上输出一m维复数向量y。
33.有益效果:与现有技术相比,本发明具有如下显著优点:基于存内计算硬件阵列完成了复数域上任意维的并行矩阵向量点乘运算,成功地将矩阵向量点乘运算从实数域推广到了复数域上,扩大了其适用范围,且这种方法具有普适性。
附图说明
34.图1为本发明方法的示意图;
35.图2为本发明系统的示意图;
36.图3为本发明实施例的示意图。
具体实施方式
37.下面结合附图对本发明的技术方案作进一步说明。
38.由图1可知,本发明所述基于非易失性存储器阵列的复数点乘运算的方法,其特征在于:包括以下步骤:
39.步骤(1)将n维复数输入向量x转化为2n维实数向量x;具体包括以下步骤:
40.(11)令输入向量x的第a个复数向量元xa=x
ar
+jx
ai

41.其中,x
ar
为xa的实部,x
ai
为xa的虚部,j为虚数单位,从1到n遍历a;
42.(12)将x
ar
作为实数向量x的第2a-1个向量元x
2a-1
,将x
ai
作为实数向量x的第2a个向量元x
2a

43.步骤(2)将m*n维的复数输入矩阵h转化为2m*2n维的实数矩阵h;具体包括以下步骤:
44.(21)令m*n维的复数输入矩阵h的每个复数矩阵元h
bc
=h
bcr
+jh
bci

45.其中,h
bc
表示矩阵h第b行第c列的矩阵元,h
bcr
为h
bc
的实部,h
bci
为h
bc
的虚部,j为虚数单位;从1到m遍历b,从1到n遍历c;
46.(22)将h
bcr
作为矩阵h第2b-1行第2c-1列的矩阵元h
2b-1,2c-1
和第2b行第2c列的矩阵元h
2b,2c
,将h
bci
作为矩阵h第2b行第2c-1列的矩阵元h
2b,2c-1
,将-h
bci
作为矩阵h第2b-1行第2c列的矩阵元h
2b-1,2c

47.步骤(3)根据矩阵h设计存内计算硬件阵列;具体包括以下步骤:
48.(31)矩阵h取转置得到决定阵列结构的矩阵g,即g=h
t

49.(32)由2n*2m个存储器单元构成2n行2m列的阵列,其中第d行第e列的存储器单元的电导由矩阵g的矩阵元g
de
决定,其中g
de
表示矩阵g第d行第e列的矩阵元;从1到2n遍历d,从1到2m遍历e。
50.步骤(4)在阵列上实现矩阵向量点乘运算;具体包括以下步骤:
51.(41)令阵列第g行输入等于2n维实数输入向量x的第g个向量元xg大小的电压;从1到2n遍历g;
52.(42)获得第k列电流大小作为2m维实数输出向量y的第k个向量元yk,从1到2m遍历k。
53.步骤(5)将2m维实数输出向量y转化为m维复数输出向量y。
54.将2m维实数输出向量y的第2f-1个向量元记为y
fr
,第2f个向量元记为y
fi
,用y的第2f-1个实数向量元y
fr
和第2f个实数向量元y
fi
组合成一个复数yf=y
fr
+jy
fi
,其中,y
fr
为yf的实部,y
fi
为yf的虚部,j为虚数单位;然后将yf作为复数输出向量y的第f个向量元,从1到m遍历f。
55.由图2可知,本发明所述的基于非易失性存储器阵列的复数点乘运算的系统,包括输入向量转化单元、输入矩阵转化单元、存内计算阵列单元、点乘运算单元和输出向量转化单元;
56.所述输入向量转化单元将n维复数输入向量x转化为2n维实数向量x;所述输入矩阵转化单元将m*n维的复数输入矩阵h转化为2m*2n维的实数矩阵h;所述存内计算阵列单元
根据矩阵h设计;所述点乘运算单元在阵列上实现x和h矩阵向量点乘运算,获得2m维实数输出向量y;所述输出向量转化单元将2m维实数输出向量y转化为m维复数输出向量y。所述点乘运算单元为非易失性存储器阵列,阵列结构矩阵g等于矩阵h的转置,即g=h
t

57.本实施例中,输入向量转化单元由一可编程多通道信号源实现,对信号源进行编程,当计算机输入一复数向量时,信号源并行输出2n路直流电压,第2k-1路电压的大小等于x
kr
,第2k路电压大小等于x
ki
,从1到n遍历k。
58.第k路的直流电压作为存内计算硬件阵列第k行的输入电压。
59.本实施例中,输出向量转化单元由一可编程多通道示波器实现,对示波器进行编程,当示波器接收到2m路直流电流后,在计算机上输出一m维复数向量y:
[0060][0061]
其中y
sr
为第2s-1路电流的大小,y
si
为第2s路电流的大小,从1到m遍历s。
[0062]
其中,第s路的直流电流即为存内计算硬件阵列第s列的输出电流。
[0063]
如图3所示,本实施例中实现了一个四行四列的存内计算硬件阵列,该阵列对应的复数点乘运算过程如下:
[0064]
步骤(1)输入向量的变形。
[0065]
二维复数输入向量x设为
[0066][0067]
则变形后的四维实数向量x为
[0068][0069]
步骤(2)输入矩阵的变形:
[0070]
2*2维的复数输入矩阵h设为
[0071][0072]
则变形后的4*4维的实数矩阵h为
[0073][0074]
步骤(3)存内计算硬件阵列的设计:
[0075]
对矩阵h取转置得到决定阵列结构的矩阵g,即
[0076][0077]
步骤(4)在阵列上进行矩阵向量点乘运算:
[0078]
利用工作在实数域的存内计算硬件阵列来并行计算实数向量x和实数矩阵h的点积。
[0079]
步骤(5)输出向量的变形:
[0080]
四维的实数输出向量y为
[0081][0082]
则变形后的二维复数输出向量y为
[0083][0084]
通过在上述存内计算硬件阵列上加并行电压、得并行电流的方式,实现了复数域上的矩阵向量点乘运算。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1