Zoltan2
Toggle main menu visibility
Loading...
Searching...
No Matches
BasicIdentifierInput.cpp
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
//
46
// Basic testing of Zoltan2::BasicIdentifierAdapter
47
48
#include <
Zoltan2_BasicIdentifierAdapter.hpp
>
49
#include <
Zoltan2_TestHelpers.hpp
>
50
51
#include <Teuchos_DefaultComm.hpp>
52
#include <Teuchos_RCP.hpp>
53
#include <Teuchos_CommHelpers.hpp>
54
55
int
main
(
int
narg,
char
*arg[]) {
56
Tpetra::ScopeGuard tscope(&narg, &arg);
57
Teuchos::RCP<const Teuchos::Comm<int> > comm = Tpetra::getDefaultComm();
58
59
int
rank = comm->getRank();
60
int
nprocs = comm->getSize();
61
int
fail
= 0, gfail = 0;
62
63
// Create global identifiers with weights
64
zlno_t
numLocalIds = 10;
65
int
nWeights = 2;
66
67
zgno_t
*myIds =
new
zgno_t
[numLocalIds];
68
zscalar_t
*
weights
=
new
zscalar_t
[numLocalIds*nWeights];
69
zgno_t
myFirstId = rank * numLocalIds * numLocalIds;
70
71
for
(
zlno_t
i=0; i < numLocalIds; i++){
72
myIds[i] =
zgno_t
(myFirstId+i);
73
weights
[i*nWeights] = 1.0;
74
weights
[i*nWeights + 1] = (nprocs-rank) / (i+1);
75
}
76
77
typedef
Zoltan2::BasicUserTypes<zscalar_t, zlno_t, zgno_t>
userTypes_t
;
78
std::vector<const zscalar_t *> weightValues;
79
std::vector<int> strides;
80
81
weightValues.push_back(
weights
);
82
weightValues.push_back(
weights
+ 1);
83
strides.push_back(2);
84
strides.push_back(2);
85
86
Zoltan2::BasicIdentifierAdapter<userTypes_t>
ia(numLocalIds, myIds,
87
weightValues, strides);
88
89
if
(!
fail
&& ia.
getLocalNumIDs
() !=
size_t
(numLocalIds)){
90
fail
= 4;
91
}
92
if
(!
fail
&& ia.
getNumWeightsPerID
() != nWeights) {
93
fail
= 5;
94
}
95
96
const
zgno_t
*globalIdsIn;
97
zscalar_t
const
*weightsIn[2];
98
int
weightStridesIn[2];
99
100
ia.
getIDsView
(globalIdsIn);
101
102
for
(
int
w=0; !
fail
&& w < nWeights; w++) {
103
ia.
getWeightsView
(weightsIn[w], weightStridesIn[w], w);
104
}
105
106
const
zscalar_t
*w1 = weightsIn[0];
107
const
zscalar_t
*w2 = weightsIn[1];
108
int
incr1 = weightStridesIn[0];
109
int
incr2 = weightStridesIn[1];
110
111
for
(
zlno_t
i=0; !
fail
&& i < numLocalIds; i++){
112
if
(globalIdsIn[i] !=
zgno_t
(myFirstId+i)) {
113
fail
= 8;
114
}
115
if
(!
fail
&& w1[i*incr1] != 1.0) {
116
fail
= 9;
117
}
118
if
(!
fail
&& w2[i*incr2] !=
weights
[i*nWeights+1]) {
119
fail
= 10;
120
}
121
}
122
123
delete
[] myIds;
124
delete
[]
weights
;
125
126
gfail =
globalFail
(*comm,
fail
);
127
if
(gfail) {
128
printFailureCode
(*comm,
fail
);
// will exit(1)
129
}
130
if
(rank == 0) {
131
std::cout <<
"PASS"
<< std::endl;
132
}
133
}
134
globalFail
int globalFail(const Comm< int > &comm, int fail)
Definition
ErrorHandlingForTests.hpp:109
printFailureCode
void printFailureCode(const Comm< int > &comm, int fail)
Definition
ErrorHandlingForTests.hpp:116
Zoltan2_BasicIdentifierAdapter.hpp
Defines the BasicIdentifierAdapter class.
Zoltan2_TestHelpers.hpp
common code used by tests
zscalar_t
float zscalar_t
Definition
Zoltan2_TestHelpers.hpp:113
zlno_t
Tpetra::Map ::local_ordinal_type zlno_t
Definition
Zoltan2_TestHelpers.hpp:106
zgno_t
Tpetra::Map ::global_ordinal_type zgno_t
Definition
Zoltan2_TestHelpers.hpp:107
main
int main()
Definition
absdefinitiontest.cpp:6
Zoltan2::BasicIdentifierAdapter
This class represents a collection of global Identifiers and their associated weights,...
Definition
Zoltan2_BasicIdentifierAdapter.hpp:82
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::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::getLocalNumIDs
size_t getLocalNumIDs() const
Returns the number of objects on this process.
Definition
Zoltan2_BasicIdentifierAdapter.hpp:123
Zoltan2::BasicUserTypes
A simple class that can be the User template argument for an InputAdapter.
Definition
Zoltan2_InputTraits.hpp:140
fail
static const std::string fail
Definition
findUniqueGids.cpp:81
Zoltan2_TestingFramework::userTypes_t
Zoltan2::BasicUserTypes< zscalar_t, zlno_t, zgno_t > userTypes_t
Definition
Zoltan2_Typedefs.hpp:167
weights
static ArrayRCP< ArrayRCP< zscalar_t > > weights
Definition
partition/rcbPerformanceZ1.cpp:82
test
core
unit
input
BasicIdentifierInput.cpp
Generated by
1.17.0