Zoltan2
Toggle main menu visibility
Loading...
Searching...
No Matches
Zoltan2_BasicIdentifierAdapter.hpp
Go to the documentation of this file.
1
// @HEADER
2
//
3
// ***********************************************************************
4
//
5
// Zoltan2: A package of combinatorial algorithms for scientific computing
6
// Copyright 2012 Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Karen Devine (kddevin@sandia.gov)
39
// Erik Boman (egboman@sandia.gov)
40
// Siva Rajamanickam (srajama@sandia.gov)
41
//
42
// ***********************************************************************
43
//
44
// @HEADER
45
49
50
#ifndef _ZOLTAN2_BASICIDENTIFIERADAPTER_HPP_
51
#define _ZOLTAN2_BASICIDENTIFIERADAPTER_HPP_
52
53
#include <
Zoltan2_IdentifierAdapter.hpp
>
54
#include <
Zoltan2_StridedData.hpp
>
55
56
namespace
Zoltan2
{
57
80
81
template
<
typename
User>
82
class
BasicIdentifierAdapter
:
public
IdentifierAdapter
<User> {
83
84
public
:
85
typedef
typename
InputTraits<User>::scalar_t
scalar_t
;
86
typedef
typename
InputTraits<User>::lno_t
lno_t
;
87
typedef
typename
InputTraits<User>::gno_t
gno_t
;
88
typedef
typename
InputTraits<User>::part_t
part_t
;
89
typedef
typename
InputTraits<User>::node_t
node_t
;
90
typedef
User
user_t
;
91
106
BasicIdentifierAdapter
(
lno_t
numIds,
const
gno_t
*idPtr,
107
std::vector<const scalar_t *> &
weights
, std::vector<int> &weightStrides);
108
116
BasicIdentifierAdapter
(
lno_t
numIds,
const
gno_t
*idPtr):
117
numIds_(numIds), idList_(idPtr), weights_() {}
118
120
// The Adapter interface.
122
123
size_t
getLocalNumIDs
()
const
{
return
numIds_; }
124
125
void
getIDsView
(
const
gno_t
*&Ids)
const
{ Ids = idList_; }
126
127
int
getNumWeightsPerID
()
const
{
return
weights_.size(); }
128
129
void
getWeightsView
(
const
scalar_t
*&
weights
,
int
&stride,
int
idx)
const
{
130
if
(idx < 0 || idx >= weights_.size()) {
131
std::ostringstream emsg;
132
emsg << __FILE__ <<
":"
<< __LINE__
133
<<
" Invalid weight index "
<< idx << std::endl;
134
throw
std::runtime_error(emsg.str());
135
}
136
size_t
length;
137
weights_[idx].getStridedList(length,
weights
, stride);
138
}
139
140
private
:
141
lno_t
numIds_;
142
const
gno_t
*idList_;
143
ArrayRCP<StridedData<lno_t, scalar_t> > weights_;
144
};
145
147
// Definitions
149
150
template
<
typename
User>
151
BasicIdentifierAdapter<User>::BasicIdentifierAdapter
(
152
lno_t
numIds,
const
gno_t
*idPtr,
153
std::vector<const scalar_t *> &
weights
, std::vector<int> &weightStrides):
154
numIds_(numIds), idList_(idPtr), weights_()
155
{
156
typedef
StridedData<lno_t, scalar_t>
input_t;
157
size_t
numWeights =
weights
.size();
158
159
if
(numWeights > 0){
160
weights_ = arcp(
new
input_t [numWeights], 0, numWeights,
true
);
161
162
if
(numIds > 0){
163
for
(
size_t
i = 0; i < numWeights; i++){
164
int
stride = weightStrides.size() ? weightStrides[i] : 1;
165
ArrayRCP<const scalar_t> wgtV(
weights
[i], 0, stride * numIds,
false
);
166
weights_[i] = input_t(wgtV, stride);
167
}
168
}
169
}
170
}
171
172
}
//namespace Zoltan2
173
174
#endif
Zoltan2_IdentifierAdapter.hpp
Defines the IdentifierAdapter interface.
Zoltan2_StridedData.hpp
This file defines the StridedData class.
Zoltan2::BasicIdentifierAdapter::getNumWeightsPerID
int getNumWeightsPerID() const
Returns the number of weights per object. Number of weights per object should be zero or greater....
Definition
Zoltan2_BasicIdentifierAdapter.hpp:127
Zoltan2::BasicIdentifierAdapter::node_t
InputTraits< User >::node_t node_t
Definition
Zoltan2_BasicIdentifierAdapter.hpp:89
Zoltan2::BasicIdentifierAdapter::scalar_t
InputTraits< User >::scalar_t scalar_t
Definition
Zoltan2_BasicIdentifierAdapter.hpp:85
Zoltan2::BasicIdentifierAdapter::BasicIdentifierAdapter
BasicIdentifierAdapter(lno_t numIds, const gno_t *idPtr, std::vector< const scalar_t * > &weights, std::vector< int > &weightStrides)
Constructor.
Definition
Zoltan2_BasicIdentifierAdapter.hpp:151
Zoltan2::BasicIdentifierAdapter::user_t
User user_t
Definition
Zoltan2_BasicIdentifierAdapter.hpp:90
Zoltan2::BasicIdentifierAdapter::BasicIdentifierAdapter
BasicIdentifierAdapter(lno_t numIds, const gno_t *idPtr)
Constructor.
Definition
Zoltan2_BasicIdentifierAdapter.hpp:116
Zoltan2::BasicIdentifierAdapter::getWeightsView
void getWeightsView(const scalar_t *&weights, int &stride, int idx) const
Definition
Zoltan2_BasicIdentifierAdapter.hpp:129
Zoltan2::BasicIdentifierAdapter::getIDsView
void getIDsView(const gno_t *&Ids) const
Provide a pointer to this process' identifiers.
Definition
Zoltan2_BasicIdentifierAdapter.hpp:125
Zoltan2::BasicIdentifierAdapter::lno_t
InputTraits< User >::lno_t lno_t
Definition
Zoltan2_BasicIdentifierAdapter.hpp:86
Zoltan2::BasicIdentifierAdapter::part_t
InputTraits< User >::part_t part_t
Definition
Zoltan2_BasicIdentifierAdapter.hpp:88
Zoltan2::BasicIdentifierAdapter::gno_t
InputTraits< User >::gno_t gno_t
Definition
Zoltan2_BasicIdentifierAdapter.hpp:87
Zoltan2::BasicIdentifierAdapter::getLocalNumIDs
size_t getLocalNumIDs() const
Returns the number of objects on this process.
Definition
Zoltan2_BasicIdentifierAdapter.hpp:123
Zoltan2::IdentifierAdapter
IdentifierAdapter defines the interface for identifiers.
Definition
Zoltan2_IdentifierAdapter.hpp:96
Zoltan2::StridedData
The StridedData class manages lists of weights or coordinates.
Definition
Zoltan2_StridedData.hpp:76
Zoltan2
Created by mbenlioglu on Aug 31, 2020.
Definition
Zoltan2_AlgHybrid2GL.hpp:38
weights
static ArrayRCP< ArrayRCP< zscalar_t > > weights
Definition
partition/rcbPerformanceZ1.cpp:82
Zoltan2::lno_t
Zoltan2::InputTraits::gno_t
default_gno_t gno_t
The ordinal type (e.g., int, long, int64_t) that can represent global counts and identifiers.
Definition
Zoltan2_InputTraits.hpp:192
Zoltan2::InputTraits::node_t
default_node_t node_t
The Kokkos node type. This is only meaningful for users of Tpetra objects.
Definition
Zoltan2_InputTraits.hpp:205
Zoltan2::InputTraits::lno_t
default_lno_t lno_t
The ordinal type (e.g., int, long, int64_t) that represents local counts and local indices.
Definition
Zoltan2_InputTraits.hpp:187
Zoltan2::InputTraits::part_t
default_part_t part_t
The data type to represent part numbers.
Definition
Zoltan2_InputTraits.hpp:200
Zoltan2::InputTraits::scalar_t
default_scalar_t scalar_t
The data type for weights and coordinates.
Definition
Zoltan2_InputTraits.hpp:182
core
src
input
Zoltan2_BasicIdentifierAdapter.hpp
Generated by
1.17.0