Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
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 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38 //
39 // ************************************************************************
40 // @HEADER
41 
42 #ifndef TPETRA_CONFIGDEFS_HPP
43 #define TPETRA_CONFIGDEFS_HPP
44 
45 #include "Tpetra_Details_DefaultTypes.hpp"
46 #include "Teuchos_ConfigDefs.hpp"
47 
48 namespace Tpetra {
49  // Used in all Tpetra code that explicitly must a type (like a loop index)
50  // that is used with the Teuchos::Array[View,RCP] classes.
51 
53  typedef Teuchos_Ordinal Array_size_type;
54 }
55 
56 // these make some of the macros in Tpetra_Util.hpp much easier to describe
57 #ifdef HAVE_TPETRA_THROW_EFFICIENCY_WARNINGS
58  #define TPETRA_THROWS_EFFICIENCY_WARNINGS 1
59 #else
60  #define TPETRA_THROWS_EFFICIENCY_WARNINGS 0
61 #endif
62 
63 #ifdef HAVE_TPETRA_PRINT_EFFICIENCY_WARNINGS
64  #define TPETRA_PRINTS_EFFICIENCY_WARNINGS 1
65 #else
66  #define TPETRA_PRINTS_EFFICIENCY_WARNINGS 0
67 #endif
68 
69 #ifdef HAVE_TPETRA_THROW_ABUSE_WARNINGS
70  #define TPETRA_THROWS_ABUSE_WARNINGS 1
71 #else
72  #define TPETRA_THROWS_ABUSE_WARNINGS 0
73 #endif
74 
75 #ifdef HAVE_TPETRA_PRINT_ABUSE_WARNINGS
76  #define TPETRA_PRINTS_ABUSE_WARNINGS 1
77 #else
78  #define TPETRA_PRINTS_ABUSE_WARNINGS 0
79 #endif
80 
81 
82 #include <functional>
83 
84 //#ifndef __CUDACC__
85 // mem management
86 #include "Teuchos_Array.hpp" // includes ArrayRCP
87 #include "Teuchos_RCP.hpp"
88 #include "Teuchos_Tuple.hpp" // includes ArrayView
89 // traits classes
90 #include "Teuchos_OrdinalTraits.hpp"
91 #include "Teuchos_ScalarTraits.hpp"
92 #include "Teuchos_TypeNameTraits.hpp"
93 #include "Teuchos_NullIteratorTraits.hpp"
94 #include "Teuchos_SerializationTraits.hpp"
95 // comm
96 #include "Teuchos_CommHelpers.hpp"
97 // misc
98 #include "Teuchos_ParameterList.hpp"
99 //#endif
100 
101 namespace Tpetra {
102 
109  typedef size_t global_size_t;
110 
118  enum LocalGlobal {
119  LocallyReplicated,
120  GloballyDistributed
121  };
122 
127  };
128 
130  enum ProfileType {
131  StaticProfile
132  };
133 
134 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
135  TPETRA_DEPRECATED const ProfileType DynamicProfile = ProfileType(StaticProfile+1);
136 #define TPETRA_DEFAULT_PROFILE_TYPE DynamicProfile
137 #else
138 #define TPETRA_DEFAULT_PROFILE_TYPE StaticProfile
139 #endif
140 
145  };
146 
147  enum EPrivateComputeViewConstructor {
148  COMPUTE_VIEW_CONSTRUCTOR
149  };
150 
151  enum EPrivateHostViewConstructor {
152  HOST_VIEW_CONSTRUCTOR
153  };
154 
171  template<class Arg1, class Arg2>
172  class project1st : public std::binary_function<Arg1, Arg2, Arg1> {
173  public:
174  typedef Arg1 first_argument_type;
175  typedef Arg2 second_argument_type;
176  typedef Arg1 result_type;
177  Arg1 operator () (const Arg1& x, const Arg2& ) const {
178  return x;
179  }
180  };
181 
197  template<class Arg1, class Arg2>
198  class project2nd : public std::binary_function<Arg1, Arg2, Arg2> {
199  public:
200  typedef Arg1 first_argument_type;
201  typedef Arg2 second_argument_type;
202  typedef Arg2 result_type;
203  Arg2 operator () (const Arg1& , const Arg2& y) const {
204  return y;
205  }
206  };
207 
208 } // end of Tpetra namespace
209 
210 
211 // We include this after the above Tpetra namespace declaration,
212 // so that we don't interfere with Doxygen's ability to find the
213 // Tpetra namespace declaration.
214 #include "Tpetra_CombineMode.hpp"
215 
216 
218 namespace TpetraExamples {
219 }
220 
221 namespace Tpetra {
223  namespace RTI {
224  }
225 }
226 
227 namespace Tpetra {
229  namespace Ext {
230  }
231 
237  namespace MatrixMatrix {
238  }
239 
245  namespace TripleMatrixMultiply {
246  }
247 }
248 
249 namespace Tpetra {
252  Forward = 0,
253  Backward,
254  Symmetric
255  };
256 }
257 
258 // For backwards compatibility
259 namespace KokkosClassic {
260  using ::Tpetra::ESweepDirection;
261 }
262 
263 #if defined(HAVE_TPETRACORE_KOKKOSCORE) && defined(HAVE_TPETRACORE_TEUCHOSKOKKOSCOMPAT) && defined(TPETRA_ENABLE_KOKKOS_DISTOBJECT)
264 #define TPETRA_USE_KOKKOS_DISTOBJECT 1
265 #else
266 #define TPETRA_USE_KOKKOS_DISTOBJECT 0
267 #endif
268 
269 #include <Kokkos_Complex.hpp>
270 
271 // Specializations of Teuchos::SerializationTraits for
272 // Kokkos::complex<{float,double}>.
273 
274 namespace Teuchos {
275  template<typename Ordinal>
276  class SerializationTraits<Ordinal, ::Kokkos::complex<float> >
277  : public DirectSerializationTraits<Ordinal, ::Kokkos::complex<float> >
278  {};
279 
280  template<typename Ordinal>
281  class SerializationTraits<Ordinal, ::Kokkos::complex<double> >
282  : public DirectSerializationTraits<Ordinal, ::Kokkos::complex<double> >
283  {};
284 } // namespace Teuchos
285 
286 #endif // TPETRA_CONFIGDEFS_HPP
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.
Declaration of Tpetra::CombineMode enum, and a function for setting a Tpetra::CombineMode parameter i...
ESweepDirection
Sweep direction for Gauss-Seidel or Successive Over-Relaxation (SOR).
Binary function that returns its second argument.
LocalGlobal
Enum for local versus global allocation of Map entries.
Binary function that returns its first argument.