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.