[Mpi3-tools] New MPIT draft available / Question regarding Verbosity

Martin Schulz schulzm at llnl.gov
Sun Feb 21 04:13:20 CST 2010


Hi Tobias, all,

Thanks for the comments - I added most of  them into the document, a  
few comments
or questions below.

Martin

On Feb 10, 2010, at 11:10 PM, Tobias Hilbrich wrote:

> Hi Martin, Hi group,
>
> its great to see the first versions of a proposal, I went over it  
> and tried to find issues and errors. As I am unfortunately only  
> rarely able to join the telco, I may raise issues that had already  
> been discussed, if so feel free to ignore these comments.
>
> p7, line 3: "Fortran bindings are not required." -> One might give a  
> rational for that, which is I guess that this targets tools that are  
> usually not written in Fortran.

I am beginning to think that we should provide the usual Fortran  
bindings,
since there may be good reasons to call this from the application, which
can be Fortran. Comments?

>
> p7, line 35: Uses "MPIT_Init" to refer to "MPIT_INIT" (consistency  
> change) (also in line 41)
>
> p8, line 4-6: "Once this routine is called no MPIT routine ... may  
> be called ...." -> I would add an except MPIT_INITIALIZED and  
> MPIT_FINALIZED
>
> p9: general comment to MPIT_Datatype: A MPIT_DATATYPE_NULL might  
> make the design more consistent to the regular MPI_Datatype design ...

Hmm, what would that mean?

>
> p9, line 32: "MPI_MAX_ENUMTYPE" -> "MPIT_MAX_ENUMTYPE"
>
> p11, line 18/19: IN iterator -> INOUT iterator
>
> p11 general comment to names: "MPIT_CONFIG_QUERY" and  
> "MPI_Configquery_iterator" seem not very consistent

There are two options to fix this: get rid if the _ in the routine  
name, which
makes the routine's name out of sync with the rest, or to add an _ into
the type declaration. Both options don't seem good to me. Therefore,
I am leaving this as is - please object if you feel strongly about this.

>
> p11 general comment on iterators:
> * Is there a strong need to use distinct iterator types for the  
> config query and the performance query, couldn't we use a  
> MPIT_Iterator type instead ?

Optimization might be harder if the MPI stores the two things  
separately. Also, the information
returned is different (in case the type is just a pointer to a  
corresponding struct).

> * MPIT_CONFIG_QUERY and MPIT_PERFORMANCE_QUERY might also set the  
> iterator to MPIT_[ITERATOR|CONFIGQUERY|PERFORMANCEQUERY]_END when  
> the call returns an MPIT_END (for consistency with common iterator  
> concepts)

OK.

>
> p12, line 8: "MPIT_CONFIG_INFO(name, type, ...)" ->  
> "MPIT_CONFIG_INFO(name, datatype, count, ...)"
>
> p12 comments on "MPIT_CONFIG_INFO":
> * Strictly seen, when the user may set desc to NULL, I would define  
> desc as INOUT
> * What is the value of desclen when the user sets desc to NULL ?

This would impact many more calls and I am not sure if this is  
consistent
with the rest of the MPI standard. Anybody else have any opinions here?

>
> p13, line 33: "...the appropriate sized and ..." -> "...the  
> appropriate size and ..."
>
> p16, line 18: "IN     set     string to a set" -> "string to a set"  
> is not very descriptive, what about "string identifier of a set" or  
> something similar ?
>
> p16, line 35: "that explains in the use ..." -> "that explains the  
> use ..."
>
> p16, line 38: "name and description, are ..." -> "<b>name</b> and  
> <b>desc</b>, are ..."
>
> p16, line 39: "A conforming MPI implementation may not ... " -> "A  
> conforming MPI implementation must not ... "
>
> p16, line 41: "MPIT_PERFORMANCE_QUERY may ..." -> "MPIT_GET_SETINFO  
> may ..." (same in line 46!)
>
> p16, line 44: "MPI_MAX_SET_NAME" -> "MPIT_MAX_SET_NAME"
>
> p16, general comment about MPIT_GET_SETINFO:
> * Strictly seen, when the user may set desc to NULL, I would define  
> desc as INOUT
> (Same holds for further calls, I stopped listing all of them)
>
> p17, line 2: "MPI_MAX_SET_DESC" -> "MPIT_MAX_SET_DESC"
>
> p17, line 15: IN   iterator    iterator .... -> INOUT ....
>
> p17 comment about naming: "MPIT_PERFORMANCE_QUERY" vs  
> "MPIT_Performancequery_iterator"
>
> p17, line 43: "The parameter name is used to return a short and  
> unique name for the performance variable found." -> "The parameter  
> name is used to return a short and unique name for the performance  
> variable found, which is used as its identifier in other calls to  
> the MPIT performance interface."
>
> p17, line 44: "A conforming MPI implementation may not..." -> "A  
> conforming MPI implementation must not ..."
>
> p18, line 4: "MPI_MAX_PERFORMANCEVAR_NAME" ->  
> "MPIT_MAX_PERFORMANCEVAR_NAME"
>
> p18, line 47: "MPI_MAX_PERFORMANCEVAR_DESC" ->  
> "MPIT_MAX_PERFORMANCEVAR_DESC"
>
> p19, line 10: "MPI_MAX_PERFORMANCEVAR_SETS(???)" ->  
> "MPIT_MAX_PERFORMANCEVAR_SETS(???)"
>
> p19, general comment to naming of MPIT Performance interface calls:
> * binding names like "MPIT_Performance_changed ()" seem to suggest a  
> totally different behavior than they actually implement, in fact the  
> MPIT_Performance is meant as a sort of namespace here why not use  
> MPIT_PERFORMANCE_Changed to denote that, or if this is inconsistent  
> with the rest of the standard (which apparently is the case), then  
> why not use an extra word here, e.g. MPIT_Performance_vars_changed.

Yes, that makes sense. I changed it to the latter.

>
> p19, comment to MPIT_Performancehandle:
> * none of the other MPI handles use "handle" as part of their name,  
> so what about "MPIT_Performance[_]var" ?

Hmm, this would make it quite generic, but I do see your point. What  
do other's
think about this.

> * what about a MPIT_PERFORMANCE[HANDLE/VAR]_NULL for consistency  
> with the other MPI handles ?

I am not sure what this will help. In the main MPI this documents  
completion - something
that we don't have here.

> * One might add that the user of the MPIT interface should free all  
> performance handles before calling MPIT_FINALIZE
> * MPIT_PERFORMANCE_ALL is inconsistent with other constant handles  
> (that use the handle name as their base name. e.g. MPI_Comm ->  
> MPI_COMM_WORLD), what about MPIT_PERFORMANCE[HANDLE|VAR]_ALL

I removed that all together after Dave's comment.

>
> p21, line 33: "MPIT_ERR_PERFORANCE_WRITE" -> "MPIT_PERFORMANCE_WRITE"
>
>
> -Tobias
>
>
> Martin Schulz wrote:
>> Hi all,
>>
>> I uploaded a new draft of the MPIT proposal to
>>
>> https://*svn.mpi-forum.org/trac/mpi-forum-web/wiki/MPI3Tools/draft
>>
>> Changes since the last draft are marked with changebars and are  
>> colored in green.
>> The latest draft contains changes based on comments from Kathryn  
>> Mohror and
>> the MPI group at Sun/Oracle.
>>
>> There is one open question that I would like to bring up for a  
>> general discussion:
>> as discussed in the WG earlier, we need some kind of verbosity  
>> parameter that
>> allows the MPI implementation to classify each variable according  
>> to its importance
>> and general usage scenario. Jeff and I have been going forth and  
>> back on this
>> one for a while over email, but we can't come to a useful  
>> conclusion and hence
>> would like wider feedback.
>>
>> In general, we both  think that we want 5 classes of verbosity (odd  
>> number larger
>> than 3, but not too large).
>>
>> The original proposal had the following classes
>> VERY_HIGH
>> HIGH
>> MEDIUM
>> LOW
>> VERY_LOW
>> which was rejected by the forum (I think rightfully so) since it  
>> doesn't really convey
>> any useful application level information.
>>
>> The current proposal has:
>> USER_BASIC
>> USER_DETAILED
>> TUNER_BASIC
>> TUNER_DETAILED
>> MPI_IMPLEMENTOR
>> with the idea that the first two classes are intended for general  
>> MPI users,
>> the third and fourth for performance experts and system  
>> administrators
>> wishing to tune the performance of MPI itself, while the fifth is  
>> for MPI
>> implementors and would include debugging information.
>>
>> Open MPI uses a similar idea of verbosity and defines the following
>> five classes:
>> INFORMATION
>> TRIVIAL
>> MINOR
>> MAJOR
>> CRITICAL
>> However, both Jeff and I don't like these classes, since they don't  
>> convey
>> any useful information either.
>>
>> Jeff proposes something like
>> BASIC
>> ?
>> ADVANCED
>> ?
>> INTERNAL
>> but this proposal misses good names for 2 and 4.
>>
>> Any comments or suggestions (either extending one of the above or  
>> completely
>> new) would be very much appreciated.
>>
>> Thanks,
>>
>> Martin
>>
>>
>> ________________________________________________________________________
>> Martin Schulz, schulzm at llnl.gov, http://*people.llnl.gov/schulzm
>> CASC @ Lawrence Livermore National Laboratory, Livermore, USA
>>
>>
>>
>> _______________________________________________
>> Mpi3-tools mailing list
>> Mpi3-tools at lists.mpi-forum.org
>> http://*lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-tools
>>
>
>
> -- 
> Tobias Hilbrich
> GWT - TUD GmbH
> Chemnitzer Straße 48b
> 01187 Dresden
> Tel.: +49 351 463 35876
> Fax: +49 351 463 37773
> http://*www.*gwtonline.de
>
> Geschäftsführer: Claus-Peter Held
> Prokuristin: Beate-Victoria Ermisch
> Die GWT ist eingetragen beim Amtsgericht Dresden - HRB: 13 840
>
> _______________________________________________
> Mpi3-tools mailing list
> Mpi3-tools at lists.mpi-forum.org
> http://*lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-tools
>

________________________________________________________________________
Martin Schulz, schulzm at llnl.gov, http://people.llnl.gov/schulzm
CASC @ Lawrence Livermore National Laboratory, Livermore, USA







More information about the mpiwg-tools mailing list