Download presentation
Presentation is loading. Please wait.
Published byKristofer Waddell Modified over 9 years ago
1
SystemC-AMS(CUDA) Ruru 2012 8/14
2
Outline Introduction Modeling Formalisms ELN(Electrical Linear Networks) Solve Ordinary Differential Equation Solve Eln-Cluster Workflow SystemC Kernel Solver Performance
3
Introduction Positioning SystemC AMS Extensions
5
Introduction Modeling formalisms and use cases
7
Modeling Formalisms
8
Electrical Linear Networks ELN
9
Setup of the equation system Kirchhoff’s current law(KCL)
10
Electrical Linear Networks ELN elaboration and simulation phases
11
Problem : Thermo Model Thermo Model : RLC model Solve ELN equation Purpose Using CUDA to Speedup
12
Solve Ordinary Differential Equation Euler’s Method Backward Euler Method
13
SystemC Kernel Solver Eln-cluster Initialization Module(r, l, c …) : modules Node(sca_terminal, sca_node …) : equations Sparse Matrix Spcode
14
Solve Eln-Cluster Workflow Solve Differential Equation ana_solv DATA (Sdata, R, X) Next Cluster Next Timestamp Cluster? Timestamp? …
15
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_solv DATA (Sdata, R, X) GPU ana_solv DATA (Sdata, R, X)
16
Solve Eln-Cluster Workflow Solve Differential Equation ana_solv DATA (Sdata, R, X) Next Cluster Next Timestamp Cluster? Timestamp? … GPU ana_solv DATA (Sdata, R, X)
17
Performance The result is correct No speed up 200 module of one cluster : 75 ms (CPU) 200 module of one cluster : 165 ms (GPU)
18
Thanks for Your Attention!
19
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
20
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.