LIBPVM(3PVM)

πŸ“¦ version 3.4.6, in debian bookworm, ubuntu jammy

πŸ’– 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.a and libpvm3.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, and libpvm can'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 by PvmExists]
  • 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 by PvmNotFound]
  • 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 β€” malloc failed to get memory for libpvm. 😭
  • 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 β€” this libpvm function 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 β€” libpvm couldn'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