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)