10.2 Communication Class

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.



Subsections
Michael L. Hall