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

FreeBSD Manual Pages

  
 
  

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

NAME
     pvm_psend - Pack and send data in one call.

SYNOPSIS
     C	  int info = pvm_psend( int tid, int msgtag, char *buf,
				int len, int datatype )

     Fortran   call pvmfpsend( tid, msgtag, buf, len, datatype,
			     info )

PARAMETERS
     tid     Integer task identifier of destination process.

     msgtag  Integer message tag supplied by the user.	msgtag should be >= 0.

     buf     Pointer to a buffer to send.

     len     Length of buffer (in multiple of data type size).

     datatypeType of data to which buf points (see below).

     info    Integer status code returned by the routine.

DESCRIPTION
     The  routine  pvm_psend  takes a pointer to a buffer buf its length len and
     its data type datatype and sends this data directly to the PVM task identi-
     fied by tid.  msgtag is used to label  the  content  of  the  message.   If
     pvm_psend	is  successful,  info  will be 0. If some error occurs then info
     will be < 0.

     pvm_psend data can  be  received  by  pvm_precv,  pvm_recv,  pvm_trecv,  or
     pvm_nrecv.

     The  pvm_psend routine is asynchronous.  Computation on the sending proces-
     sor resumes as soon as the buffer is safe for reuse.  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.

     In  C the datatype parameter must be one of the following, depending on the
     type of data to be sent: [Version 3.3.0 - This  parameter	only  determines
     message length, not data conversion.  It only sends raw bytes]
	 datatype    Data Type
	 PVM_STR     string
	 PVM_BYTE    byte
	 PVM_SHORT   short
	 PVM_INT     int
	 PVM_FLOAT   real
	 PVM_CPLX    complex
	 PVM_DOUBLE  double
	 PVM_DCPLX   double complex
	 PVM_LONG    long integer
	 PVM_USHORT  unsigned short int
	 PVM_UINT    unsigned int
	 PVM_ULONG   unsigned long int

     In Fortran the same data types specified for pack should be used.

     The  PVM  model  guarantees  the  following about message order.  If task 1
     sends message A to task 2, then task 1 sends message B to task 2, message A
     will arrive at task 2 before message B.  Moreover, if both messages  arrive
     before  task  2  does a receive, then a wildcard receive will always return
     message A.

     pvm_psend does not affect the state of the current outgoing message  buffer
     (created by pvm_initsend and used by pvm_send).

WARNINGS
     In some versions of PVM (CM5, I860 and PGON), messages sent using pvm_psend
     must  be received only by pvm_precv, likewise those sent with pvm_send must
     be received by pvm_recv, pvm_nrecv or pvm_trecv.  pvm_psend is not compati-
     ble with pvm_recv (nor pvm_send with pvm_precv).  In addition, pvm_probe is
     not interoperable with pvm_psend.

     This problem occurs because nonstandard message headers are used for  effi-
     ciency  in the pvm_psend function.  In the generic Unix version of PVM, the
     calls are fully interoperable.

     The message tag space is shared between pvm_send and pvm_psend, so you must
     be careful to avoid selecting the wrong message (for  example  by	using  a
     wildcard to match the message).

EXAMPLES
     C:
	 info = pvm_psend( tid, msgtag, array, 1000, PVM_FLOAT );

     Fortran:
	 CALL PVMFPSEND( TID, MSGTAG, BUF, CNT, REAL4, INFO )

ERRORS
     These error conditions can be returned by pvm_psend

     PvmBadParam
	    giving an invalid tid, msgtag, or datatype.

     PvmSysErr
	    pvmd not responding.

SEE ALSO
     pvm_precv(3PVM), pvm_send(3PVM)

				 15 March, 1994 		     PSEND(3PVM)

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

home | help