Zoltan2
|
BasicVectorAdapter represents a vector (plus optional weights) supplied by the user as pointers to strided arrays. More...
#include <Zoltan2_BasicVectorAdapter.hpp>
Public Member Functions | |
BasicVectorAdapter (lno_t numIds, const gno_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. More... | |
BasicVectorAdapter (lno_t numIds, const gno_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). More... | |
BasicVectorAdapter (lno_t numIds, const gno_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. More... | |
~BasicVectorAdapter () | |
size_t | getLocalNumIDs () const |
Returns the number of objects on this process. More... | |
void | getIDsView (const gno_t *&ids) const |
Provide a pointer to this process' identifiers. More... | |
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. Default is zero weights per ID. More... | |
void | getWeightsView (const scalar_t *&weights, int &stride, int idx) const |
int | getNumEntriesPerID () const |
Return the number of vectors. More... | |
void | getEntriesView (const scalar_t *&entries, int &stride, int idx=0) const |
Public Member Functions inherited from Zoltan2::VectorAdapter< User > | |
virtual | ~VectorAdapter () |
Destructor. More... | |
enum BaseAdapterType | adapterType () const |
Returns the type of adapter. More... | |
virtual void | getEntriesView (const scalar_t *&elements, int &stride, int idx=0) const =0 |
Provide a pointer to the elements of the specified vector. More... | |
void | generateFiles (const char *fileprefix, const Teuchos::Comm< int > &comm) const |
Write files that can be used as input to Zoltan or Zoltan2 driver Creates chaco-formatted input files for coordinates and weights that can be used as input for Zoltan or Zoltan2 drivers. This routine is SERIAL and can be quite slow. It is meant as a debugging tool only, to allow Zoltan developers to replicate performance that applications are seeing using the applicatios' input. More... | |
int | getDimension () const |
void | getCoordinatesView (const scalar_t *&elements, int &stride, int idx=0) const |
Public Member Functions inherited from Zoltan2::BaseAdapter< User > | |
virtual | ~BaseAdapter () |
Destructor. More... | |
virtual void | getIDsKokkosView (Kokkos::View< gno_t * > &) const |
Provide a pointer to this process' identifiers. More... | |
virtual void | getWeightsView (const scalar_t *&wgt, int &stride, int idx=0) const |
Provide pointer to a weight array with stride. More... | |
virtual void | getWeightsKokkosView (Kokkos::View< scalar_t * > &, int=0) const |
Provide pointer to a weight View. More... | |
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. More... | |
template<typename Adapter > | |
void | applyPartitioningSolution (const User &in, User *&out, const PartitioningSolution< Adapter > &solution) const |
Apply a PartitioningSolution to an input. More... | |
Public Member Functions inherited from Zoltan2::BaseAdapterRoot | |
virtual | ~BaseAdapterRoot () |
Additional Inherited Members | |
Public Types inherited from Zoltan2::BaseAdapter< User > | |
typedef InputTraits< User >::lno_t | lno_t |
typedef InputTraits< User >::gno_t | gno_t |
typedef InputTraits< User > ::scalar_t | scalar_t |
typedef InputTraits< User >::part_t | part_t |
typedef InputTraits< User > ::offset_t | offset_t |
Protected Member Functions inherited from Zoltan2::BaseAdapter< User > | |
void | generateWeightFileOnly (const char *fileprefix, const Teuchos::Comm< int > &comm) const |
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 data type used by the application for global Ids; must be a Teuchos Ordinal. (Teuchos Ordinals are those data types for which traits are defined in Trilinos/packages/teuchos/src/Teuchos_OrdinalTraits.hpp.) node_t
is a Kokkos CPU Node type. 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 81 of file Zoltan2_BasicVectorAdapter.hpp.
|
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 112 of file Zoltan2_BasicVectorAdapter.hpp.
|
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 160 of file Zoltan2_BasicVectorAdapter.hpp.
|
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 196 of file Zoltan2_BasicVectorAdapter.hpp.
|
inline |
Definition at line 231 of file Zoltan2_BasicVectorAdapter.hpp.
|
inlinevirtual |
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::BaseAdapterRoot.
Definition at line 237 of file Zoltan2_BasicVectorAdapter.hpp.
|
inlinevirtual |
Provide a pointer to this process' identifiers.
ids | will on return point to the list of the global Ids for this process. |
Reimplemented from Zoltan2::BaseAdapter< User >.
Definition at line 239 of file Zoltan2_BasicVectorAdapter.hpp.
|
inlinevirtual |
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. Default is zero weights per ID.
Reimplemented from Zoltan2::BaseAdapterRoot.
Definition at line 241 of file Zoltan2_BasicVectorAdapter.hpp.
|
inline |
Definition at line 243 of file Zoltan2_BasicVectorAdapter.hpp.
|
inlinevirtual |
Return the number of vectors.
Implements Zoltan2::VectorAdapter< User >.
Definition at line 259 of file Zoltan2_BasicVectorAdapter.hpp.
|
inline |
Definition at line 261 of file Zoltan2_BasicVectorAdapter.hpp.