In the previous chapter, we presented several different implementations of the Doof2d simulation program. The implementations illustrate the various containers, computation modes, and computation environments that POOMA supports. In this chapter, we describe the concepts associated with each of these three categories. Specific details needed for their use are deferred to later chapters.
The most important POOMA concepts can be grouped into three separate categories:
data structures holding one or more values and usually accessed using indices
styles of expressing computations and accesses to container values
description of resources for computing, e.g., single processor or multiprocessor.
Table 4-1 categorizes the POOMA concepts. Many POOMA programs select one possibility from each category. For example, Example 3-4 used Array containers and stencils for sequential computation, while Example 3-7 used Field containers and data-parallel statements with distributed computation. A program may use multiple containers and various computation modes, but the computation environment is either distributed or not.
Table 4-1. POOMA Concepts
Computation | ||
---|---|---|
Container | Computation Modes | Environment |
Array | element-wise | sequential |
DynamicArray | data-parallel | distributed |
Field | stencil-based | |
Tensor | relational | |
TinyMatrix | ||
Vector |
In the rest of this chapter, we explore these three categories. First, we describe POOMA containers, illustrating the purposes of each, and explaining the concepts needed to declare them. Then, we describe the different computation modes and distributed computation concepts.