Provided by: pvm-dev_3.4.6-5_amd64 bug

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 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.  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)