Zoltan2
Toggle main menu visibility
Loading...
Searching...
No Matches
Zoltan2_BasicKokkosIdentifierAdapter.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_BASICKOKKOSIDENTIFIERADAPTER_HPP_
51
#define _ZOLTAN2_BASICKOKKOSIDENTIFIERADAPTER_HPP_
52
53
#include <Kokkos_Core.hpp>
54
#include <
Zoltan2_IdentifierAdapter.hpp
>
55
#include <
Zoltan2_StridedData.hpp
>
56
57
using
Kokkos::ALL;
58
59
namespace
Zoltan2
{
60
83
template
<
typename
User>
84
class
BasicKokkosIdentifierAdapter
:
public
IdentifierAdapter
<User> {
85
86
public
:
87
typedef
typename
InputTraits<User>::scalar_t
scalar_t
;
88
typedef
typename
InputTraits<User>::lno_t
lno_t
;
89
typedef
typename
InputTraits<User>::gno_t
gno_t
;
90
typedef
typename
InputTraits<User>::part_t
part_t
;
91
typedef
typename
InputTraits<User>::node_t
node_t
;
92
typedef
typename
node_t::device_type
device_t
;
93
typedef
User
user_t
;
94
108
BasicKokkosIdentifierAdapter
(
109
Kokkos::View<gno_t*, device_t> &ids,
110
Kokkos::View<scalar_t**, device_t> &
weights
);
111
113
// The Adapter interface.
115
116
size_t
getLocalNumIDs
()
const override
{
117
return
idsView_.extent(0);
118
}
119
120
void
getIDsView
(
const
gno_t
*&ids)
const override
{
121
auto
kokkosIds = idsView_.view_host();
122
ids = kokkosIds.data();
123
}
124
125
void
getIDsKokkosView
(Kokkos::View<const gno_t *, device_t> &ids)
const override
{
126
ids = idsView_.view_device();
127
}
128
129
int
getNumWeightsPerID
()
const override
{
130
return
weightsView_.extent(1);
131
}
132
133
void
getWeightsView
(
const
scalar_t
*&wgt,
int
&stride,
134
int
idx = 0)
const override
135
{
136
auto
h_wgts_2d = weightsView_.view_host();
137
138
wgt = Kokkos::subview(h_wgts_2d, Kokkos::ALL, idx).data();
139
stride = 1;
140
}
141
142
void
getWeightsKokkosView
(Kokkos::View<scalar_t **, device_t> &wgts)
const override
{
143
wgts = weightsView_.template view<device_t>();
144
}
145
146
private
:
147
Kokkos::DualView<gno_t *, device_t> idsView_;
148
Kokkos::DualView<scalar_t **, device_t> weightsView_;
149
};
150
152
// Definitions
154
155
template
<
typename
User>
156
BasicKokkosIdentifierAdapter<User>::BasicKokkosIdentifierAdapter
(
157
Kokkos::View<gno_t *, device_t> &ids,
158
Kokkos::View<scalar_t **, device_t> &
weights
)
159
{
160
idsView_ = Kokkos::DualView<gno_t *, device_t>(
"idsView_"
, ids.extent(0));
161
Kokkos::deep_copy(idsView_.h_view, ids);
162
163
weightsView_ = Kokkos::DualView<scalar_t **, device_t>(
"weightsView_"
,
164
weights
.extent(0),
165
weights
.extent(1));
166
Kokkos::deep_copy(weightsView_.h_view,
weights
);
167
168
weightsView_.modify_host();
169
weightsView_.sync_host();
170
weightsView_.template sync<device_t>();
171
172
idsView_.modify_host();
173
idsView_.sync_host();
174
idsView_.template sync<device_t>();
175
}
176
177
}
//namespace Zoltan2
178
179
#endif
Zoltan2_IdentifierAdapter.hpp
Defines the IdentifierAdapter interface.
Zoltan2_StridedData.hpp
This file defines the StridedData class.
Zoltan2::BasicKokkosIdentifierAdapter::getWeightsKokkosView
void getWeightsKokkosView(Kokkos::View< scalar_t **, device_t > &wgts) const override
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:142
Zoltan2::BasicKokkosIdentifierAdapter::getIDsView
void getIDsView(const gno_t *&ids) const override
Provide a pointer to this process' identifiers.
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:120
Zoltan2::BasicKokkosIdentifierAdapter::part_t
InputTraits< User >::part_t part_t
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:90
Zoltan2::BasicKokkosIdentifierAdapter::BasicKokkosIdentifierAdapter
BasicKokkosIdentifierAdapter(Kokkos::View< gno_t *, device_t > &ids, Kokkos::View< scalar_t **, device_t > &weights)
Constructor.
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:156
Zoltan2::BasicKokkosIdentifierAdapter::scalar_t
InputTraits< User >::scalar_t scalar_t
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:87
Zoltan2::BasicKokkosIdentifierAdapter::gno_t
InputTraits< User >::gno_t gno_t
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:89
Zoltan2::BasicKokkosIdentifierAdapter::getNumWeightsPerID
int getNumWeightsPerID() const override
Returns the number of weights per object. Number of weights per object should be zero or greater....
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:129
Zoltan2::BasicKokkosIdentifierAdapter::device_t
node_t::device_type device_t
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:92
Zoltan2::BasicKokkosIdentifierAdapter::getIDsKokkosView
void getIDsKokkosView(Kokkos::View< const gno_t *, device_t > &ids) const override
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:125
Zoltan2::BasicKokkosIdentifierAdapter::node_t
InputTraits< User >::node_t node_t
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:91
Zoltan2::BasicKokkosIdentifierAdapter::getWeightsView
void getWeightsView(const scalar_t *&wgt, int &stride, int idx=0) const override
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:133
Zoltan2::BasicKokkosIdentifierAdapter::user_t
User user_t
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:93
Zoltan2::BasicKokkosIdentifierAdapter::getLocalNumIDs
size_t getLocalNumIDs() const override
Returns the number of objects on this process.
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:116
Zoltan2::BasicKokkosIdentifierAdapter::lno_t
InputTraits< User >::lno_t lno_t
Definition
Zoltan2_BasicKokkosIdentifierAdapter.hpp:88
Zoltan2::IdentifierAdapter
IdentifierAdapter defines the interface for identifiers.
Definition
Zoltan2_IdentifierAdapter.hpp:96
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::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_BasicKokkosIdentifierAdapter.hpp
Generated by
1.17.0