There are two layers directly above PVM
Both of these layers are designed to simplify usage of PVM and to extend PVM functionality for specific needs of parallel computation and frequent message exchange.
This layer contains methods which call PVM methods in a more user-friendly way, methods for handling simple types and type maps before sending and after retrieving from PVM (pvmRetrieve(), sendTypes() and sendTypeMap()). This layer is able to work with extended message format (see Messages) and it is responsible for keeping architectural independency in data exchange. To satisfy the conditions for keeping architectural independency the programmer must use the principles of serialization.
This layer is an successor of PVM_COVER and the main extensions are :
This feature decreases the network load by transferring smaller amount of larger messages instead of sending many small messages. Each message sending has a considerable overhead. Hence by message buffering we reduce the overhead substantially. If any sending method from PVM_COVER is called, the data are immediately given to PVM for sending. These methods are overriden in PVM_CODEC. Instead of direct sending they store the message in a sending buffer and send later. There is one sending buffer for each registered process (see connection management). The sending buffer(s) can be flushed manually or they are flushed automatically by PVM_CODEC when the amount of messages reaches its specified maximum (for details see Reference Manual). The resulting buffered message is sent in form of a type map. In the receiver's PVM_CODEC layer such message is unbuffered. The whole buffering appears fully transparent for the objects higher in the hierarchy (except the maximum buffering variable).
PVM_CODEC is the first level to distinguish which is different for
different type of process. For more details on process types see
Overview.
PVM_CODEC is responsible for management of connections between
processes. The protocol of management is different for every process
type : There are no connections between the applications and child processes.
All information about child processes trasnferred to application is
handled by parent (the info is usually transferred in form of kernel infos).4.2.3Inter-process Connection Management
Programmer's Guide
Project Antares