Upload
kristofer-waddell
View
226
Download
0
Embed Size (px)
Citation preview
Outline
Introduction
Modeling Formalisms
ELN(Electrical Linear Networks)
Solve Ordinary Differential Equation
Solve Eln-Cluster Workflow
SystemC Kernel Solver
Performance
SystemC Kernel Solver
Eln-cluster Initialization
Module(r, l, c …) : modules
Node(sca_terminal, sca_node …) : equations
Sparse Matrix
Spcode
Solve Eln-Cluster Workflow
Solve Differential Equation
ana_solvDATA (Sdata, R,
X)
Next Cluster
Next Timestamp
Cluster?
Timestamp?
…
Modify ana_solv to GPU
Every eln-cluster
Every time stamp
Workflow
Copy matrix data to GPU
Execute ana_solv by GPU
Copy result data to host
ana_solvDATA (Sdata, R,
X)
GPU ana_solvDATA (Sdata, R,
X)
Solve Eln-Cluster Workflow
Solve Differential Equation
ana_solvDATA (Sdata, R,
X)
Next Cluster
Next Timestamp
Cluster?
Timestamp?
…
GPU ana_solvDATA (Sdata, R,
X)
Performance
The result is correct
No speed up
200 module of one cluster : 75 ms (CPU)
200 module of one cluster : 165 ms (GPU)
Euler’s Method
Question : y’ = f(x, y) , x0 < x < b , y(x0) = y0 , h is constant
xi = x0 + i*h ; (i = 0 1 2 ….)
yi = y(xi) ~ Yi (Yi is result)
yn+1 = yn + h*f(yn, xn)
Example : y’ = y , y(0) = 1 , h = 0.5
Solve :
y1 = y(0) + y’(0)*h = 1 + 1*0.5 = 1.5
y2 = …
Yi = exp(x) => Y(0.5) = 1.649…
1.5 vs 1.649
Backward Euler Method
Question : y’ = f(x, y) , x0 < x < b , y(x0) = y0 , h is constant
xi = x0 + i*h ; (i = 0 1 2 ….)
yi = y(xi) ~ Yi (Yi is result)
yn+1 = yn + h*f(yn, xn)
Example : y’ = -y^3 , y(0) = 1 , h = 0.5
Solve :
y1 = y(0) + f(x1, y1)*h = 1 - 0.5*y1^3
First => y1 = y(0) + f(x0, y0)*h = 1-0.5*y0^3 = 0.5
Then recursive…
y1 = 0.9375 => 0.588 => 0.898 … => 0.7709