16 #ifndef dealii__cuda_vector_h 17 #define dealii__cuda_vector_h 19 #include <deal.II/base/config.h> 20 #include <deal.II/lac/vector_space_vector.h> 23 #ifdef DEAL_II_WITH_CUDA 25 DEAL_II_NAMESPACE_OPEN
27 class CommunicationPatternBase;
29 template <
typename Number>
class ReadWriteVector;
33 namespace CUDAWrappers
43 template <
typename Number>
44 class Vector:
public VectorSpaceVector<Number>
47 typedef typename VectorSpaceVector<Number>::value_type value_type;
48 typedef typename VectorSpaceVector<Number>::size_type
size_type;
49 typedef typename VectorSpaceVector<Number>::real_type real_type;
71 explicit Vector(
const size_type n);
83 void reinit(
const size_type n,
84 const bool omit_zeroing_entries =
false);
94 virtual void import(
const ReadWriteVector<Number> &V,
96 std_cxx11::shared_ptr<const CommunicationPatternBase> communication_pattern =
97 std_cxx11::shared_ptr<const CommunicationPatternBase> ())
override;
102 virtual Vector<Number> &operator*= (
const Number factor)
override;
107 virtual Vector<Number> &operator/= (
const Number factor)
override;
112 virtual Vector<Number> &operator+= (
const VectorSpaceVector<Number> &V)
override;
117 virtual Vector<Number> &operator-= (
const VectorSpaceVector<Number> &V)
override;
122 virtual Number operator* (
const VectorSpaceVector<Number> &V)
const override;
127 virtual void add(
const Number a)
override;
132 virtual void add(
const Number a,
const VectorSpaceVector<Number> &V)
override;
137 virtual void add(
const Number a,
const VectorSpaceVector<Number> &V,
138 const Number b,
const VectorSpaceVector<Number> &W)
override;
144 virtual void sadd(
const Number s,
const Number a,
145 const VectorSpaceVector<Number> &V)
override;
152 virtual void scale(
const VectorSpaceVector<Number> &scaling_factors)
override;
157 virtual void equ(
const Number a,
const VectorSpaceVector<Number> &V)
override;
162 virtual value_type mean_value()
const override;
168 virtual real_type l1_norm()
const override;
174 virtual real_type l2_norm()
const override;
180 virtual real_type linfty_norm()
const override;
198 virtual Number add_and_dot(
const Number a,
199 const VectorSpaceVector<Number> &V,
200 const VectorSpaceVector<Number> &W)
override;
205 Number *get_values()
const;
216 virtual ::IndexSet locally_owned_elements()
const override;
221 virtual void print(std::ostream &out,
222 const unsigned int precision=2,
223 const bool scientific=
true,
224 const bool across=
true)
const override;
253 template <
typename Number>
262 template <
typename Number>
270 template <
typename Number>
274 return complete_index_set(n_elements);
279 DEAL_II_NAMESPACE_CLOSE
types::global_dof_index size_type
virtual size_type size() const
#define DeclException0(Exception0)
std_cxx11::enable_if< std_cxx11::is_fundamental< T >::value, std::size_t >::type memory_consumption(const T &t)
virtual ::IndexSet locally_owned_elements() const