[ODE] More speed???
Nguyen Binh
ngbinh at glassegg.com
Wed Nov 5 17:21:40 MST 2003
Hi Aras,
AP> Is the system actually Ax=b? Isn't it something like inequalities system
(like Ax>>b)? I don't know the underlying math, of course, so I may be
AP> completely wrong :)
The "system" is LCP A*x = b+w with certain conditions. Solve such
system require many math skills (which I don't have :( ), you can
read the famous Barraff's paper about it.
But, on the way to solve such terrified problem, we need to solve
simple linear problem A*x = b (A, b : known, x : variable). ODE
now solve A*x = b by:
1) Factor A into L*U (L,U is upper and lower triangular matrix)
So we have
L*(U*x) = b
-> L * y = b (U*x = y)
(ODE function dFactorLDLT())
2) Solve for y, this is straight forward since L is upper triangular
(ODE function dSolveL1())
3) Solve for x, this is also straight forward since U is lower triangular
(ODE function dSolveL1T())
As you see, we expect the two task 2) and 3) to be fast. But
actually, my profiling show that the two task take roughly 45% CPU
power on Step rountine (test scene contains about 200 primitives)
So, my ideas are:
1) SIMDize it: easy to implement and keep ODE stable
2) Change it-> use iterative methods : theoritically faster
but may break ODE stability. (But actually, I prefer this way)
.....
--
Best regards,
---------------------------------------------------------------------
Nguyen Binh
Software Engineer
Glass Egg Digital Media
E.Town Building
7th Floor, 364 CongHoa Street
Tan Binh District,
HoChiMinh City,
VietNam,
Phone : +84 8 8109018
Fax : +84 8 8109013
www.glassegg.com
---------------------------------------------------------------------
More information about the ODE
mailing list