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 Tpetra::ProfileType(Tpetra::StaticProfile+1) // DynamicProfile
137 #else
138 #define TPETRA_DEFAULT_PROFILE_TYPE Tpetra::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 Ext {
224  }
225 
231  namespace MatrixMatrix {
232  }
233 
239  namespace TripleMatrixMultiply {
240  }
241 }
242 
243 namespace Tpetra {
246  Forward = 0,
247  Backward,
248  Symmetric
249  };
250 }
251 
252 // For backwards compatibility
253 namespace KokkosClassic {
254  using ::Tpetra::ESweepDirection;
255 }
256 
257 #if defined(HAVE_TPETRACORE_KOKKOSCORE) && defined(HAVE_TPETRACORE_TEUCHOSKOKKOSCOMPAT) && defined(TPETRA_ENABLE_KOKKOS_DISTOBJECT)
258 #define TPETRA_USE_KOKKOS_DISTOBJECT 1
259 #else
260 #define TPETRA_USE_KOKKOS_DISTOBJECT 0
261 #endif
262 
263 #include <Kokkos_Complex.hpp>
264 
265 // Specializations of Teuchos::SerializationTraits for
266 // Kokkos::complex<{float,double}>.
267 
268 namespace Teuchos {
269  template<typename Ordinal>
270  class SerializationTraits<Ordinal, ::Kokkos::complex<float> >
271  : public DirectSerializationTraits<Ordinal, ::Kokkos::complex<float> >
272  {};
273 
274  template<typename Ordinal>
275  class SerializationTraits<Ordinal, ::Kokkos::complex<double> >
276  : public DirectSerializationTraits<Ordinal, ::Kokkos::complex<double> >
277  {};
278 } // namespace Teuchos
279 
280 #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.