No one on the mpi forum had much to say when I mentioned the oddity that is MPI_Pack: 'int' used to describe position in a bytestream. 'int' used to describe a memory address... When Jeff brought up MPI_Pack a year ago, the response was "it took us 3 years to do MPI_Count. we're not touching MPI_Pack". Fair enough. Except! the practice of packing mpi datatypes into a contiguous buffer is rather common in the MPICH code. I propose promoting the 'outsize', 'position' and 'size' parameters of the internal routines (MPIR_Pack_impl, MPIR_Unpack_impl, MPIR_Pack_size_impl) to MPI_Aint: int MPIR_Pack_impl(const void *inbuf, int incount, MPI_Datatype datatype, void *outbuf, MPI_Aint outcount, MPI_Aint *position); void MPIR_Pack_size_impl(int incount, MPI_Datatype datatype, MPI_Aint *size); int MPIR_Unpack_impl(const void *inbuf, MPI_Aint insize, MPI_Aint *position, void *outbuf, int outcount, MPI_Datatype datatype); I would have used MPI_Count, but Dave and Jim had some concerns about 128-bit math in places. Is pack/unpack ever on the critical path? I've added this change to the mpich-review/large-count-large-typesize-combo review branch. ==rob -- Rob Latham Mathematics and Computer Science Division Argonne National Lab, IL USA