


Up:   MPI-2 Terms and Conventions
Next:  Data Types
Previous:  Procedure Specification
  
 
When discussing  MPI procedures the following semantic  
terms are used.  
  
  
 
 
 
-  
{ nonblocking}
-  
A procedure is nonblocking if the procedure may return before the  
operation completes, and before the user is allowed to reuse  
resources (such as buffers) specified in the call.  
A nonblocking request is  started by the call that initiates it, e.g.,   
 MPI_ISEND.    
The word complete is used with respect to operations, requests, and  
communications.  An  operation completes when the user is allowed  
to reuse resources, and any output buffers have been updated; i.e. a  
call to  MPI_TEST will return  
 flag =  true.  A  request is completed by a call  
to wait, which returns, or a test or get status call which returns   
 flag =  true.  This completing call has two effects:  
the status is extracted from the request; in the case of test and  
wait, if the request was nonpersistent, it is  freed.  A   
communication completes when all participating operations complete.  
 
-  
{ blocking}
-  
A procedure is blocking if return from the procedure indicates the user  
is allowed to reuse resources specified in the call.  
 
-  
{ local}
-  
A procedure is local if completion of the procedure depends only on the  
local executing process.  
 
-  
{ non-local}
-  
A procedure is non-local if completion of the operation may require  
the execution of some  MPI procedure on another process.  Such an  
operation may require   
communication occurring with another user process.  
 
-  
{ collective}
-  
A procedure is collective if all processes in a process group need to invoke the procedure.  A  
collective call may or may not be synchronizing.  
  
Collective calls over the same communicator  
  
must be executed in the same order by all members of the process  
group.  
  
 
-  
{ predefined}
-  
A predefined datatype is a datatype with a predefined (constant) name  
(such as  MPI_INT,  MPI_FLOAT_INT, or  MPI_UB)  
or a datatype constructed with  MPI_TYPE_CREATE_F90_INTEGER,  
 MPI_TYPE_CREATE_F90_REAL, or  
 MPI_TYPE_CREATE_F90_COMPLEX.  The former are  named  
whereas the latter are  unnamed.  
 
-  
{ derived}
-  
A derived datatype is any datatype that is not predefined.  
 
-  
{ portable}
-  
A datatype is portable, if it is a predefined datatype, or it is derived  
from a portable datatype using only the type constructors  
 MPI_TYPE_CONTIGUOUS,  MPI_TYPE_VECTOR,  
 MPI_TYPE_INDEXED,  MPI_TYPE_INDEXED_BLOCK,  
 MPI_TYPE_CREATE_SUBARRAY,  MPI_TYPE_DUP, and  
 MPI_TYPE_CREATE_DARRAY.   
Such a datatype is portable because all displacements in the datatype  
are in terms of extents of one predefined datatype.  Therefore, if such a  
datatype fits a data layout in one memory, it will fit the  
corresponding data layout in another memory, if the same declarations  
were used, even if the two systems have different architectures.  On  
the other hand, if a datatype was constructed using  
 MPI_TYPE_CREATE_HINDEXED, MPI_TYPE_CREATE_HVECTOR or  
 MPI_TYPE_CREATE_STRUCT, then the datatype contains explicit byte  
displacements (e.g., providing padding to meet alignment restrictions).  
These displacements are unlikely to be chosen correctly if they fit  
data layout on one memory, but are used for data layouts on another  
process, running on a processor with a different architecture.  
 
-  
{ equivalent}
-  
Two datatypes are equivalent if they appear to have been created with   
the same sequence of calls (and arguments) and thus have the same  
typemap.  Two equivalent datatypes do not necessarily have the same  
cached attributes or the same names.  
  
 



Up:   MPI-2 Terms and Conventions
Next:  Data Types
Previous:  Procedure Specification
Return to MPI-2 Standard Index
Return to MPI Standard Index
Return to MPI Forum Home Page
Return to MPI Home Page
MPI-2.0 of July 18, 1997
HTML Generated on November 1, 2000