Tpetra parallel linear algebra Version of the Day
Loading...
Searching...
No Matches
Tpetra_ConfigDefs.hpp
1// @HEADER
2// ***********************************************************************
3//
4// Tpetra: Templated Linear Algebra Services Package
5// Copyright (2008) Sandia Corporation
6//
7// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8// the U.S. Government retains certain rights in this software.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// ************************************************************************
38// @HEADER
39
40#ifndef TPETRA_CONFIGDEFS_HPP
41#define TPETRA_CONFIGDEFS_HPP
42
43#include "Tpetra_Details_DefaultTypes.hpp"
44#include "Teuchos_ConfigDefs.hpp"
45
46namespace Tpetra {
47 // Used in all Tpetra code that explicitly must a type (like a loop index)
48 // that is used with the Teuchos::Array[View,RCP] classes.
49
52}
53
54// these make some of the macros in Tpetra_Util.hpp much easier to describe
55#ifdef HAVE_TPETRA_PRINT_EFFICIENCY_WARNINGS
56 #define TPETRA_PRINTS_EFFICIENCY_WARNINGS 1
57#else
58 #define TPETRA_PRINTS_EFFICIENCY_WARNINGS 0
59#endif
60
61#ifdef HAVE_TPETRA_THROW_ABUSE_WARNINGS
62 #define TPETRA_THROWS_ABUSE_WARNINGS 1
63#else
64 #define TPETRA_THROWS_ABUSE_WARNINGS 0
65#endif
66
67#ifdef HAVE_TPETRA_PRINT_ABUSE_WARNINGS
68 #define TPETRA_PRINTS_ABUSE_WARNINGS 1
69#else
70 #define TPETRA_PRINTS_ABUSE_WARNINGS 0
71#endif
72
73
74#include <functional>
75
76//#ifndef __CUDACC__
77// mem management
78#include "Teuchos_Array.hpp" // includes ArrayRCP
79#include "Teuchos_RCP.hpp"
80#include "Teuchos_Tuple.hpp" // includes ArrayView
81// traits classes
82#include "Teuchos_OrdinalTraits.hpp"
83#include "Teuchos_ScalarTraits.hpp"
84#include "Teuchos_TypeNameTraits.hpp"
85#include "Teuchos_NullIteratorTraits.hpp"
86#include "Teuchos_SerializationTraits.hpp"
87// comm
88#include "Teuchos_CommHelpers.hpp"
89// misc
90#include "Teuchos_ParameterList.hpp"
91//#endif
92
93namespace Tpetra {
94
101 typedef size_t global_size_t;
102
111 LocallyReplicated,
112 GloballyDistributed
113 };
114
120
121
127
128 enum EPrivateComputeViewConstructor {
129 COMPUTE_VIEW_CONSTRUCTOR
130 };
131
132 enum EPrivateHostViewConstructor {
133 HOST_VIEW_CONSTRUCTOR
134 };
135
152 template<class Arg1, class Arg2>
153 class project1st : public std::binary_function<Arg1, Arg2, Arg1> {
154 public:
157 typedef Arg1 result_type;
158 Arg1 operator () (const Arg1& x, const Arg2& ) const {
159 return x;
160 }
161 };
162
178 template<class Arg1, class Arg2>
179 class project2nd : public std::binary_function<Arg1, Arg2, Arg2> {
180 public:
183 typedef Arg2 result_type;
184 Arg2 operator () (const Arg1& , const Arg2& y) const {
185 return y;
186 }
187 };
188
189} // end of Tpetra namespace
190
191
192// We include this after the above Tpetra namespace declaration,
193// so that we don't interfere with Doxygen's ability to find the
194// Tpetra namespace declaration.
195#include "Tpetra_CombineMode.hpp"
196
197
199namespace TpetraExamples {
200}
201
202namespace Tpetra {
204 namespace Ext {
205 }
206
212 namespace MatrixMatrix {
213 }
214
220 namespace TripleMatrixMultiply {
221 }
222}
223
224namespace Tpetra {
227 Forward = 0,
228 Backward,
229 Symmetric
230 };
231}
232
233// For backwards compatibility
234namespace KokkosClassic {
235 using ::Tpetra::ESweepDirection;
236}
237
238
239#include <Kokkos_Complex.hpp>
240
241// Specializations of Teuchos::SerializationTraits for
242// Kokkos::complex<{float,double}>.
243
244namespace Teuchos {
245 template<typename Ordinal>
246 class SerializationTraits<Ordinal, ::Kokkos::complex<float> >
247 : public DirectSerializationTraits<Ordinal, ::Kokkos::complex<float> >
248 {};
249
250 template<typename Ordinal>
251 class SerializationTraits<Ordinal, ::Kokkos::complex<double> >
252 : public DirectSerializationTraits<Ordinal, ::Kokkos::complex<double> >
253 {};
254} // namespace Teuchos
255
256#endif // TPETRA_CONFIGDEFS_HPP
Declaration of Tpetra::CombineMode enum, and a function for setting a Tpetra::CombineMode parameter i...
Struct that holds views of the contents of a CrsMatrix.
Binary function that returns its first argument.
Binary function that returns its second argument.
Namespace for Tpetra example classes and methods.
Namespace Tpetra contains the class and methods constituting the Tpetra library.
ESweepDirection
Sweep direction for Gauss-Seidel or Successive Over-Relaxation (SOR).
LookupStatus
Return status of Map remote index lookup (getRemoteIndexList()).
Teuchos_Ordinal Array_size_type
Size type for Teuchos Array objects.
size_t global_size_t
Global size_t object.
LocalGlobal
Enum for local versus global allocation of Map entries.