Received: (from listserv@localhost) by antares.mcs.anl.gov (8.6.10/8.6.10)
	id DAA24426 for mpi-core-out; Mon, 21 Jun 1999 03:39:26 -0500
Received: from charybdis.rus.uni-stuttgart.de (root@charybdis.rus.uni-stuttgart.de [129.69.1.58]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
	id DAA24421 for <mpi-core@mcs.anl.gov>; Mon, 21 Jun 1999 03:39:18 -0500
Received: from awsrr.rus.uni-stuttgart.de (awsrr.rus.uni-stuttgart.de [129.69.14.187])
	by charybdis.rus.uni-stuttgart.de (8.8.8/8.8.8) with SMTP id KAA27812;
	Mon, 21 Jun 1999 10:38:25 +0200 (MET DST)
	env-from (rusrabe@awsrr.rus.uni-stuttgart.de)
Received: by awsrr.rus.uni-stuttgart.de (940816.SGI.8.6.9/BelWue-1.0SG(subsidiary))
	(for ) id KAA18824; Mon, 21 Jun 1999 10:38:14 +0200
From: rusrabe@awsrr.rus.uni-stuttgart.de (Rolf Rabenseifner)
Message-Id: <199906210838.KAA18824@awsrr.rus.uni-stuttgart.de>
Subject: Re: Request for interpretation
To: raja@rsn.hp.com
Date: Mon, 21 Jun 1999 10:38:14 +0200 (DST)
Cc: linda@k2.llnl.gov, mpi-core@mcs.anl.gov, treumann@us.ibm.com
In-Reply-To: <199906182009.QAA20433@atlrel2.hp.com> from "Raja Daoud" at Jun 18, 99 03:09:02 pm
Content-Type: text
Sender: owner-mpi-core@mcs.anl.gov
Precedence: bulk
X-UIDL: 20423bb4fbef47db0c7f78c1bcdb1455

My strong feeling is, that we should not forget one main goal 
of MPI: source-code portability.

Therefore we should not allow both interpretations, because then
the users have nothing.

Raja pointed out, that both interpretations allow the same optimization
of compute time (but not memory consummation). 

Summarizing the technical advantages/disadvantages

  A. MPI_Info_get... return exactly the contents store with
     MPI_Info_set 

     + MPI_Info_... can be used in other layered approaches.
     + MPI_Info_... can be used by the user for other task.
     - consuming additional memory for keys/keyvalues that are
       not interpreted by the MPI library .

  B. MPI_Info_set filters out all keys that are not interpreted
     by any other MPI function in the other chapters

     + The user can retrieve the list of used keys.
     - Prohibits any other use of the MPI_Info routines for
       other layers outside the vendors MPI library.

If there is no additional argument, then I vote technically for A.

Additionally I would say that the sentence "If a function does not 
recognize a key, it will ignore it, unless otherwise specified"
does not say >>if a function does not recognize a key, OTHER FUNCTIONS
[e.g. MPI_INFO_SET] can ignore it<<.

And "unless otherwise specified" points to the semantical definition
of MPI_Info_Get (MPI-2, page 45, lines 40-41):

"This function retrieves the value associated with key in a previous 
call to MPI_INFO_SET."

I do not see >>CAN retrieve<<, I see >>RETRIEVE<<.

Therefore only looking at the document and not to the technical
reasons above I would vote also for "only A". 

--Rolf 

Raja wrote: 
> I think the point to resolve is to decide what this sentence means:
> 
> "If a function does not recognize a key, it will ignore it, unless
> otherwise specified.  If an implementation recognizes a key but does not
> recognize the format of the corresponding value, the result is undefined."
> 
> (I don't have the page/line reference, it's in
> www.mpi-forum.org/docs/mpi-20-html/node53.html).
 
MPI-2.0 page 43 lines 38-40 

> Does "function" include MPI_Info_set() or not?  If it does, IBM's
> implementation is valid (and actually provides additional value to
> users).  I think it doesn't follow the spirit of MPI_Info as I remember
> it from the Forum meetings (i.e. users wanting and winning the vote
> for MPI_Info to be a glorified bucket of key/value strings).

Yes, I remember the same. 

> If "function" only refers to the routines that interpret/consume the
> info keys, then filtering is not allowed and MPI_Info has to keep track
> of all strings in order.  Note that it can in addition, under-the-table,
> compile an optimized/filtered representation for faster use by the
> consuming routines, but that representation would not be used by the
> MPI_Info_* retrieval functions.
> 
> 
> I don't have a strong feeling on this one.  The handling of recognized
> keys is a benefit to implementations, and it is not in dispute.  The
> handling of unrecognized keys or invalid values is mostly a service to
> users.  We have two valid ways to handle that case, and both provide
> some value but take away another (layerability vs. more visibility into
> an implementation's internal parameters).
> 
> Which of these two approaches does the majority of users prefer to have,
> or do you prefer to allow both to be valid?
> 
> --Raja


Rolf Rabenseifner                          High Performance Computing
Parallel Computing                         Center Stuttgart    (HLRS)
Rechenzentrum Universitaet Stuttgart (RUS) Phone:    ++49 711 6855530
Allmandring 30                             FAX:      ++49 711 6787626
D-70550 Stuttgart                   rabenseifner@rus.uni-stuttgart.de
Germany                        http://www.hlrs.de/people/rabenseifner