=============================== OVERVIEW =======================================

Pypvm is a Python module which allows interaction with the
Parallel Virtual Machine (PVM) package.  PVM allows a collection
of computers connected by a network to serve as a single parallel
computer.  More information about the PVM package can be found at
http://www.epm.ornl.gov/pvm/.

Pypvm is intended to be an educational and prototyping tool.  To use
Pypvm, import the pypvm module.

Pypvm includes the sample files master_test.py and slave_test.py.
Put slave_test.py in your PVM search path and execute master_test.py to
test your configuration and demonstrate the use of pypvm.

The primary author of pypvm, W. Michael Petullo, can be contacted at
[email protected].

=============================== BUILDING =======================================

To build Pypvm, cross your fingers and try:

make -f Makefile.pre.in boot
make

I am in the process of migrating to the standard GNU build system.
Because of this, you may see some files related to GNU automake and
autoconf.  Please ignore them for the time being.

=============================== NASTY DETAILS ==================================

PypvmError
       An exception raised by pypvm.

mytid ()
       Returns the integer task identifier (TID) of the calling PVM
       process.

exit ()
       Tells the local pvmd that this process is leaving PVM.

spawn (task, argv, flag, where, ntask)
       Starts a new PVM process.  Task is a character string which
       is the executable file name of the PVM process to be started.
       Argv is a list of arguments to the executable.  Flag is an integer
       specifying spawn options, and can be the sum of: PvmTaskDefault,
       PvmTaskHost, PvmTaskArch, PvmTaskDebug, PvmTaskTrace, PvmMppFront,
       and PvmHostCompl.  Where is a character string specifying where
       to start the PVM process; if where is 0, it will be ignored and
       PVM will select the most appropriate host.  Ntask is an integer
       specifying the number of copies of the executable to start.
       Spawn returns a list containing the TIDs of spawned tasks.

kill (tid)
       Terminates a PVM process, specified by TID.

catchout (filename)
       Catch output from child tasks and print to filename.

parent ()
       Returns the TID of the process that spawned the calling process.

tidtohost (tid)
       Returns the host of a PVM process, specified by TID.

config (nhosts)
       Returns information about the current virtual machine
       configuration.

tasks (which, ntasks)
       Returns information about the tasks running on the virtual
       machine.

addhosts (hosts)
       Adds hosts to the virtual machine.  Hosts is a list of character
       string host names.  Addhosts returns a list containing the status
       of each host.

delhosts (hosts)
       Deletes hosts from the virtual machine.  Hosts is a list of
       character string host names.  Delhosts returns a list containing
       the status of each host.

sendsig (tid, signum)
       Sends a signal to another PVM process.  Tid is an integer
       representing the task to send the signal to.  Signum is the
       number of the signal to send.

notify (what, msgtag, cnt, tids)
       Requests notification of PVM event.  What is type of event to
       trigger notification, and is one of the following: PvmTaskExit,
       PvmHostDelete, or PvmHostAdd.  Msgtag is the message tag to be
       used for notification.  Cnt, for PvmTaskExit and PvmHostDelete,
       specifies the length of the TIDs list.  Otherwise, cnt specifies
       the number of times to notify.  Tids is an array of length cnt
       of TIDs and is not used with PvmHostAdd.

setopt (what, val)
       Sets a libpvm option.  What is an integer specifying what to set.
       Val is an integer value to set the option to.

getopt (what)
       Gets a libpvm option.  Returns the value of option what.

initsend (encoding)
       Clear default send buffer and specify message encoding.  Encoding
       is an integer specifying the next message's encoding scheme.
       Encoding can be PvmDataDefault, PvmDataRaw, or PvmDataInPlace.

mkbuf (encoding)
       Creates a new message buffer.  Encoding is an integer representing
       the encoding method to be used.  Mkbuf returns the new buffer's
       identifier.

freebuf (bufid)
       Disposes of the message buffer with identifier bufid.

get[rs]buf ()
       Returns the message buffer identifier for the active receive/send
       buffer.

set[rs]buf (bufid)
       Switches the active receive/send buffer to bufid and returns
       the previous buffer identifier.

pk (object)
       Pack the active message buffer with an arbitrary Python data type.

pkbyte   (list, stride)
pkcplx   (list, stride)
pkdcplx  (list, stride)
pkdouble (list, stride)
pkfloat  (list, stride)
pkint    (list, stride)
pklong   (list, stride)
pkshort  (list, stride)
       Packs list into the active send buffer, using stride.

pkstr (str)
       Packs a string into the active send buffer.

send (tid, msgtag)
       Immediately sends the data in the active message buffer.
       Tid is the TID of the destination process.  Msgtag is an integer
       message tag.


mcast (tids, msgtag)
       Multicasts the data in the active message buffer to a set
       of tasks.  Tids is a list of TIDs to send the message to.
       Msgtag is an integer message tag.

recv (tid, msgtag)
       Receive a message.  Tid is the TID of the sending process.
       Msgtag is an integer message tag.  Recv returns the bufid of
       the buffer the message was read from.

nrecv (tid, msgtag)
       Same as recv, but performs a non-blocking receive.  Tid is the
       TID of the sending process.  Msgtag is an integer message tag.
       Timeout is the time, in seconds, to wait for the message.
       Nrecv returns the bufid of the buffer the message was read from.

probe (tid, msgtag)
       Check if a message has arrived.  Tid is the TID of the sending
       process.  Msgtag is an integer message tag.

trecv (tid, msgtag, timeout)
       Receive a message with a timeout.

bufinfo (bufid)
       Returns information about a message buffer.  Bufid is an integer
       message buffer identifier.

upk ()
       Unpack an arbitrary Python data type from the active message buffer.

upkbyte   (nitems, stride)
upkcplx   (nitems, stride)
upkdcplx  (nitems, stride)
upkdouble (nitems, stride)
upkfloat  (nitems, stride)
upkint    (nitems, stride)
upklong   (nitems, stride)
       Unpacks nitems items from active receive buffer, using stride.

upkstr ()
       Unpacks a string from the active receive buffer.

tuperror ()
       Returns the most recent PVM error number and value.