Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MCAST(3PVM)			PVM Version 3.4			   MCAST(3PVM)

NAME
       pvm_mcast  -  Multicasts	the data in the	active message buffer to a set
       of tasks.

SYNOPSIS
       C    int	info = pvm_mcast( int *tids, int ntask,	int msgtag )

       Fortran	 call pvmfmcast( ntask,	tids, msgtag, info )

PARAMETERS
       ntask   Integer specifying the number of	tasks to be sent to.

       tids    Integer array of	length ntask containing	the task  IDs  of  the
	       tasks to	be sent	to.

       msgtag  Integer	message	tag supplied by	the user.  msgtag should be >=
	       0.  It allows the user's	program	to distinguish between differ-
	       ent kinds of messages .

       info    Integer status code returned by the routine.  Values less  than
	       zero indicate an	error.

DESCRIPTION
       The  routine  pvm_mcast	multicasts a message stored in the active send
       buffer to ntask tasks specified in the tids array.  The message is  not
       sent to the caller even if listed in the	array of tids.	The content of
       the  message  can be distinguished by msgtag.  If pvm_mcast is success-
       ful, info will be 0. If some error occurs then info will	be < 0.

       The receiving processes can call	either pvm_recv	or  pvm_nrecv  to  re-
       ceive their copy	of the multicast.  pvm_mcast is	asynchronous and based
       on a minimum spanning tree algorithm between the	pvmds.	Computation on
       the  sending  processor resumes as soon as the message is safely	on its
       way to the receiving processors.	 This is in  contrast  to  synchronous
       communication,  during which computation	on the sending processor halts
       until the matching receive is executed by the receiving processor.

       pvm_mcast first determines which	 other	pvmds  contain	the  specified
       tasks.  Then passes the message to these	pvmds which in turn distribute
       the message to their local tasks	without	further	network	traffic.

       Multicasting  is	 not  supported	by most	multiprocessor vendors.	 Typi-
       cally their native calls	only  support  broadcasting  to	 {\m  all  the
       user's  processes  on  a	 multiprocessor.  Because  of  this  omission,
       pvm_mcast may not be an efficient communication method on  some	multi-
       processors  except  in  the  special  case  of  broadcasting to all PVM
       processes.

EXAMPLES
       C:
	    info = pvm_initsend( PvmDataRaw );
	    info = pvm_pkint( array, 10, 1 );
	    msgtag = 5 ;
	    info = pvm_mcast( tids, ntask, msgtag );

       Fortran:
	    CALL PVMFINITSEND(PVMDEFAULT)
	    CALL PVMFPACK( REAL4, DATA,	100, 1,	INFO )
	    CALL PVMFMCAST( NPROC, TIDS, 5, INFO )

ERRORS
       These error conditions can be returned by pvm_mcast

       PvmBadParam
	      giving a msgtag <	0.

       PvmSysErr
	      pvmd not responding.

       PvmNoBuf
	      no send buffer.

SEE ALSO
       pvm_psend(3PVM),	pvm_recv(3PVM),	pvm_send(3PVM)

				30 August, 1993			   MCAST(3PVM)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pvmfmcast&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help