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 different 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 successful, 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  receive
     their copy of the multicast.  pvm_mcast is asynchronous and based on a min-
     imum spanning tree algorithm between the pvmds.  Computation on the sending
     processor	resumes  as  soon as the message is safely on its way to the re-
     ceiving processors.  This is in contrast to synchronous communication, dur-
     ing which computation on the sending processor halts until the matching re-
     ceive 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.  Typically
     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 multiprocessors 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.1.quarterly>

home | help