LIBPVM(3PVM)
π LIBPVM β the PVM libraries, explained by your fave 3PVM girlie β¨
okay bestie, sit DOWN, because this is the page that makes every PVM app actually work. it's libpvm3 and libfpvm3 β the C and Fortran programming libraries, and if you're writing anything that talks to the rest of the PVM system, you're gonna be linked against these. no cap. π«Ά
πΈ NAME πΈ
libpvm3, libfpvm3 β the PVM C and Fortran programming libraries. that's the whole vibe. π
β¨ DESCRIPTION β¨
So. Every single PVM application has to be linked with the libpvm library, periodt β that's the only way it can communicate with the other entities living in the PVM system. no library, no talking, no slay. π
The base library is libpvm3.a, and it's written in C and directly supports both C and C++ applications. then there's the Fortran library, libfpvm3.a, which is basically a bunch of wrapper functions whose entire job is converting Fortran calling sequences into C. it's giving translator bestie. π¦
Here's the linking tea, write it down:
- C applications β link with at least the base PVM library,
libpvm3.a. - Fortran applications β link with both
libfpvm3.aandlibpvm3.a. - Some operating systems are extra and require you to link PVM programs with other vendor-provided libraries too (things with socket or XDR functions, for example).
- Programs that use group functions β also gotta link with
libgpvm3.a.
π SUBROUTINES π
The libpvm subroutines break down into roughly five classes. iconic organization honestly.
π Message Passing
pvm_bufinfo, pvm_freebuf, pvm_getrbuf, pvm_getsbuf, pvm_initsend, pvm_mcast, pvm_mkbuf, pvm_nrecv, pvm_pack, pvm_precv, pvm_probe, pvm_psend, pvm_recv, pvm_recvf, pvm_send, pvm_sendsig, pvm_setmwid, pvm_setrbuf, pvm_setsbuf, pvm_trecv, pvm_unpack
π Task Control
pvm_exit, pvm_kill, pvm_mytid, pvm_parent, pvm_pstat, pvm_spawn, pvm_tasks
π§ Group Library Functions
pvm_barrier, pvm_bcast, pvm_gather, pvm_getinst, pvm_gettid, pvm_gsize, pvm_joingroup, pvm_lvgroup, pvm_reduce, pvm_scatter
π Virtual Machine Control
pvm_addhosts, pvm_config, pvm_delhosts, pvm_halt, pvm_mstat, pvm_reg_hoster, pvm_reg_rm, pvm_reg_tasker, pvm_start_pvmd
β Miscellaneous
pvm_archcode, pvm_catchout, pvm_getopt, pvm_hostsync, pvm_notify, pvm_perror, pvm_setopt, pvm_settmask, pvm_tidtohost
π ERRORS π
On success, most libpvm functions return the constant PvmOk. cute, love that for them. π₯°
But when things go sideways, these are the error conditions libpvm functions can throw at you:
PvmAlreadyβ the requested operation needs exclusive access, and another one was already in progress. rude.PvmBadMsgβ the received message has a data format native to another machine, andlibpvmcan't decode it.PvmBadParamβ a bad parameter got passed to the function. we've all been there bestie.PvmBadVersionβ two PVM components (pvmd and task, two pvmds, or two tasks) have incompatible protocol versions and literally cannot interoperate. Version mismatch. πPvmCantStartβ a pvmd couldn't be started on the local host, or a slave pvmd couldn't be started on a remote host.PvmDSysErrβ some internal mechanism inside the pvmd failed during the requested operation.PvmDupEntryβ the class server already has an entry matching the insert request. [In Version 3.4: Relaced byPvmExists]PvmDupGroupβ the task has already a member of the group it attempted to join.PvmDupHostβ someone tried to add the same host to a virtual machine more than once, or to add a host that's already a member of another virtual machine owned by the same user.PvmDeniedβ operation is refused due to locking, permissions, etc. locked out, blocked, denied. π€PvmExistsβ there's already an entry matching the insert request.PvmHostFailβ a foreign host in the virtual machine failed during the requested operation.PvmMismatchβ a parameter doesn't match a corresponding one.PvmNoBufβ there's no current message buffer to pack or unpack. you forgot to make one, huh.PvmNoDataβ the end of a message buffer was reached while trying to unpack data.PvmNoEntryβ the class server has no entry matching the lookup request. [In Version 3.4: Relaced byPvmNotFound]PvmNoFileβ the named executable does not exist.PvmNoGroupβ the named group does not exist.PvmNoHostβ there's no host in the virtual machine with the given name, or the name couldn't be resolved to an address.PvmNoInstβ the named group has no member with this instance.PvmNoMemβmallocfailed to get memory forlibpvm. πPvmNoParentβ this task has no parent task. orphan era.PvmNoSuchBufβ there's no message buffer with the given buffer handle.PvmNoTaskβ no task exists with the given tid.PvmNotFoundβ no entry matching the lookup request was found.PvmNotImplβ thislibpvmfunction or option is not implemented.PvmNotInGroupβ the named group has no such member task.PvmNullGroupβ a null group name was passed to a function.PvmOutOfResβ the requested operation couldn't be completed due to lack of resources.PvmOverflowβ a value is too large to be packed or unpacked.PvmSysErrβlibpvmcouldn't contact a pvmd on the local host, or the pvmd failed during an operation.
π FILES π
$PVM_ROOT/include/fpvm3.hβ Fortran header file$PVM_ROOT/include/pvm3.hβ C header file$PVM_ROOT/include/pvmsdpro.hβ header file for tasker, hoster and resource manager tasks$PVM_ROOT/include/pvmtev.hβ header file for tasks manipulating trace events$PVM_ROOT/lib/$PVM_ARCH/libpvm3.aβ C (base) library$PVM_ROOT/lib/$PVM_ARCH/libfpvm3.aβ Fortran wrapper library$PVM_ROOT/lib/$PVM_ARCH/libgpvm3.aβ group function library
π· SEE ALSO π·
aimk(1PVM), pvm(1PVM), pvm_intro(1PVM), pvmd3(1PVM)
and that's the whole page, bestie!! π this lil manual is PVM Version 3.4, and it was dated way back on 27 June, 1994 β vintage but still serving. go forth and link your libraries correctly. i'm obsessed with you. mwah. π
β¨ππ¦
π¦ 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