shmem_group_create_strided(3)

shmem_group_create_strided, shmem_group_delete - Create or delete a SHMEM process group object

Showing IRIX 6.5.30 (default release). Last changed in IRIX 6.5.22.

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 VALUES
     shmem_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 ALSO
     glio_group_shmem(3), intro_shmem(3)

     Message Passing Toolkit: MPI Programmer's Manual