P11 P12 P13 P14
Transcript of P11 P12 P13 P14
Pulse 1 Pulse 2 Pulse 3 Pulse 4
Pulse 5
Pulse 6
Pulse 7
a11a12a13a14
a21a22a23a24
a31a32a33a34
a41a42a43a44
c11c12c13c14
c21c22c23c24
c31c32c33c34
c41c42c43c44
b44
b43
b42
b41
b34
b33
b32
b31
b24
b23
b22
b21
b14
b13
b12
b11
d44
d43
d42
d41
d34
d33
d32
d31
d24
d23
d22
d21
d14
d13
d12
d11
P11 P12 P13 P14
P21 P22 P23 P24
P31 P32 P33 P34
P41 P42 P43 P44
ORDINARY GEUNIT
n x n+1n x n+1RANDOMIZATION
UNIT
BACKSUBSTITUTION
UNIT
n x n+1 n
11
1-1
11
1-1
1
1
11
i
-1-i
1
+
+
+
+
+
+
+
+
*
*
*
*
x1
x2
x3
x4
X1
X2
X3
X4
d1
d3
d2
d4
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
b1
b2
b3
b4
u11 u12 u13 u14 y1
l21 u22 u23 u24 y2
l31 l32 u33 u34 y3
l41 l42 l43 y4u44
1
+
+
+
+
+
+
+
+
*
*
*
*
d1
d2
d3
d4
a11 a12 a13 a14 b1
a41 a42 a43 a44 b4
a21 a22 a23 a24 b2
b3 a34
a33 a32
a31
x1
x2
x3
x4
Matrix Algorithm
3D-matrix Format
Applying array computational rules
Mapping symbolic statements to 3D-dependency graph
Removing bidirectional flows from FPG
Grouping MMG by a rectangular prism along the three axes
Multimeshdata-dependency
graph(MMG)
Systolic computational graphs
1
2
3
4
Symbolically executing the algorithm
Symbolic statements
5
Manually done
Fully automated
Orthogonaldata-dependency
graph(ODG)
for k := 1 to 3 do begin for j := k to 4 do U[k,j,k] := A[k,j,k-1]; for i := k+1 to 3 do L[i,k,k] := A[i,k,k-1]/U[k,k,k]; for i := k+1 to 3 do for j := k+1 to 4 do A[i,j,k] := A[i,j,k-1] - L[i,k,k]*U[k,j,k]; end
2.
3.
a) Ordinary GE code after instantiating n to 3
b) Symbolic statements generated after 1st, 2nd and 3rd iterations
k = 3
U[3,3,3] := A[3,3,2]1.(19)
k = 2
U[2,3,2] := A[2,3,1]U[2,2,2] := A[2,2,1]
1.
L[3,2,2] := A[3,2,1] / U[2,2,2]2.
A[3,3,2] := A[3,3,1] - L[3,2,2]*U[2,3,2]3.
(10)(11)(12)
(13)
k = 1
L[2,1,1] := A[2,1,0] / U[1,1,1]L[3,1,1] := A[3,1,0] / U[1,1,1]
A[2,2,1] := A[2,2,0] - L[2,1,1]*U[1,2,1]A[2,3,1] := A[2,3,0] - L[2,1,1]*U[1,3,1]
A[3,2,1] := A[3,2,0] - L[3,1,1]*U[1,2,1]A[3,3,1] := A[3,3,0] - L[3,1,1]*U[1,3,1]
1.
2.
3.
(1)(2)(3)(4)
(5)(6)
(7)(8)(9)
c) Orthogonal data-dependency graph
x
y
z1 2 3
6
8
11
13 14
16 17
19
A11
A21
A31
A12
A22
A32
A13
A23
A33
5 7
10
broadcast pathscrossing nodes
1.
A[3,4,1] := A[3,4,0] - L[3,1,1]*U[1,4,1]
A[2,4,1] := A[2,1,0] - L[2,1,1]*U[1,4,1]
U[1,1,1] := A[1,1,0]U[1,2,1] := A[1,2,0]U[1,3,1] := A[1,3,0]U[1,4,1] := A[1,3,0]
U[2,4,2] := A[2,4,1]U[3,3,3] := A[3,4,2]
A[3,4,2] := A[3,4,1] - L[3,2,2]*U[2,4,2]
(14)(15)
(16)
(17)
(20)
(18)
18
A14
A24
A34
4
9
12
15
20
for k := 1 to 3 do begin j := n-k+1 T[j,4,k] := T[j,4,k-1]/T[j,j,0] for i := j-1 downto 1 do begin T[i,4,k] := T[i,4,k-1] - T[i,j,0]*T[j,4,k] end end
(a) Back substitution after instantiating n to 3
x
y
z
1
2
3
T11 T12
T22
T13
T23
T33
T14
T24
T34
4
crossing node
5
6
T[3,4,1] := T[3,4,0]/T[3,3,0]T[2,4,1] := T[2,4,0] - T[2,3,0]*T[3,4,1]T[1,4,1] := T[1,4,0] - T[1,3,0]*T[3,4,1]
(1)(2)(3)
T[2,4,2] := T[2,4,1]/T[2,2,0]T[1,4,2] := T[1,4,1] - T[1,2,0]*T[2,4,2]
(4)(5)
T[1,4,3] := T[1,4,2]/T[1,1,0](6)
k=1 k=2 k=3
(b) Symbolic statements generated after 1st, 2nd, and 3rd iterations
(c) Orthogonal Data-Dependency Graph
M1
M2
M3
M4
M5
M6
M7
M8
M9
M10
M11
M12
M1
M2 M3
M4 M5 M6
M1 M2 M3 M4
M5 M6 M7
M8 M9