SHMEM_GROUP_CREATE_STRIDED(3)SHMEM_GROUP_CREATE_STRIDED(3)NAME
shmem_group_create_strided, shmem_group_delete - Create or delete a
SHMEM process group object
SYNOPSIS
C or C++:
#include <mpp/shmem.h>
int shmem_group_create_strided(int PE_start, int PE_stride, int
PE_size, int racom, int *isync)
void shmem_group_delete(int handle);
Fortran:
include "mpp/shmem.fh"
INTEGER PE_start, PE_stride, PE_size INTEGER
racom(SHMEM_GROUP_COM_SIZE) INTEGER isync(SHMEM_GROUP_SYNC_SIZE)
INTEGER handle
handle = SHMEM_GROUP_CREATE_STRIDED(PE_start, PE_stride, PE_size,
racom, isync)
CALL SHMEM_GROUP_DELETE(handle)DESCRIPTION
The shmem_group_create_strided function identifies a group of SHMEM
processes that comprise a SHMEM group. The returned handle is used
thereafter to identify this group of SHMEM processes to the
glio_group_shmem() routine.
The shmem_group_delete function deallocates the SHMEM process group
opaque object.
Both shmem_group_create_strided and shmem_group_delete are collective
routines executed by all processes in the process group.
The arguments are as follows:
PE_start The lowest PE number of the group of PEs. PE_start must be
of type integer. If you are using Fortran, it must be a
default integer value.
PE_stride The stride between consecutive virtual PE numbers in the
active set. PE_stride must be of type integer. If you are
using Fortran, it must be a default integer value.
PE_size The number of PEs in the group. PE_size must be of type
integer. If you are using Fortran, it must be a default
integer value.
racom A remotely accessible array in PE PE_start's memory of type
int/integer and size SHMEM_GROUP_COM_SIZE. This array must
be initialized to 0 before any PE enters shmem_group_create.
This array is used for communication by this group of
processes during SHMEM collective operations performed by
this group of PES.
The instance of this data object on PE PE_start cannot be
used for any other purpose until after shmem_group_delete is
called for this group handle. Because this group of PEs
accesses racom only on PE PE_start, the same racom to be
used by several SHMEM PE groups that have different PE_start
numbers. To use a common example, disjoint groups of PEs
may all use the same symmetric racom array.
isync A symmetric array of type int and size SHMEM_GROUP_SYNC_SIZE
used to optimize collective operations. If isync is NULL
(C) or SHMEM_NULL (Fortran), SHMEM allocates the needed
storage internally.
This array must be initialized to 0 before any PE enters
shmem_group_create. This array is used for synchronization
within SHMEM collective routines. This array can be used for
any collective operations on other PE groups as long as
those groups are disjoint with the set of PES in this group.
If this argument is NULL or SHMEM_NULL,
shmem_group_create_strided() allocates a remotely
accessible, possibly non-symmetric, isync array for internal
use by this group on every PE.
RETURN VALUESshmem_group_create_strided returns a handle that is used thereafter to
identify the corresponding group of SHMEM processes.
EXAMPLES
The following Fortran program opens global file globfile for access
from SHMEM processes (PEs) 0 and 1. PEs 2 and higher will not access
the file.
program global_subset
include "mpp/shmem.fh"
integer racom, handle
common /racom/ racom(SHMEM_GROUP_COM_SIZE)
call start_pes(0)
racom = 0
c Define a SHMEM group and then open globfile across this group
if (my_pe().le.1) then
call assign("assign -F global u:20",ier)
handle = shmem_group_create_strided(0, 1, 2, racom, shmem_null)
call glio_group_shmem(handle)
open (20,file="globfile",access="direct",recl=64)
endif
end
NOTES
Currently, a SHMEM process group can be used only with global FFIO
files. The related glio_group_shmem() routine is available.
This function is not supported on Altix systems.
SEE ALSOglio_group_shmem(3), intro_shmem(3)
Message Passing Toolkit: MPI Programmer's Manual