The Communication Class is used to wrap the communication calls to other packages from the CÆSAR Code Package. It also contains serial versions of the routines so that CÆSAR may be run without any external packages on a serial platform.
Communication public procedures:
Fundamental procedures | |||
Initialize | Initializes communication. | ||
Finalize | Finalizes communication. | ||
Valid_State | Returns false iff the communication is in an invalid state. | ||
Operations | |||
Abort | Stops execution on all processors. | ||
Assemble | Takes a variable that is distributed across all the processors and pulls it together (assembles it) on the IO PE. This is the opposite of the Distribute procedure. | ||
Broadcast | Sets a variable on all the processors to a value on the IO PE. | ||
Distribute | Takes a variable on the IO PE and divides it up (distributes it) among all the processors. This is the opposite of the Assemble procedure. | ||
Gather | Transforms one distributed variable into another distributed variable, according to an indirection index. No collisions are possible, since this call is effectively pulling values out of a distributed variable, and there is a different location for each pulled value. This is the opposite of the Scatter procedure. | ||
Global Reductions | Global operations that require communication with all the processors, such as SUM, ALL, etc. | ||
Output | Outputs information about the communication set-up. | ||
Output_Test | Outputs the result of a test. | ||
Parallel_Write | Outputs data that is distributed across the processors. | ||
Scatter_OP | Transforms one distributed variable into another distributed variable, according to an indirection index. Collisions are possible, since this call is effectively putting values into a distributed variable, and more than one value can go into the same location. Therefore, a combination operator, OP, must be specified. Allowed values for OP are: AND, MAX, MIN, OR, or SUM. This is the opposite of the Gather procedure. |
Communication public defined types:
Communication_type | The Communication Class variable type. |
Communication public variables:
delta_PE_IO_PE | Kronecker delta (PE, IO_PE). | ||
IO_PE | The PE number which is allowed to do I/O. | ||
NPEs | Total number of PEs (1 for serial runs). | ||
Parallel | True for parallel runs, false for serial runs. | ||
Parallel_Library | The name of the parallel communication library. | ||
Serial | True for serial runs, false for parallel runs. | ||
Scope | Global scope for PGSLib - not really utilized yet. | ||
this_is_IO_PE | True on any PE which is allowed to perform I/O operations. | ||
this_is_not_IO_PE | True on any PE which is not allowed to perform I/O operations. | ||
this_PE | The PE number for this processor (in the range ). |
The Communication Class code listing contains additional documentation. The Communication Class also contains a Unit Test Program.