IUBio

Interesting questions

Marc Roussel roussel at henri.chem.uleth.ca
Mon May 26 17:16:26 EST 1997


Pedro Mendes wrote:
> In article <33865943.D1BA850 at ix.netcom.com>, rphair at ix.netcom.com
> says...
> >Does anyone here have experience with ODE solvers that can handle
> >hundreds or even thousands of state variables? Has anyone explored
> >the computability questions surrounding such large systems?
> 
> This is not a new problem. In physics they have to deal with this all
> the time. For example in computational fluid dynamics (CFD) there are
> usually very large systems of ODEs to solve. The standard solvers in
> ODEPACK are quite capable of handling very large systems. Specifically
> the one used in GEPASI and SCAMP, named LSODA, is very good for this.
> This integrator has an added advantage in that it measures the
> stiffness of the equations throughout the integration and uses either
> the BDF or Adams methods, if the equations are stiff or non-stiff
> respectively (it is a variable step size, variable order, variable
> method algorithm).

I just want to back up Pedro's point:  System size, of itself, is no
longer a big deal.  I routinely solve coupled systems of PDEs on a
fairly fine mesh using a relatively modest system (100 MHz
AlphaStation).  The discretization of a PDE is a (usually large) set of
ODEs.  My systems reduce to a few hundred ODEs and this is no problem.
On one of my newer Sun Ultra workstations (which are currently busy
doing something else), I could probably run systems of thousands of ODEs
without getting too bored waiting for the output.
     System size can become a problem if the system under study is badly
behaved.  What do I mean by badly behaved?

          1. The system is stiff.  Stiff systems no longer
             need cause serious difficulties.  Large systems
             of equations (as mentioned above) aren't necessarily
             a problem.  However, systems which are large and
             have more than three or four distinct timescales (common
             in chemical systems of moderate size) can eat up
             a lot of CPU cycles.
          2. Variables need to be accessed randomly from a large array.
             Systems arising from PDEs are often particularly
             well-behaved because the variable references are
             semi-local, i.e. to compute derivatives I need
             access to variable values stored in memory near
             each other.  Even coupling of PDEs is OK because
             we then tend to reference only a few slices of memory
             and modern caching algorithms can detect that and
             deal with it.  Problems arise when the variables
             are accessed more-or-less randomly.  The memory
             cache is constantly being missed and CPU cycles are
             wasted waiting for appropriate data to be sucked in.
             It seems to me that large metabolic models are likely
             to fall into this category (especially if the equations
             are generated automatically by a computer from a database)
             unless some special effort is made to order the ODEs to
             minimize this problem.

     There are some other hardware and software issues.  One of the
reasons that I use Unix workstations for my work is that this kind of
machine generally delivers much better floating-point performance than
Intel hardware.  Clock speed isn't everything.  Architecture
(pipelining, cache design and size, etc.) plays a big role, as does the
compiler.  The Unix vendors generally have much more demanding customers
than Intel/Microsoft do (no slight intended, to anyone) so there's a
tendency for their software products to squeeze every last bit of
performance out of the hardware.  (Note the words of caution used above:
"generally" and "tendency".  I don't want to start a flame war.)

					Marc R. Roussel
					(roussel at henri.chem.uleth.ca)
					Department of Chemistry
					University of Lethbridge



More information about the Btk-mca mailing list

Send comments to us at biosci-help [At] net.bio.net