[mpich-discuss] Extent of support for MPI_T_... interface?

Halim Amer aamer at anl.gov
Mon Jun 19 13:47:48 CDT 2017


 > I'd read through configure --help multiple times and not noticed
 > this option

You were interested in MPI_T performance variables, which is clearly 
indicated in that configure option. I don't understand how you missed that.

 > which requires a very close read to interpret the implications. It's not
 > the kind of thing you're going to spot immediately even ex post facto
 > without significant prior knowledge. It's not documented or mentioned
 > anywhere else.

Sure, the documentation needs some improvements, but as you guessed, our 
plates are full of with higher priority items. If you have concrete 
suggestions, feel free to let us know or contribute patches.

Keep in mind, however, that what MPI_T exposes is MPI implementation 
dependent. That means, since we are talking about MPICH, you might need 
to be familiar with the MPICH software stack to understand what you are 
measuring. The easiest way for you to understand what performance 
variables we expose, is to pass "all" to  --enable-mpit-pvars and print 
the description of each performance variable (using 
MPI_T_pvar_get_info). While some variables are self explanatory and 
could be applicable to many MPI implementations (e.g., length of message 
queues), others, such as those related to the Nemesis software layer, 
are MPICH-specific and will require understand MPICH deeper.

 > I also think this would more appropriately be a run-time option for 
mpiexec
 > rather than a build-time option for the toolchain itself.

First, multiple builds of the same MPI implementation with different 
performance variables is allowed by the standard. From the MPI 3.1 Standard:

"The number and type of control variables and performance variables can 
vary between MPI implementations, platforms and different builds of the 
same implementation on the same platform as well as between runs. Hence, 
any application relying on a particular variable will not be portable. 
Further, there is no guarantee that the number of variables and variable 
indices are the same across connected processes."

If you care about portability, then don't use the MPI_T interface.

Second, having runtime options to enable-disable tracking performance 
variables would add non-negligible overhead that most users would 
complain about. For instance, adding branches on the critical path 
(e.g., if(message_queue_tracking_is_active) on a MPI_Isend or MPI_Put 
path) to support such runtime option would be too expensive for 
fine-grained communication. Users want MPI communication calls to get 
translated to native hardware with the lowest overhead possible.

 > By the way, just looking through the configure --help output again I 
notice
 > that at least one option: --enable-error-messages-level, doesn't document
 > what the default setting actually is. There may be others.

Thanks for reporting this, we will fix them.

Halim
www.mcs.anl.gov/~aamer

On 6/19/17 10:27 AM, Alexander Rast wrote:
> I have to comment that clearly the documentation needs improvement. It's
> always the last on the priority list, I realise, but this is really very
> obscure. I'd read through configure --help multiple times and not noticed
> this option, and even now the description is highly non-obvious if you
> didn't already know what you were looking for and what it meant. The line
> reads:
>
> '--enable-mpit-pvars=list - selectively enable MPI_T performance variable
> in
>                              modules. list is a comma-separated module
> names,
>                               including (Default is "none"):
>           none     - No performance info recorded
>           recvq    - All message queue-related
>           nem      - All nemesis-related
>           rma       - All rma-related
>           all         - All variables above'
>
> which requires a very close read to interpret the implications. It's not
> the kind of thing you're going to spot immediately even ex post facto
> without significant prior knowledge. It's not documented or mentioned
> anywhere else.
>
> I also think this would more appropriately be a run-time option for mpiexec
> rather than a build-time option for the toolchain itself. There are
> numerous situations where I'd want to have performance monitoring enabled
> for some runs but not others. It doesn't seem to me to be an obvious choice
> to make it a build-time option, and it would be awkward to have 2 separate
> builds. In addition there are the MPICH binary installs available for many
> OS's which ought to have these options available in some form - it would be
> a surprise I suspect to a user who'd installed from a binary image to find
> support disabled for certain features that they'd not even been given the
> option to select.
>
> By the way, just looking through the configure --help output again I notice
> that at least one option: --enable-error-messages-level, doesn't document
> what the default setting actually is. There may be others.
>
>
>
> _______________________________________________
> discuss mailing list     discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss
>
_______________________________________________
discuss mailing list     discuss at mpich.org
To manage subscription options or unsubscribe:
https://lists.mpich.org/mailman/listinfo/discuss


More information about the discuss mailing list