Subject: Re: Packing/unpacking routines

From: Tony Skjellum <[email-masked]>
Date: Thu, 27 Jan 94 10:33:39 CST

Hi,

As long as the scope for resending is within one communicator, I do not
see the problem, because unpack would choose the canonical form for
that communicator (implementation defined, opaque).  The canonical form
of MPI_COMM_WORLD should be equivalent to what Bill/Rusty suggest for
MPI_PROC_ANY, for consistency.  For intercommunication, it would be nice
to have a mechanism to extract the canonical form of other communicators,
rather than just MPI_PROC_ANY, but this is perhaps too much to ask.  

Note that we have never promised to do optimizations of data
conversion within a group boundary... but that we expect that multicanonical
implementations are going to exist.

In short: Rusty/Bill's suggestion seems fine in this regard.  

-Tony

----- Begin Included Message -----

---

From: Rusty Lusk <[email-masked]>
Date: Thu, 27 Jan 1994 10:07:12 -0600

| Some proponents of this functionality wanted to have those functions in
| situations where they send a single buffer to many different locations.
| Thus, the buffer has to be packed one time only. However, with the
| proposed functions the buffer has to be packed for each destination
| process separately, because the conversion happens in the packing
| routine (arguments dest,comm). The application programmer cannot reuse
| the once packed buffer, because he/she does not know whether the
| target processors have the same data representation or not.
| 
| Personally I have no problem with this, but we should at least mention
| that the functions cannot be used for reusing the packed buffer for
| many sends.
| 

The idea of making packing process-specific is to be able to avoid
translations in the cases were you know that none will be needed because MPI
knows something about the other process, i.e., it knows precisely what has to
be done (byte-swapping instead of full xdr conversion or whatever).

Maybe we can solve this problem.  Suppose that if you used MPI_ANY_PROC as the
destination or source, MPI_PACK and MPI_UNPACK would then convert to a
canonical form (like XDR) that could be used at any other process.  That is,
if you wanted to re-use the packed buffer, you would say so and potentially
pay the price of a more general packing and unpacking procedure, but
everything would be safe, and maximally efficient when you specified the
process. 

Rusty & Bill

----- End Included Message -----