next up previous contents
Next: Utility functions Up: Collectives Previous: Collectives

Introduction

This chapter specifies the algorithms to be used in collective operations on communicators which span multiple MPI clients.

A native communicator is defined to be a communicator in which all processes are running under the same MPI client.

IMPI places no restrictions on and does not specify the implementation of collective operations on native communicators.

Processes running under the same an MPI client are defined to be local processes. Similarly communication between between processes running under the same MPI client is called local communication.

Communication between processes running under different MPI clients is referred to as non-local or global.

Many of the collective operations consist of one or more local and global phases of communication. An IMPI implementation is free to implement local phases in whatever manner it chooses but must implement the global phases as specified in order to properly interoperate with other implementations. No global communications may be done other than those explicitly specified.

In the specifications of the collectives great liberties have been taken with the cleaning up of temporary objects, e.g. intermediate groups. It is expected that implementors will add the necessary resource freeing. Additionally little specific error handling is specified. It is expected that implementors will check the return codes of MPI functions used and return appropriately on error.

Some of the collective operations require that data packed by one implementation be unpacked by another implementation. This requires that all implementations use the same format for such packed data. This leads to the following restriction on MPI_Pack() in the case of non-native communicators. The format of data packed by a call to MPI_Pack() with a non-native communicator is the wire (external32) format with no header or trailer bytes. In addition a call to MPI_Pack_size() with a non-native communicator will return as the size the minimum number of bytes required to represent the data in the wire (external32) format.

No restriction is placed on the behavior of MPI_Pack() and MPI_Pack_size() when called with native communicators.


next up previous contents
Next: Utility functions Up: Collectives Previous: Collectives
IMPI Protocol ver 0.0
DRAFT March 22, 1999