10.7 Overlapped_Vector Class

The Overlapped_Vector Class is used to describe an overlapped vector (existing across all the processors) in the CÆSAR Code Package. An Overlapped_Vector is part of the overall data structure strategy in CÆSAR, which is made up of the following classes: Base_Structure, Data_Index, Assembled_Vector, Distributed_Vector, Overlapped_Vector, and Collected_Array. A description of the overall data structure strategy can be found in the Data_Structures Module.

The form of a collected Overlapped_Vector object is given by:

Array ( [dim1, [dim2, [dim3,]]] One_Axis [, Many_Axis] )or

Array ( dim_ragged_right, One_Axis [, Many_Axis] ) --> not implementedwhere One_Axis refers to the axis which is spread across the processors.

Overlapped_Vector public procedures:

Fundamental procedures |
|||

Initialize |
Initializes an Overlapped_Vector object. | ||

Finalize |
Finalizes an Overlapped_Vector object. | ||

Valid_State |
Returns false iff an Overlapped_Vector object is in an invalid state. | ||

Initialized |
Returns true iff an Overlapped_Vector object has been initialized. | ||

Operations |
|||

Collect_and_Access |
Another name for Get_Values. | ||

Collect_and_Combine |
Collects the values from an Overlapped Vector, and
then combines them to form a Distributed Vector, according to
the internal Many_of_One_Index object. The resultant
Distributed Vector is distributed according to the One
Structure of the Overlapped Vector. A combination operator,
to be put in the place of ``Combine'', must be specified.
Allowed values for ``Combine'' are: Average,
MAX, MIN, or SUM.
Collect_and_SUM also has an assignment interface. |
||

Gather |
Does the communication necessary to set an Overlapped Vector from a Distributed Vector (also has an assignment interface). | ||

Get_Values |
Collects and accesses the values from an Overlapped_Vector object and returns them in a bare naked array (also has an assignment interface). | ||

Many_Locus |
Returns the Many Structure locus of the Overlapped_Vector object. | ||

Name |
Returns the name of the Overlapped_Vector object. | ||

One_Locus |
Returns the One Structure locus of the Overlapped_Vector object. | ||

Output |
Writes out the Overlapped_Vector object. | ||

Set_Version |
Sets the version number of the Overlapped_Vector object (also has an assignment interface). | ||

Version |
Returns the version number of the Overlapped_Vector object. |

Overlapped_Vector public defined type:

Overlapped_Vector type |
|||

Dimensionality |
The number of dimensions that the ``vector'' has, including the dimension that is spread over the processors. ``Ragged_Right'' indices are signified by a Dimensionality of -1. (Ragged_Right is not yet implemented.) | ||

Dimensions |
The extents of the dimensions that the ``vector'' has, including the dimension that is spread over the processors, which is last. | ||

DV |
A pointer to the Distributed Vector that this Overlapped Vector is based on. | ||

DV_Internal |
An internal Distributed Vector that is constructed if the Overlapped Vector is not based on an external Distributed Vector. | ||

Initialized |
Initialization status. | ||

Many_of_One_Index |
The Index that is used to modify the Distributed Vector. | ||

Many_Structure |
Basic data structure which corresponds to the structure of the Distributed Vector that this Overlapped Vector is based on. | ||

Name |
The name for this variable (especially useful in a vector of Overlapped Vectors). | ||

One_Structure |
Basic data structure which corresponds to the way that this Overlapped Vector has been formed. If this Overlapped Vector were to be combined, it would result in a Distributed Vector with a One_Structure basis. | ||

Overlap_Index |
The index for the distributed axis of the off-PE values. | ||

Overlap_Trace |
The trace for the distributed axis of the off-PE values. | ||

Overlap_Values{n} |
Off-PE values in the vector, that are stored locally, with a different length on each PE. Values may have either 1, 2, 3, or 4 dimensions (n = 1, 2, 3, or 4), or be a ragged right array (n = RR). The last dimension is always the dimension to be spread across the processors. Only one of the variables will be allocated for a given object. Ragged right arrays have not been implemented yet. | ||

Version |
Version number which is incremented every time the vector is modified, or is synced with the version number of a data structure that it depends on when it is updated. |

The Overlapped_Vector Class code listing contains additional documentation. The Overlapped_Vector Class also contains a Unit Test Program.

- 10.7.1 Initialize_Overlapped_Vector Procedure
- 10.7.2 Finalize_Overlapped_Vector Procedure
- 10.7.3 Valid_State_Overlapped_Vector Procedure
- 10.7.4 Initialized_Overlapped_Vector Procedure
- 10.7.5 Collect_and_Combine_DV_from_OV Procedure
- 10.7.6 Gather_OV_from_DV Procedure
- 10.7.7 Get_Locus_Overlapped_Vector Procedure
- 10.7.8 Get_Name_Overlapped_Vector Procedure
- 10.7.9 Get_Values_Overlapped_Vector Procedure
- 10.7.10 Get_Version_Overlapped_Vector Procedure
- 10.7.11 Output_Overlapped_Vector Procedure
- 10.7.12 Set_Version_Overlapped_Vector Procedure