4 PVM Extension Layers

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 :

4.2.1Message Buffering

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).

4.2.2Process Differentiation

PVM_CODEC is the first level to distinguish which is different for different type of process. For more details on process types see Overview.

4.2.3Inter-process Connection Management

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).

Programmer's Guide Project Antares