bionic (3) pvm_siblings.3PVM.gz

Provided by: pvm-dev_3.4.6-1build2_amd64 bug

NAME

       pvm_siblings  -   return  the number and associated task ids of processes that were started together in a
       single spawn call.

SYNOPSIS

       C    int ntids = pvm_siblings( int **tids )

       Fortran   call pvmfsiblings( ntids, index, sibling )

PARAMETERS

       ntids   Returns the number of tids that were spawned together. Value less than 0 indicates an error.

       tids    Pointer to the array of tids that contains the siblings. Indexed from 0 to (ntids - 1)

       index   Integer index of tid to be returned in sibling. If index is set to -1, then sibling is unchanged.
               Otherwise, must be in the range [0, ntids - 1]

       sibling When index is in the range [0, ntids -1], this contains the tid of the desired index.

DESCRIPTION

       The  routine  pvm_siblings  returns  the  number  of  tasks and a list of task ids of processes that were
       spawned together in a single spawn call. The spawning task multicasts  the  list  of  successful  to  the
       spawned  tasks  so  that  each  task  has an identical copy of the sibling list.  pvm_siblings uses local
       storage to keep the list of tids and does not update this  list  when  sibling  tasks  exit  the  virtual
       machine.   The  FORTRAN  version  allows calling programs read a particular index in the internal sibling
       array.  If pvm_siblings is successful, ntids will be  > 0. If some error occurs then ntids will be < 0.

       pvm_siblings is designed to simplify the  logic  in  static  spmd-style  programs.  By  giving  tasks  an
       identical  list  of tids and its size, programs may self size and treat the sibling as static map between
       instances and tasks. The internal list is not updated when sibling tasks exit  the  virtual  machine  and
       should be treated as a snapshot of the parallel program when it was first started.

       If a task was started by pvm_spawn, then pvm_siblings will return ntids = 1 and

       ntids = 1 and tids will contain a single entry identical to the task id returned by pvm_mytid()

EXAMPLES

       C:
            int *tids;
            ntids = pvm_siblings(&tids);

       Fortran:
            INTEGER TIDS(0:MAXNPROC)
            CALL PVMFSIBLINGS(NTIDS, -1, IDUM)
            DO I = 0, NTIDS-1
               CALL PVMFSIBLINGS(NTIDS, I, TIDS(I))

ERRORS

       pvm_siblings can return the following error codes

       PvmNoTask
              No task at that index, or index is invalid.

SEE ALSO

       pvm_spawn(3PVM), pvm_mytid(3PVM), pvm_parent(3PVM)

                                                  26 June, 1997                                   SIBLINGS(3PVM)