SEND(3PVM)
π SEND(3PVM) β pvm_send, bestie edition
okay so like, welcome to the PVM Version 3.4 girlies' guide to pvm_send π
this is a 3PVM manual page and we're gonna read it together, no cap.
β¨ NAME β¨
pvm_send β sends the data in the active message buffer. Immediately. Not later, not eventually, immediately. it's giving "no thoughts, just vibes, message is already gone" π¦
πΈ SYNOPSIS πΈ
C:
int info = pvm_send( int tid, int msgtag )
Fortran:
call pvmfsend( tid, msgtag, info )
π PARAMETERS π
tidβ integer task identifier of the destination process. i.e. who you're sending this to π«Άmsgtagβ integer message tag supplied by the user. lowkey important:msgtagshould be>= 0βinfoβ integer status code that the routine hands back to you. the receipts, basically π
π DESCRIPTION π
so the routine pvm_send sends a message that's stored in the active send buffer over to the PVM process identified by tid. and msgtag? that's the little label you slap on the message content so everyone knows what's in it π·οΈ
if pvm_send slays (aka succeeds), info will be 0. if some error happens, then info will be < 0. simple as that, bestie π
now, the tea: pvm_send is asynchronous β computation on the sending processor picks right back up as soon as the message is safely on its way to the receiving processor. this is in contrast to synchronous communication, where computation on the sending processor just sits there halted until the matching receive is executed by the receiving processor. one of these is main character energy, one of these is waiting in line π
the PVM model guarantees the following about message order, and this is important so listen up π if task 1 sends message A to task 2, then task 1 sends message B to task 2, then message A will arrive at task 2 before message B. periodt. moreover, if both messages arrive before task 2 does a receive, then a wildcard receive will always return message A. the queue does not play games π
β οΈ okay real talk, this part matters: terminating a PVM task immediately after sending a message or messages from it may result in those messages being lost. to be sure, always callpvm_exit()before stopping. do not skip this. do not be cute about it. callpvm_exit()π¨
π EXAMPLES π
C, iconic:
info = pvm_initsend( PvmDataDefault );
info = pvm_pkint( array, 10, 1 );
msgtag = 3 ;
info = pvm_send( tid, msgtag );
Fortran, also iconic:
CALL PVMFINITSEND(PVMRAW, INFO)
CALL PVMFPACK( REAL8, DATA, 100, 1, INFO )
CALL PVMFSEND( TID, 3, INFO )
π ERRORS π
these error conditions can be returned by pvm_send, and yes we're listing all of them:
PvmBadParamβ you gave an invalidtidor amsgtag. ngl, that's on you πPvmSysErrβpvmdnot responding. it's ghosting you πPvmNoBufβ no active send buffer. trypvm_initsend()before send π§
π₯ SEE ALSO π₯
pvm_initsend(3PVM), pvm_mcast(3PVM), pvm_pack(3PVM), pvm_psend(3PVM), pvm_recv(3PVM)
and that's the whole page, bestie β¨ this was PVM Version 3.4, dated 30 August, 1993 β yes she's an elder but she still ate π
mwah, go call pvm_exit() π«Ά
π¦ where this page comes from
- debian bookworm: pvm-dev 3.4.6-5
- ubuntu jammy: pvm-dev 3.4.6-3.2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms