LIBPVM(3PVM)

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

πŸ’– LIBPVM β€” the PVM C & Fortran programming libraries, bestie edition πŸ’–

okay so this is the libpvm3 / libfpvm3 page from PVM Version 3.4, and it's literally the manual for the libraries that make PVM apps talk to each other. sit down, grab a strawberry drink πŸ“, and let's get into it.


✨ NAME ✨

libpvm3, libfpvm3 β€” the PVM C and Fortran programming libraries. that's the whole name. slay.


🌸 DESCRIPTION 🌸

so every single PVM application must be linked with the libpvm library, no cap, because that's the only way it can communicate with the other entities chillin' in the PVM system. 🫢

the base library (libpvm3.a) is written in C and it directly supports C and C++ applications. and then the Fortran library (libfpvm3.a)? it's 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:

  • C apps β†’ link with at least the base PVM library, libpvm3.a
  • Fortran apps β†’ link with both libfpvm3.a and libpvm3.a
  • on some operating systems, PVM programs must be linked with other vendor-provided libraries too (like, socket or XDR functions, iykyk)
and if your program uses group functions? you also have to link with libgpvm3.a. don't forget, bestie, it will not work and you will cry. 😭

πŸ¦‹ SUBROUTINES πŸ¦‹

the libpvm subroutines can be divided into roughly five classes. five. iconic number. ✨

πŸ’Œ 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. love that for them. πŸ’–

but when things go wrong? the following error conditions can be returned by libpvm functions. buckle up.

  • PvmAlready β€” the requested operation needs exclusive access, and another one was already in progress. not me showing up to the function while it's busy. πŸ™ˆ
  • PvmBadMsg β€” the received message has a data format native to another machine, and libpvm literally cannot decode it.
  • PvmBadParam β€” a bad parameter got passed to the function. your fault, respectfully. πŸ’…
  • PvmBadVersion β€” two PVM components (pvmd and task, two pvmds, or two tasks) have incompatible protocol versions and cannot interoperate. version mismatch, the flop era of PVM. 😭
  • PvmCantStart β€” a pvmd could not be started on the local host, or a slave pvmd could not be started on a remote host.
  • PvmDSysErr β€” some internal mechanism in 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] (yes, that's how it's spelled in the original, we keep it verbatim, periodt)
  • 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 tried 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. the bouncer said no. 🚫
  • PvmExists β€” there is already an entry matching the insert request.
  • PvmHostFail β€” a foreign host in the virtual machine failed during the requested operation.
  • PvmMismatch β€” a parameter does not match a corresponding one.
  • PvmNoBuf β€” there is no current message buffer to pack or unpack.
  • PvmNoData β€” the end of a message buffer was reached while trying to unpack data. you ran out mid-sentence bestie. 😭
  • PvmNoEntry β€” the class server has no entry matching the lookup request. [In Version 3.4: Relaced by PvmNotFound] (again, spelling preserved, we don't edit the sacred texts)
  • PvmNoFile β€” the named executable does not exist.
  • PvmNoGroup β€” the named group does not exist.
  • PvmNoHost β€” there is no host in the virtual machine with the given name, or the name could not be resolved to an address.
  • PvmNoInst β€” the named group has no member with this instance.
  • PvmNoMem β€” Malloc failed to get memory for libpvm. she's out of storage, lowkey devastating.
  • PvmNoParent β€” this task has no parent task.
  • PvmNoSuchBuf β€” there is 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 could not be completed due to lack of resources.
  • PvmOverflow β€” a value is too large to be packed or unpacked.
  • PvmSysErr β€” libpvm could not contact a pvmd on the local host, or the pvmd failed during an operation. ghosted by the daemon fr fr. πŸ‘»

πŸŽ€ FILES πŸŽ€

these are the files, and they're all under $PVM_ROOT. main character energy each one.

  • $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 🌟

go read these next, bestie, they're the lore:

  • aimk(1PVM)
  • pvm(1PVM)
  • pvm_intro(1PVM)
  • pvmd3(1PVM)

and that's the whole page!! πŸŽ‰ this was LIBPVM, part of PVM Version 3.4, dated 27 June, 1994 β€” and it lives in section 3PVM of the manual. obsessed with her, honestly. go write something and link it properly. mwah. πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸ«Ά

πŸ“¦ where this page comes from