INITSEND (3)
Clear default send buffer and specify message encoding.
SYNOPSIS
B
C int bufid = pvm_initsend( int encoding )
Fortran call pvmfinitsend( encoding, bufid )
PARAMETERS
Integer specifying the next message's encoding scheme.
0.5i 2.5i 3.0i
Options in C are:
Encoding value MEANING
PvmDataDefault 0 XDR
PvmDataRaw 1 no encoding
PvmDataInPlace 2 data left in place
Option names are in Fortran are:
Encoding value MEANING
PVMDEFAULT 0 XDR
PVMRAW 1 no encoding
PVMINPLACE 2 data left in place
Integer returned containing the message buffer identifier.
Values less than zero indicate an error.
DESCRIPTION
The routine
pvm_initsend
clears the send buffer
and prepares it for packing a new message.
The encoding scheme
used for the packing is set by
encoding.
XDR encoding is used by default
because PVM can not know
if the user is going to add a heterogeneous machine
before this message is sent.
If the user knows that the
next message will only be sent to a machine that understands
the native format, then he can use PvmDataRaw encoding
and save on encoding costs.
PvmDataInPlace encoding specifies that data be left in place during
packing.
The message buffer only contains the sizes and pointers to the items
to be sent. When pvm_send is called the items are copied directly
out of the user's memory. This option decreases the number of
times a message is copied at the expense of requiring the user
to not modify the items between the time they are packed and the time
they are sent.
If pvm_initsend is successful, then
bufid
will contain the
message buffer identifier.
If some error occurs then
bufid
will be < 0.
RESTRICTIONS
PvmDataInPlace allows only dense (stride = 1) data in version 3.3.
It cannot be used on shared memory (*MP) architectures;
a PvmNotImpl error will occur at send time.
EXAMPLES
C:
bufid = pvm_initsend( PvmDataDefault );
info = pvm_pkint( array, 10, 1 );
msgtag = 3 ;
info = pvm_send( tid, msgtag );
Fortran:
CALL PVMFINITSEND(PVMRAW, BUFID)
CALL PVMFPACK( REAL4, DATA, 100, 1, INFO )
CALL PVMFSEND( TID, 3, INFO )
ERRORS
These error conditions can be returned by
pvm_initsend
giving an invalid encoding value
Malloc has failed. There is not enough memory to create the buffer
SEE ALSO
|