[mpich-discuss] thread MPI calls

Rob Ross rross at mcs.anl.gov
Tue Jul 28 17:11:51 CDT 2009


Long ago we kicked around this idea of having multiple queues for the  
no-any-* cases, then switching back to a single queue only when one of  
those showed up. Is this something we're doing in MPICH2 now?

Rob

On Jul 28, 2009, at 5:09 PM, Pavan Balaji wrote:

>
>> yes, we are using source, but we are using ANY_TAG.  We can't try  
>> ANY_SOURCE as
>> source is significant, unless I make chanages to the data package.
>
> I'd suggest that you either use both ANY_SOURCE and ANY_TAG, or  
> neither. From an MPI implementation's perspective, always using  
> ANY_SOURCE + ANY_TAG is best for performance, since all incoming  
> messages will have a constant queue search time. On the other hand,  
> if you don't use either of them, then it'll allow the MPI  
> implementation to use multiple queues instead of a single queue,  
> which reduces the search time quite a bit as well (constant time in  
> most cases as well). Using one of them as a wild-card and the other  
> as a non-wild-card is the worst-case scenario.
>
>> We can try SERIALIZED, but that will block our next strategy which  
>> requires MULTIPLE.
>
> For now, this will at least tell us whether MPI's locks are the  
> bottleneck or if there's some other bottleneck.
>
> If this does show up as a problem, we can try to profile your  
> application with MPE and/or rlog (MPICH2's internal profiling tool).  
> It'll give you a nice graphical output on the amount of time spent  
> in each routine. Very useful for performance debugging.
>
> -- Pavan
>
> -- 
> Pavan Balaji
> http://www.mcs.anl.gov/~balaji



More information about the mpich-discuss mailing list