1PSEND(3PVM) PVM Version 3.4 PSEND(3PVM)
2
3
4
6 pvm_psend - Pack and send data in one call.
7
8
10 C int info = pvm_psend( int tid, int msgtag, char *buf,
11 int len, int datatype )
12
13 Fortran call pvmfpsend( tid, msgtag, buf, len, datatype,
14 info )
15
16
18 tid Integer task identifier of destination process.
19
20 msgtag Integer message tag supplied by the user. msgtag should be >=
21 0.
22
23 buf Pointer to a buffer to send.
24
25 len Length of buffer (in multiple of data type size).
26
27 datatype
28 Type of data to which buf points (see below).
29
30 info Integer status code returned by the routine.
31
32
34 The routine pvm_psend takes a pointer to a buffer buf its length len
35 and its data type datatype and sends this data directly to the PVM task
36 identified by tid. msgtag is used to label the content of the message.
37 If pvm_psend is successful, info will be 0. If some error occurs then
38 info will be < 0.
39
40 pvm_psend data can be received by pvm_precv, pvm_recv, pvm_trecv, or
41 pvm_nrecv.
42
43 The pvm_psend routine is asynchronous. Computation on the sending pro‐
44 cessor resumes as soon as the buffer is safe for reuse. This is in
45 contrast to synchronous communication, during which computation on the
46 sending processor halts until the matching receive is executed by the
47 receiving processor.
48
49 In C the datatype parameter must be one of the following, depending on
50 the type of data to be sent: [Version 3.3.0 - This parameter only
51 determines message length, not data conversion. It only sends raw
52 bytes]
53 datatype Data Type
54 PVM_STR string
55 PVM_BYTE byte
56 PVM_SHORT short
57 PVM_INT int
58 PVM_FLOAT real
59 PVM_CPLX complex
60 PVM_DOUBLE double
61 PVM_DCPLX double complex
62 PVM_LONG long integer
63 PVM_USHORT unsigned short int
64 PVM_UINT unsigned int
65 PVM_ULONG unsigned long int
66
67 In Fortran the same data types specified for pack should be used.
68
69 The PVM model guarantees the following about message order. If task 1
70 sends message A to task 2, then task 1 sends message B to task 2, mes‐
71 sage A will arrive at task 2 before message B. Moreover, if both mes‐
72 sages arrive before task 2 does a receive, then a wildcard receive will
73 always return message A.
74
75 pvm_psend does not affect the state of the current outgoing message
76 buffer (created by pvm_initsend and used by pvm_send).
77
79 In some versions of PVM (CM5, I860 and PGON), messages sent using
80 pvm_psend must be received only by pvm_precv, likewise those sent with
81 pvm_send must be received by pvm_recv, pvm_nrecv or pvm_trecv.
82 pvm_psend is not compatible with pvm_recv (nor pvm_send with
83 pvm_precv). In addition, pvm_probe is not interoperable with
84 pvm_psend.
85
86 This problem occurs because nonstandard message headers are used for
87 efficiency in the pvm_psend function. In the generic Unix version of
88 PVM, the calls are fully interoperable.
89
90 The message tag space is shared between pvm_send and pvm_psend, so you
91 must be careful to avoid selecting the wrong message (for example by
92 using a wildcard to match the message).
93
95 C:
96 info = pvm_psend( tid, msgtag, array, 1000, PVM_FLOAT );
97
98 Fortran:
99 CALL PVMFPSEND( TID, MSGTAG, BUF, CNT, REAL4, INFO )
100
101
103 These error conditions can be returned by pvm_psend
104
105 PvmBadParam
106 giving an invalid tid, msgtag, or datatype.
107
108 PvmSysErr
109 pvmd not responding.
110
112 pvm_precv(3PVM), pvm_send(3PVM)
113
114
115
116 15 March, 1994 PSEND(3PVM)