pvm_psend(3)
Table of Contents

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

datatype
Type of data to which buf points (see below).

info Integer status code returned by the routine.

DISCUSSION

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

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_initsend(3PVM), pvm_pack(3PVM), pvm_recv(3PVM), pvm_send(3PVM)


Table of Contents

Back to man pages...