4.3. Computation Environment

The same POOMA program can execute on a wide variety of computers. The default sequential computing environment consists of one processor and its associated memory, as found on a personal computer. In contrast, a distributed computing environment may have multiple processors and multiple distributed or shared memories. For example, some desktop computers have dual processors and shared memory, while a large supercomputer may have thousands of processors, perhaps with groups of eight sharing the same memory.

Using distributed computation requires three things:

  1. The program must declare how container domains will be distributed.

  2. POOMA must be configured to use a communications library.

  3. The POOMA executable must be run using the communications library.

All of these were illustrated in Section 3.6 and Section 3.8. Figure 3-4 illustrates the POOMA distributed computation model. Section 4.1.3 described how to declare containers with distributed domains. Here we present three concepts for distributed computation: patches, context, and a communication library.

A partition divides a container's domain into disjoint patches. For distributed computation, the patches are distributed among various processors, which compute the associated values. As illustrated in Figure 3-4, each patch can be surrounded by guard layers.

A context is a collection of shared memory and processors that can execute a program or a portion of a program. It can have one or more processors, but all these processors must access the same shared memory. Usually the computer and its operating system, not the programmer, determine the available contexts.

A communication library passes messages among contexts. POOMA uses the communication library to copy information among contexts, all of which is hidden from both the programmer and the user. POOMA works with the Message Passing Interface (MPI) Communications Library and the MM Shared Memory Library. See Section A.1 for details.