[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,

   Phone : +84 8 8109018
   Fax   : +84 8 8109013


More information about the ODE mailing list