On Tue, Jan 10, 2012 at 5:52 AM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> On Tue, Jan 10, 2012 at 00:08, Geoffrey Irving <irving at naml.us> wrote:
>>
>> For now, I believe I can get away with a single linear iteration.
>
>
> Single linear iteration (e.g. one GMRES cycle) or single linear solve (e.g.
> one Newton step)?

Single linear solve (one Newton step).

>> Even if I need a few, the extra cost of the first linear solve appears
>> to be drastic. ?However, it appears you're right that this isn't due
>> to preconditioner setup. ?The first solve takes over 50 times as long
>> as the other solves:
>>
>> ? ?step 1
>> ? ? ?dt = 0.00694444, time = 0
>> ? ? ?cg icc converged: iterations = 4, rtol = 0.001, error = 9.56519e-05
>> ? ? ?actual L2 residual = 1.10131e-05
>> ? ? ?max speed = 0.00728987
>> ? ?END step 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0.6109 s
>
>
> How are you measuring this time? In -log_summary, I see 0.02 seconds in
> KSPSolve(). Maybe the time you see is because there are lots of page faults
> until you get the code loaded into memory?

It turns out the initial overhead was due to a bug in my computation
of row lengths.  It's much faster with the bug fixed.  Is there a way
to detect reallocations so as avoid this kind of error in future?  I
looked through the seqaij code and didn't see anything obvious, and
also couldn't find a function to compute the actual final row lengths.

Thanks,
Geoffrey

Reply via email to