ABSTRACT

Simulation is a widely used tool for monitoring and forecasting the performance of real systems. Before building the system, experiments are performed on the simulated model to locate possible sources of errors, which saves money and effort and boosts confidence. In the area of networking, network simulators are very popular and widely used. VLSI designers use circuit simulation packages like SPICE to study the performance before actually building the system. Sensitive safety-critical applications invariably use simulation, not only to verify the design, but also to find ways to deal with catastrophic or unforeseen situations. Airlines use flight simulators to train pilots. Most real life problems are large and complex, and they take an enormous amount of time on sequential machines. This motivates the running of simulation jobs concurrently on multiple processors. Distributing the total simulation among several processors is conceptually easy, but poses interesting synchronization challenges. In this chapter, we will study some of these challenges.