GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  PVM_PSEND (3)

NAME

pvm_psend - Pack and send data in one call.

CONTENTS

Synopsis
Parameters
Description
Warnings
Examples
Errors
See Also

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.

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

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 compatible 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 efficiency 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)
Search for    or go to Top of page |  Section 3 |  Main Index


PSEND (3PVM) 15 March, 1994

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.