The only other thing that comes to mind is that max effectively introduces a barrier, so a calling sequence like
Parallel::max(...); Parallel::allgather(...); Would likely result in a much longer max than allgather since the processes will be synchronized already. (?) -Ben ----- Original Message ----- From: Roy Stogner <[email protected]> To: John Peterson <[email protected]> Cc: libmesh-devel <[email protected]> Sent: Tue Mar 16 13:07:17 2010 Subject: Re: [Libmesh-devel] Parallel::max() On Tue, 16 Mar 2010, John Peterson wrote: > Is there something up with our Parallel::max() implementation? In a > recent code I ran on 256 processors, each call to Parallel::max > apparently required 24 seconds, orders of magnitude longer than > something like gather, with presumably way more communication?! > > (You may want to view this PerfLog table snippet in fixed-width fonts.) > > Parallel > | > | allgather() 8 0.4039 0.050487 > 0.4286 0.053570 0.00 0.00 | > | broadcast() 251 0.4242 0.001690 > 0.4242 0.001690 0.00 0.00 | > | gather() 481 0.3723 0.000774 > 0.3723 0.000774 0.00 0.00 | > | max() 125 3050.9712 > 24.407770 3050.9712 24.407770 11.78 11.78 | > > I search briefly on the devel message list but didn't see this issue > discussed previously. "Each call to Parallel::max" is unlikely, too, since the templated nature of that function means that some calls (the ones with vector args) should take much longer than others. Not sure where that occurs (except in debug mode in places like MeshTools::libmesh_assert_valid_blah*), though. Let me see... No, hunting through the code I don't see a single other place that's doing a max() on more than a tiny vector. And the implementation is utterly straightforward; max() shouldn't be taking longer than anything else that requires all-to-all communication. Any chance you can add some timing output with stack traces and rerun to see where the offending max() call(s) are? 24 seconds is atrocious. --- Roy ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Libmesh-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-devel ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Libmesh-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-devel
