# Parallel simulation support

Parallel simulation support has a layered architecture, with the following layers:. More...

## Classes

class | cAdvancedLinkDelayLookahead
| Lookahead calculation based on inter-partition link delays only. More...
class | cFileCommunications
| Implementation of the communications layer which works via files. More...
class | cFileCommBuffer
| Communication buffer that packs data in a text representation into a memory buffer. More...
class | cIdealSimulationProtocol
| Implements the Ideal Simulation Protocol, described in the paper "Performance Evaluation of Conservative Algoritms in Parallel Simulation Languages" by Bagrodia et al. More...
class | cISPEventLogger
| Implements phase one for the Ideal Simulation Protocol (ISP), namely, creating the log of "external" events. More...
class | cLinkDelayLookahead
| Lookahead calculation based on inter-partition link delays only. More...
class | cMemCommBuffer
| Communication buffer that packs data into a memory buffer without any transformation. More...
class | cMPICommunications
| MPI implementation of the basic parallel simulation communications layer. More...
class | cMPICommBuffer
| Communication buffer that wraps MPI_Pack() and MPI_Unpack() functions. More...
class | cNamedPipeCommunications
| Implementation of the communications layer which uses named pipes. More...
class | cNMPLookahead
| Base class of lookahead calculations for cNullMessageProtocol which implements the "null message algorithm". More...
class | cNoSynchronization
| "Dummy" implementation -- just pass messages between partitions, without any synchronization. More...
class | cNullMessageProtocol
| Implements the "null message algorithm". More...
class | cParsimPartition
| Represents one partition in a parallel simulation. More...
class | cParsimProtocolBase
| Contains utility functions for implementing parallel simulation protocols. More...
class | cParsimSynchronizer
| Abstract base class for parallel simulation algorithms. More...
class | cPlaceHolderModule
| In distributed parallel simulation, modules of the network are distributed across partitions. More...
class | cProxyGate
| A gate that belongs to a cross-partition link and represents the remote gate on the local partition. More...
class | cPtrPassingMPICommunications
| MPI communications layer, to be used with 64-bit shared memory superclusters like SGI Altix. More...
class | cPtrPassingMPICommBuffer
| A variant of cMPICommBuffer. More...
class | cReceivedException
| Represents an exception that has been received from other partitions. More...
class | cReceivedTerminationException
| Represents a termination exception that has been received from other partitions. More...

## Detailed Description

Parallel simulation support has a layered architecture, with the following layers:.

1. Communications layer, represented by cParsimCommunications. This encapsulates all details of message passing between parts of a program that executes in parallel, and hides details of the communications library (MPI, PVM, ...). Subclasses implemented here are cMPICommunications, cNamedPipeCommunications, cFileCommunications.

2. Partition layer, represented by cParsimPartition. This encapsulates the task of distributing the simulation model over several partitions, and handles messaging between these partitions. It relies on layer 1 for this.

3. Synchronization layer, represented by cParsimSynchronizer. It encapsulates the different parallel simulation algorithms like the conservative null message algorithm. This layer heavily cooperates with the message scheduler of the simulation.

See corresponding classes for more information.