Blame www/www3/MPI_Win_allocate_shared.html

Packit 0848f5
Packit 0848f5
<HTML>
Packit 0848f5
<HEAD>
Packit 0848f5
<META NAME="GENERATOR" CONTENT="DOCTEXT">
Packit 0848f5
<TITLE>MPI_Win_allocate_shared</TITLE>
Packit 0848f5
</HEAD>
Packit 0848f5
<BODY BGCOLOR="FFFFFF">
Packit 0848f5

MPI_Win_allocate_shared

Packit 0848f5
Create an MPI Window object for one-sided communication and shared memory access, and allocate memory at each process. 
Packit 0848f5

Synopsis

Packit 0848f5
Packit 0848f5
int MPI_Win_allocate_shared(MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm,
Packit 0848f5
                             void *baseptr, MPI_Win *win)
Packit 0848f5
Packit 0848f5
This is a collective call executed by all processes in the group of comm. On
Packit 0848f5
each process i, it allocates memory of at least size bytes that is shared among
Packit 0848f5
all processes in comm, and returns a pointer to the locally allocated segment
Packit 0848f5
in baseptr that can be used for load/store accesses on the calling process. The
Packit 0848f5
locally allocated memory can be the target of load/store accesses by remote
Packit 0848f5
processes; the base pointers for other processes can be queried using the
Packit 0848f5
function <tt>MPI_Win_shared_query</tt>.
Packit 0848f5

Packit 0848f5
The call also returns a window object that can be used by all processes in comm
Packit 0848f5
to perform RMA operations. The size argument may be different at each process
Packit 0848f5
and size = 0 is valid. It is the user's responsibility to ensure that the
Packit 0848f5
communicator comm represents a group of processes that can create a shared
Packit 0848f5
memory segment that can be accessed by all processes in the group. The
Packit 0848f5
allocated memory is contiguous across process ranks unless the info key
Packit 0848f5
alloc_shared_noncontig is specified. Contiguous across process ranks means that
Packit 0848f5
the first address in the memory segment of process i is consecutive with the
Packit 0848f5
last address in the memory segment of process i − 1.  This may enable the user
Packit 0848f5
to calculate remote address offsets with local information only.
Packit 0848f5

Packit 0848f5

Input Parameters

Packit 0848f5
size
size of window in bytes (nonnegative integer)
Packit 0848f5
Packit 0848f5
disp_unit
local unit size for displacements, in bytes (positive integer)
Packit 0848f5
Packit 0848f5
info
info argument (handle)
Packit 0848f5
Packit 0848f5
comm
communicator (handle)
Packit 0848f5
Packit 0848f5
Packit 0848f5

Packit 0848f5

Output Parameters

Packit 0848f5
baseptr
initial address of window (choice)
Packit 0848f5
Packit 0848f5
win
window object returned by the call (handle)
Packit 0848f5
Packit 0848f5
Packit 0848f5

Packit 0848f5

Thread and Interrupt Safety

Packit 0848f5

Packit 0848f5
This routine is thread-safe.  This means that this routine may be
Packit 0848f5
safely used by multiple threads without the need for any user-provided
Packit 0848f5
thread locks.  However, the routine is not interrupt safe.  Typically,
Packit 0848f5
this is due to the use of memory allocation routines such as <tt>malloc
Packit 0848f5
</tt>or other non-MPICH runtime routines that are themselves not interrupt-safe.
Packit 0848f5

Notes for Fortran

Packit 0848f5
All MPI routines in Fortran (except for <tt>MPI_WTIME</tt> and <tt>MPI_WTICK</tt>) have
Packit 0848f5
an additional argument <tt>ierr</tt> at the end of the argument list.  <tt>ierr
Packit 0848f5
</tt>is an integer and has the same meaning as the return value of the routine
Packit 0848f5
in C.  In Fortran, MPI routines are subroutines, and are invoked with the
Packit 0848f5
<tt>call</tt> statement.
Packit 0848f5

Packit 0848f5
All MPI objects (e.g., <tt>MPI_Datatype</tt>, <tt>MPI_Comm</tt>) are of type <tt>INTEGER
Packit 0848f5
</tt>in Fortran.
Packit 0848f5

Packit 0848f5

Errors

Packit 0848f5

Packit 0848f5
All MPI routines (except <tt>MPI_Wtime</tt> and <tt>MPI_Wtick</tt>) return an error value;
Packit 0848f5
C routines as the value of the function and Fortran routines in the last
Packit 0848f5
argument.  Before the value is returned, the current MPI error handler is
Packit 0848f5
called.  By default, this error handler aborts the MPI job.  The error handler
Packit 0848f5
may be changed with <tt>MPI_Comm_set_errhandler</tt> (for communicators),
Packit 0848f5
<tt>MPI_File_set_errhandler</tt> (for files), and <tt>MPI_Win_set_errhandler</tt> (for
Packit 0848f5
RMA windows).  The MPI-1 routine <tt>MPI_Errhandler_set</tt> may be used but
Packit 0848f5
its use is deprecated.  The predefined error handler
Packit 0848f5
<tt>MPI_ERRORS_RETURN</tt> may be used to cause error values to be returned.
Packit 0848f5
Note that MPI does not guarentee that an MPI program can continue past
Packit 0848f5
an error; however, MPI implementations will attempt to continue whenever
Packit 0848f5
possible.
Packit 0848f5

Packit 0848f5
MPI_SUCCESS
No error; MPI routine completed successfully.
Packit 0848f5
Packit 0848f5
MPI_ERR_ARG
Invalid argument. Some argument is invalid and is not
Packit 0848f5
identified by a specific error class (e.g., <tt>MPI_ERR_RANK</tt>).
Packit 0848f5
Packit 0848f5
MPI_ERR_COMM
Invalid communicator. A common error is to use a null
Packit 0848f5
communicator in a call (not even allowed in <tt>MPI_Comm_rank</tt>).
Packit 0848f5
Packit 0848f5
MPI_ERR_INFO
Invalid Info
Packit 0848f5
Packit 0848f5
MPI_ERR_OTHER
Other error; use <tt>MPI_Error_string</tt> to get more information
Packit 0848f5
about this error code. 
Packit 0848f5
Packit 0848f5
MPI_ERR_SIZE
Packit 0848f5
Packit 0848f5

Packit 0848f5
<H0>See Also</H0>
Packit 0848f5
 MPI_Win_allocate MPI_Win_create MPI_Win_create_dynamic MPI_Win_free MPI_Win_shared_query
Packit 0848f5

Packit 0848f5
</BODY></HTML>