|
Zoltan2
|
BasicVectorAdapter represents a vector (plus optional weights) supplied by the user as pointers to strided arrays. More...
#include <Zoltan2_BasicVectorAdapter.hpp>


Public Types | |
| typedef InputTraits< User >::zgid_t | zgid_t |
| typedef InputTraits< User > ::scalar_t | scalar_t |
| typedef InputTraits< User >::part_t | part_t |
Public Member Functions | |
| BasicVectorAdapter (lno_t numIds, const zgid_t *ids, const scalar_t *entries, int entryStride=1, bool usewgts=false, const scalar_t *wgts=NULL, int wgtStride=1) | |
| Constructor for one vector with (optionally) one weight. | |
| BasicVectorAdapter (lno_t numIds, const zgid_t *ids, std::vector< const scalar_t * > &entries, std::vector< int > &entryStride, std::vector< const scalar_t * > &weights, std::vector< int > &weightStrides) | |
| Constructor for multivector (a set of vectors sharing the same global numbering and data distribution across processes). | |
| BasicVectorAdapter (lno_t numIds, const zgid_t *ids, const scalar_t *x, const scalar_t *y, const scalar_t *z, int xStride=1, int yStride=1, int zStride=1, bool usewgts=false, const scalar_t *wgts=NULL, int wgtStride=1) | |
| A simple constructor for coordinate-based problems with dimension 1, 2 or 3 and (optionally) one weight per coordinate. | |
| ~BasicVectorAdapter () | |
| size_t | getLocalNumIDs () const |
| Returns the number of objects on this process. | |
| void | getIDsView (const zgid_t *&ids) const |
| int | getNumWeightsPerID () const |
| Returns the number of weights per object. Number of weights per object should be zero or greater. If zero, then it is assumed that all objects are equally weighted. | |
| void | getWeightsView (const scalar_t *&weights, int &stride, int idx) const |
| Provide pointer to a weight array with stride. | |
| int | getNumEntriesPerID () const |
| Return the number of vectors (typically one). | |
| void | getEntriesView (const scalar_t *&entries, int &stride, int idx=0) const |
| Provide a pointer to the elements of the specified vector. | |
| enum BaseAdapterType | adapterType () const |
| Returns the type of adapter. | |
| int | getDimension () const |
| void | getCoordinatesView (const scalar_t *&elements, int &stride, int idx=0) const |
| virtual void | getIDsView (const zgid_t *&Ids) const =0 |
| Provide a pointer to this process' identifiers. | |
| void | getPartsView (const part_t *&inputPart) const |
| Provide pointer to an array containing the input part assignment for each ID. The input part information may be used for re-partitioning to reduce data movement, or for mapping parts to processes. Adapters may return NULL for this pointer (the default behavior); if NULL is returned, algorithms will assume the rank. | |
| template<typename Adapter > | |
| void | applyPartitioningSolution (const User &in, User *&out, const PartitioningSolution< Adapter > &solution) const |
| Apply a PartitioningSolution to an input. | |
BasicVectorAdapter represents a vector (plus optional weights) supplied by the user as pointers to strided arrays.
BasicVectorAdapter may be a single vector or multivector (set of corresponding vectors with the same global identifiers and distribution across processes). A constructor specifically for use of BasicVectorAdapter to represent geometric coordinates is also provided.
Data types:
scalar_t is the data type for weights and vector entry values. lno_t is the integral data type used by Zoltan2 for local indices and local counts. gno_t is the integral data type used by Zoltan2 to represent global indices and global counts. zgid_t is the data type used by the application for global Ids. If the application's global Id data type is a Teuchos Ordinal, then zgid_t and gno_t are the same. Otherwise, the application global Ids will be mapped to Teuchos Ordinals for use by Zoltan2 internally. (Teuchos Ordinals are those data types for which traits are defined in Trilinos/packages/teuchos/src/Teuchos_OrdinalTraits.hpp.) node_t is a sub class of KokkosClassic::StandardNodeMemoryModel, which is used to optimize performance on many-core and multi-core architectures. If you don't use Kokkos, you can ignore this data type.The template parameter (User) is a C++ class type which provides the actual data types with which the Zoltan2 library will be compiled, through a Traits mechanism. User may be the actual class used by application to represent a vector, or it may be the empty helper class BasicUserTypes with which a Zoltan2 user can easily supply the data types for the library.
Definition at line 82 of file Zoltan2_BasicVectorAdapter.hpp.
typedef InputTraits<User>::zgid_t Zoltan2::BaseAdapter< User >::zgid_t [inherited] |
Reimplemented in Zoltan2::PamgenMeshAdapter< User >, and Zoltan2::BasicIdentifierAdapter< User >.
Definition at line 97 of file Zoltan2_Adapter.hpp.
typedef InputTraits<User>::scalar_t Zoltan2::BaseAdapter< User >::scalar_t [inherited] |
Reimplemented in Zoltan2::PamgenMeshAdapter< User >, and Zoltan2::BasicIdentifierAdapter< User >.
Definition at line 98 of file Zoltan2_Adapter.hpp.
typedef InputTraits<User>::part_t Zoltan2::BaseAdapter< User >::part_t [inherited] |
Reimplemented in Zoltan2::PamgenMeshAdapter< User >, and Zoltan2::BasicIdentifierAdapter< User >.
Definition at line 100 of file Zoltan2_Adapter.hpp.
| Zoltan2::BasicVectorAdapter< User >::BasicVectorAdapter | ( | lno_t | numIds, |
| const zgid_t * | ids, | ||
| const scalar_t * | entries, | ||
| int | entryStride = 1, |
||
| bool | usewgts = false, |
||
| const scalar_t * | wgts = NULL, |
||
| int | wgtStride = 1 |
||
| ) | [inline] |
Constructor for one vector with (optionally) one weight.
| numIds | the local length of the vector |
| ids | pointer to the global ids of the local vector entries |
| entries | pointer to the entries corresponding to the ids |
| entryStride | the k'th entry is at entries[k*entryStride] and entries is of length at least numIds * entryStride. |
| usewgts | flag indicating whether weights are provided on any process |
| wgts | the number of weights per vector entry |
| wgtStride | the weight for the k'th entry is at wgts[k*wgtStride] and wgts is of length at least numIds * wgtStride. The values pointed to the arguments must remain valid for the lifetime of this Adapter. |
Definition at line 114 of file Zoltan2_BasicVectorAdapter.hpp.
| Zoltan2::BasicVectorAdapter< User >::BasicVectorAdapter | ( | lno_t | numIds, |
| const zgid_t * | ids, | ||
| std::vector< const scalar_t * > & | entries, | ||
| std::vector< int > & | entryStride, | ||
| std::vector< const scalar_t * > & | weights, | ||
| std::vector< int > & | weightStrides | ||
| ) | [inline] |
Constructor for multivector (a set of vectors sharing the same global numbering and data distribution across processes).
| numIds | the local length of each vector |
| ids | a pointer to the global ids of the local vector entries |
| entries | a std::vector of pointers to the vector entries corresponding to the numIds ids. The number of vectors assumed to be entries.size(). |
| entryStride | The strides for entries. The vector entry for vector n for ids[k] should be found at entries[n][entryStride[n] * k]. If entryStride.size() is zero, it is assumed all strides are one. |
| weights | a list of pointers to arrays of weights. The number of weights per vector entry is assumed to be weights.size(). |
| weightStrides | a list of strides for the weights. The weight for weight index n for ids[k] should be found at weights[n][weightStrides[n] * k]. If weightStrides.size() is zero, it is assumed all strides are one. |
The values pointed to the arguments must remain valid for the lifetime of this Adapter.
Definition at line 162 of file Zoltan2_BasicVectorAdapter.hpp.
| Zoltan2::BasicVectorAdapter< User >::BasicVectorAdapter | ( | lno_t | numIds, |
| const zgid_t * | ids, | ||
| const scalar_t * | x, | ||
| const scalar_t * | y, | ||
| const scalar_t * | z, | ||
| int | xStride = 1, |
||
| int | yStride = 1, |
||
| int | zStride = 1, |
||
| bool | usewgts = false, |
||
| const scalar_t * | wgts = NULL, |
||
| int | wgtStride = 1 |
||
| ) | [inline] |
A simple constructor for coordinate-based problems with dimension 1, 2 or 3 and (optionally) one weight per coordinate.
| numIds | The number of local coordinates. |
| ids | The global identifiers for the coordinates. |
| x | A pointer to the x-dimension coordinates. |
| y | A pointer to the y-dimension coordinates, if any. |
| z | A pointer to the z-dimension coordinates, if any. |
| xStride | The stride for the x array. The coordinate for point ids[n] should be found at x[xStride * n]. Default = 1. |
| yStride | The stride for the y array. The coordinate for point ids[n] should be found at y[yStride * n]. Default = 1. |
| zStride | The stride for the z array. The coordinate for point ids[n] should be found at z[zStride * n]. Default = 1. |
| usewgts | flag indicating whether weights are provided on any process. |
| wgts | the number of weights per vector entry |
| wgtStride | the weight for the k'th coordinate is at wgts[k*wgtStride] and wgts is of length at least numIds * wgtStride. |
The values pointed to the arguments must remain valid for the lifetime of this Adapter.
Definition at line 198 of file Zoltan2_BasicVectorAdapter.hpp.
| Zoltan2::BasicVectorAdapter< User >::~BasicVectorAdapter | ( | ) | [inline] |
Definition at line 233 of file Zoltan2_BasicVectorAdapter.hpp.
| size_t Zoltan2::BasicVectorAdapter< User >::getLocalNumIDs | ( | ) | const [inline, virtual] |
Returns the number of objects on this process.
Objects may be coordinates, graph vertices, matrix rows, etc. They are the objects to be partitioned, ordered, or colored.
Implements Zoltan2::BaseAdapter< User >.
Definition at line 239 of file Zoltan2_BasicVectorAdapter.hpp.
| void Zoltan2::BasicVectorAdapter< User >::getIDsView | ( | const zgid_t *& | ids | ) | const [inline] |
Definition at line 241 of file Zoltan2_BasicVectorAdapter.hpp.
| int Zoltan2::BasicVectorAdapter< User >::getNumWeightsPerID | ( | ) | const [inline, virtual] |
Returns the number of weights per object. Number of weights per object should be zero or greater. If zero, then it is assumed that all objects are equally weighted.
Implements Zoltan2::BaseAdapter< User >.
Definition at line 243 of file Zoltan2_BasicVectorAdapter.hpp.
| void Zoltan2::BasicVectorAdapter< User >::getWeightsView | ( | const scalar_t *& | wgt, |
| int & | stride, | ||
| int | idx | ||
| ) | const [inline, virtual] |
Provide pointer to a weight array with stride.
| wgt | on return a pointer to the weights for this idx |
| stride | on return, the value such that the nth weight should be found at wgt[n*stride] . |
| idx | the weight index, zero or greater |
Implements Zoltan2::BaseAdapter< User >.
Definition at line 245 of file Zoltan2_BasicVectorAdapter.hpp.
| int Zoltan2::BasicVectorAdapter< User >::getNumEntriesPerID | ( | ) | const [inline, virtual] |
Return the number of vectors (typically one).
Implements Zoltan2::VectorAdapter< User >.
Definition at line 261 of file Zoltan2_BasicVectorAdapter.hpp.
| void Zoltan2::BasicVectorAdapter< User >::getEntriesView | ( | const scalar_t *& | elements, |
| int & | stride, | ||
| int | idx = 0 |
||
| ) | const [inline, virtual] |
Provide a pointer to the elements of the specified vector.
| elements | will on return point to the vector values corresponding to the global Ids. |
| stride | the k'th element is located at elements[stride*k] |
| idx | ranges from zero to one less than getNumVectors(), and represents the vector for which data is being requested. |
Implements Zoltan2::VectorAdapter< User >.
Definition at line 263 of file Zoltan2_BasicVectorAdapter.hpp.
| enum BaseAdapterType Zoltan2::VectorAdapter< User >::adapterType | ( | ) | const [inline, virtual, inherited] |
Returns the type of adapter.
Implements Zoltan2::BaseAdapter< User >.
Definition at line 126 of file Zoltan2_VectorAdapter.hpp.
| int Zoltan2::VectorAdapter< User >::getDimension | ( | ) | const [inline, inherited] |
Definition at line 154 of file Zoltan2_VectorAdapter.hpp.
| void Zoltan2::VectorAdapter< User >::getCoordinatesView | ( | const scalar_t *& | elements, |
| int & | stride, | ||
| int | idx = 0 |
||
| ) | const [inline, inherited] |
Definition at line 156 of file Zoltan2_VectorAdapter.hpp.
| virtual void Zoltan2::BaseAdapter< User >::getIDsView | ( | const zgid_t *& | Ids | ) | const [pure virtual, inherited] |
Provide a pointer to this process' identifiers.
| Ids | will on return point to the list of the global Ids for this process. |
Implemented in Zoltan2::MeshAdapter< User >, Zoltan2::MatrixAdapter< User, UserCoord >, Zoltan2::GraphAdapter< User, UserCoord >, Zoltan2::XpetraMultiVectorAdapter< User >, and Zoltan2::BasicIdentifierAdapter< User >.
| void Zoltan2::BaseAdapter< User >::getPartsView | ( | const part_t *& | inputPart | ) | const [inline, inherited] |
Provide pointer to an array containing the input part assignment for each ID. The input part information may be used for re-partitioning to reduce data movement, or for mapping parts to processes. Adapters may return NULL for this pointer (the default behavior); if NULL is returned, algorithms will assume the rank.
| inputPart | on return a pointer to input part numbers |
Definition at line 148 of file Zoltan2_Adapter.hpp.
| void Zoltan2::BaseAdapter< User >::applyPartitioningSolution | ( | const User & | in, |
| User *& | out, | ||
| const PartitioningSolution< Adapter > & | solution | ||
| ) | const [inline, inherited] |
Apply a PartitioningSolution to an input.
This is not a required part of the InputAdapter interface. However if the Caller calls a Problem method to redistribute data, it needs this method to perform the redistribution.
| in | An input object with a structure and assignment of of global Ids to processes that matches that of the input data that instantiated this Adapter. |
| out | On return this should point to a newly created object with the specified partitioning. |
| solution | The Solution object created by a Problem should be supplied as the third argument. It must have been templated on user data that has the same global ID distribution as this user data. |
Reimplemented in Zoltan2::XpetraCrsGraphAdapter< User, UserCoord >, Zoltan2::XpetraCrsMatrixAdapter< User, UserCoord >, Zoltan2::XpetraRowMatrixAdapter< User, UserCoord >, and Zoltan2::XpetraMultiVectorAdapter< User >.
Definition at line 174 of file Zoltan2_Adapter.hpp.
1.7.6.1