On Tue, 9 Sep 2008, Kirk, Benjamin (JSC-EG) wrote:

(1) eliminate the var/elem loop - just loop on elem and extract the dof
indices for all vars at once.

Certainly a good idea.  Hmm... why aren't we reversing the loops in
the main project_vector calculations?  Just time and effort and fear
of regressing the code?

(2) I believe the dof indices were getting added twice when
(elem->refinement_flag() == Elem::JUST_REFINED)?
    (added inside the if statement and then again afterward?

Whoops - yeah, I wrote this patch in a hurry (in fact the first
version had a silly bug or two).

(3) Thread-safe by converting to a parallel reduce.  The other option
would be to mutex the send_list but I expect that would perform much
worse.

Thanks; I'd intended to mutex the send_list, but I don't use threading
so the whole problem completely slipped my mind.

(4) reuse the same elem range for both threaded operations.

Good idea, I guess.  Is constructing that range an expensive
operation?  Is it something we should be caching in UnstructuredMesh?

I'm gonna bang on it tomorrow with many processors & threads in various
combination.

Thanks!  It's clearly not the big win I hoped it would be, but even if
it's not getting at our current bottleneck, the problem it fixes would
be a bottleneck eventually.
---
Roy
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to