CellML Discussion List

Text archives Help


[cellml-discussion] pcenv development priorities


Chronological Thread 
  • From: alan.garny at physiol.ox.ac.uk (Alan Garny)
  • Subject: [cellml-discussion] pcenv development priorities
  • Date: Wed, 1 Nov 2006 06:56:09 -0000

> -----Original Message-----
> From: cellml-discussion-bounces at cellml.org
> [mailto:cellml-discussion-bounces at cellml.org] On Behalf Of
> Andrew Miller
> Sent: 01 November 2006 00:44
> To: For those interested in contributing to the development of CellML.
> Subject: Re: [cellml-discussion] pcenv development priorities
>
> I have been looking into why my code is running slower than
> what you are getting (I have done cache simulation, with -O2
> compiled code).
>
> It is worth noting that about 30% of total time is spent in
> gesl, part of the dense solver, due partly to numerous L1
> cache misses accessing col_k around line 174, and 185. I
> could use the gcc prefetch builtins, but that will only make
> a difference (on x86 architectures) if I set up my compiler
> to use SSE instructions (which will break support on Intel
> chips for anything earlier than a Pentium 3, and AMD chips
> prior to AMD XP6).

I agree with David that we are probably getting into the nitty gritty now.
We have established that CVODE works reasonably well for you and that is
probably what matters most at this point in time.

Still, I though I would answer your questions, in case it helps you...

> 1) Are you using single or double precision? If it is the
> latter case, have you got 80 bit spills (_FPU_EXTENDED) mode
> turned on, or is the FPU in full 64 bit mode?

I use Double (64-bit). I did, at some point, use Extended (80-bit) and it
was indeed slower, while not bringing much to the accuracy of the results.
Single (32-bit) was just out of the question: not precise enough.

> 2) Are you using an unmodified CVODE integrator, or have you
> optimised it?

My time for developing COR is very limited, so I just got CVODE to work with
it and that is basically it...

> 3) Are you using the dense linear solver, or some other solver?

For those particular simulations I ran, I used CVODE with BDF and Newton
(using indeed the Dense solver).

> 4) Are you using the NVECTOR serial implementation from
> SUNDIALS (from within SUNDIALS), or have you written your own
> wrapper around your internal data structures?

I use a typical Delphi array, which I convert to a N_Vector (serial indeed)
using N_VMake_Serial.

> 5) What processor are you targeting? Have you allowed your
> compiler to use MMX / SSE / SSE2 / 3DNow! / SSE3 operations?

Nope... Delphi/C++ Builder's compiler is rather bad. I wish I could use
those though (like with the Intel C++ compiler for instance).

> 6) Could you send me the disassembled generated code (or the
> machine code if it is easier, as long as you tell me where
> the entry points are supposed to be), so I can compare it
> against the result of my code generation => compile process?

I will be in Auckland in less than 2 weeks. Maybe you can wait until then?
:) I promise to give you everything and anything you want about COR... :)

Alan.





Archive powered by MHonArc 2.6.18.

Top of page