C int bufid = pvm_initsend( int encoding )
Fortran call pvmfinitsend( encoding, bufid )
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
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.
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 )