Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends 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 // ************************************************************************
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 
46 namespace 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 
51  typedef Teuchos_Ordinal Array_size_type;
52 }
53 
54 // these make some of the macros in Tpetra_Util.hpp much easier to describe
55 #ifdef HAVE_TPETRA_THROW_EFFICIENCY_WARNINGS
56  #define TPETRA_THROWS_EFFICIENCY_WARNINGS 1
57 #else
58  #define TPETRA_THROWS_EFFICIENCY_WARNINGS 0
59 #endif
60 
61 #ifdef HAVE_TPETRA_PRINT_EFFICIENCY_WARNINGS
62  #define TPETRA_PRINTS_EFFICIENCY_WARNINGS 1
63 #else
64  #define TPETRA_PRINTS_EFFICIENCY_WARNINGS 0
65 #endif
66 
67 #ifdef HAVE_TPETRA_THROW_ABUSE_WARNINGS
68  #define TPETRA_THROWS_ABUSE_WARNINGS 1
69 #else
70  #define TPETRA_THROWS_ABUSE_WARNINGS 0
71 #endif
72 
73 #ifdef HAVE_TPETRA_PRINT_ABUSE_WARNINGS
74  #define TPETRA_PRINTS_ABUSE_WARNINGS 1
75 #else
76  #define TPETRA_PRINTS_ABUSE_WARNINGS 0
77 #endif
78 
79 
80 #include <functional>
81 
82 //#ifndef __CUDACC__
83 // mem management
84 #include "Teuchos_Array.hpp" // includes ArrayRCP
85 #include "Teuchos_RCP.hpp"
86 #include "Teuchos_Tuple.hpp" // includes ArrayView
87 // traits classes
88 #include "Teuchos_OrdinalTraits.hpp"
89 #include "Teuchos_ScalarTraits.hpp"
90 #include "Teuchos_TypeNameTraits.hpp"
91 #include "Teuchos_NullIteratorTraits.hpp"
92 #include "Teuchos_SerializationTraits.hpp"
93 // comm
94 #include "Teuchos_CommHelpers.hpp"
95 // misc
96 #include "Teuchos_ParameterList.hpp"
97 //#endif
98 
99 namespace Tpetra {
100 
107  typedef size_t global_size_t;
108 
116  enum LocalGlobal {
117  LocallyReplicated,
118  GloballyDistributed
119  };
120 
125  };
126 
127 
132  };
133 
134  enum EPrivateComputeViewConstructor {
135  COMPUTE_VIEW_CONSTRUCTOR
136  };
137 
138  enum EPrivateHostViewConstructor {
139  HOST_VIEW_CONSTRUCTOR
140  };
141 
158  template<class Arg1, class Arg2>
159  class project1st : public std::binary_function<Arg1, Arg2, Arg1> {
160  public:
161  typedef Arg1 first_argument_type;
162  typedef Arg2 second_argument_type;
163  typedef Arg1 result_type;
164  Arg1 operator () (const Arg1& x, const Arg2& ) const {
165  return x;
166  }
167  };
168 
184  template<class Arg1, class Arg2>
185  class project2nd : public std::binary_function<Arg1, Arg2, Arg2> {
186  public:
187  typedef Arg1 first_argument_type;
188  typedef Arg2 second_argument_type;
189  typedef Arg2 result_type;
190  Arg2 operator () (const Arg1& , const Arg2& y) const {
191  return y;
192  }
193  };
194 
195 } // end of Tpetra namespace
196 
197 
198 // We include this after the above Tpetra namespace declaration,
199 // so that we don't interfere with Doxygen's ability to find the
200 // Tpetra namespace declaration.
201 #include "Tpetra_CombineMode.hpp"
202 
203 
205 namespace TpetraExamples {
206 }
207 
208 namespace Tpetra {
210  namespace Ext {
211  }
212 
218  namespace MatrixMatrix {
219  }
220 
226  namespace TripleMatrixMultiply {
227  }
228 }
229 
230 namespace Tpetra {
233  Forward = 0,
234  Backward,
235  Symmetric
236  };
237 }
238 
239 // For backwards compatibility
240 namespace KokkosClassic {
241  using ::Tpetra::ESweepDirection;
242 }
243 
244 
245 #include <Kokkos_Complex.hpp>
246 
247 // Specializations of Teuchos::SerializationTraits for
248 // Kokkos::complex<{float,double}>.
249 
250 namespace Teuchos {
251  template<typename Ordinal>
252  class SerializationTraits<Ordinal, ::Kokkos::complex<float> >
253  : public DirectSerializationTraits<Ordinal, ::Kokkos::complex<float> >
254  {};
255 
256  template<typename Ordinal>
257  class SerializationTraits<Ordinal, ::Kokkos::complex<double> >
258  : public DirectSerializationTraits<Ordinal, ::Kokkos::complex<double> >
259  {};
260 } // namespace Teuchos
261 
262 #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.