From: Roy Stogner <roy@st...> - 2008-08-01 17:50:19
-------- Forwarded Message --------
From: Adam C Powell IV <hazelsct@...>
Subject: Re: [Libmesh-users] How long does the system assembling need?
Date: Thu, 31 Jul 2008 14:08:56 -0400
On Thu, 2008-07-31 at 07:57 -0500, Roy Stogner wrote:
> On Thu, 31 Jul 2008, Shengli Xu wrote:
> > Roy, Could you tell me what specific profiling information should be
> > gotten? I have to solve this problem.
> Just this: "Exactly where is the delay occurring?" If you're using
> our PerfLog objects, for example, you could create one in the
> assembly, activate it right before the matrix adds, and deactivate it
> right after; if that ends up being responsible for most of your
> runtime then you've verified that my "bad matrix assembly" hypothesis
> was correct. If not, then something else in your assembly is taking
> way too long (calling FE::reinit inside the quadrature loop?); you can
> use fine-grained PerfLog objects to test that out too.
I can corroborate the problem. For example, using example 14 in 3-D
with a good number of max_r_steps (say 6 or more), matrix insertion
dominates the run time.
I notice that this takes longer for the later elements than earlier
ones. And the problem is far worse in 3-D than 2-D. With max_r_steps=6
some of the elements take as long as 0.4 second to insert on a 2.2 GHz
T7500. With max_r_steps=7, PerfLog shows this is showing 97.98% of the
time is spent in "assemble()", with less than 11000 degrees of freedom!
Also the "time" command shows that about 1/3 of the time is spent in
"system" activity, though there's plenty of memory available and no
swapping going on.
There's something very inefficient about the insertion process...
Adam C. Powell, IV http://www.opennovation.com/
P.O. Box 249 apowell@...
Newton, MA 02464-0002 USA (617) 290-8831