14#ifndef _ZOLTAN2_BASICIDENTIFIERADAPTER_HPP_
15#define _ZOLTAN2_BASICIDENTIFIERADAPTER_HPP_
45template <
typename User>
71 std::vector<const scalar_t *> &
weights, std::vector<int> &weightStrides);
81 numIds_(numIds), idList_(idPtr), weights_() {}
94 if (idx < 0 || idx >= weights_.size()) {
95 std::ostringstream emsg;
96 emsg << __FILE__ <<
":" << __LINE__
97 <<
" Invalid weight index " << idx << std::endl;
98 throw std::runtime_error(emsg.str());
101 weights_[idx].getStridedList(length,
weights, stride);
106 const gno_t *idList_;
107 ArrayRCP<StridedData<lno_t, scalar_t> > weights_;
114template <
typename User>
117 std::vector<const scalar_t *> &
weights, std::vector<int> &weightStrides):
118 numIds_(numIds), idList_(idPtr), weights_()
121 size_t numWeights =
weights.size();
124 weights_ = arcp(
new input_t [numWeights], 0, numWeights,
true);
127 for (
size_t i = 0; i < numWeights; i++){
128 int stride = weightStrides.size() ? weightStrides[i] : 1;
129 ArrayRCP<const scalar_t> wgtV(
weights[i], 0, stride * numIds,
false);
130 weights_[i] = input_t(wgtV, stride);
Defines the IdentifierAdapter interface.
This file defines the StridedData class.
int getNumWeightsPerID() const
Returns the number of weights per object. Number of weights per object should be zero or greater....
InputTraits< User >::node_t node_t
InputTraits< User >::scalar_t scalar_t
BasicIdentifierAdapter(lno_t numIds, const gno_t *idPtr, std::vector< const scalar_t * > &weights, std::vector< int > &weightStrides)
Constructor.
BasicIdentifierAdapter(lno_t numIds, const gno_t *idPtr)
Constructor.
void getWeightsView(const scalar_t *&weights, int &stride, int idx) const
Provide pointer to a weight array with stride.
void getIDsView(const gno_t *&Ids) const
Provide a pointer to this process' identifiers.
InputTraits< User >::lno_t lno_t
InputTraits< User >::part_t part_t
InputTraits< User >::gno_t gno_t
size_t getLocalNumIDs() const
Returns the number of objects on this process.
IdentifierAdapter defines the interface for identifiers.
The StridedData class manages lists of weights or coordinates.
Created by mbenlioglu on Aug 31, 2020.