PARALUTION  1.0.0
PARALUTION
local_stencil.hpp
Go to the documentation of this file.
1 #ifndef PARALUTION_LOCAL_STENCIL_HPP_
2 #define PARALUTION_LOCAL_STENCIL_HPP_
3 
4 #include "operator.hpp"
5 #include "local_vector.hpp"
6 #include "base_stencil.hpp"
7 #include "stencil_types.hpp"
8 
9 namespace paralution {
10 
11 template <typename ValueType>
12 class LocalVector;
13 template <typename ValueType>
15 
16 // Local Stencil
17 template <typename ValueType>
18 class LocalStencil : public Operator<ValueType> {
19 
20 public:
21 
22  LocalStencil();
23  LocalStencil(unsigned int type);
24  virtual ~LocalStencil();
25 
26  virtual void info() const;
27 
28  virtual int get_ndim(void) const;
29  virtual int get_nrow(void) const;
30  virtual int get_ncol(void) const;
31  virtual int get_nnz(void) const;
32 
33  virtual void SetGrid(const int size);
34 
35  virtual void Clear();
36 
37  virtual void Apply(const LocalVector<ValueType> &in, LocalVector<ValueType> *out) const;
38  virtual void ApplyAdd(const LocalVector<ValueType> &in, const ValueType scalar,
39  LocalVector<ValueType> *out) const;
40 
41  virtual void MoveToAccelerator(void);
42  virtual void MoveToHost(void);
43 
44 protected:
45 
46  virtual bool is_host(void) const {return true;};
47  virtual bool is_accel(void) const {return false;};
48 
49 private:
50 
51  std::string object_name_ ;
52 
54 
57 
58 
59  friend class LocalVector<ValueType>;
60  friend class GlobalVector<ValueType>;
61 
62 };
63 
64 
65 }
66 
67 #endif // PARALUTION_LOCAL_STENCIL_HPP_
virtual int get_nnz(void) const
Return the number of non-zeros in the matrix/stencil.
Definition: local_stencil.cpp:59
virtual void info() const
Print the object information (properties, backends)
Definition: local_stencil.cpp:78
Definition: base_stencil.hpp:16
const IndexType const IndexType const IndexType const ValueType const ValueType scalar
Definition: cuda_kernels_coo.hpp:91
virtual ~LocalStencil()
Definition: local_stencil.cpp:28
virtual bool is_host(void) const
Return true if the object is on the host.
Definition: local_stencil.hpp:46
Base class for all host/accelerator stencils.
Definition: base_stencil.hpp:37
virtual void ApplyAdd(const LocalVector< ValueType > &in, const ValueType scalar, LocalVector< ValueType > *out) const
Apply and add the operator, out = out + scalar*Operator(in), where in, out are local vectors...
Definition: local_stencil.cpp:125
BaseStencil< ValueType > * stencil_
Definition: local_stencil.hpp:53
virtual int get_ndim(void) const
Definition: local_stencil.cpp:53
virtual bool is_accel(void) const
Return true if the object is on the accelerator.
Definition: local_stencil.hpp:47
virtual void SetGrid(const int size)
Definition: local_stencil.cpp:97
virtual int get_nrow(void) const
Return the number of rows in the matrix/stencil.
Definition: local_stencil.cpp:65
Definition: local_stencil.hpp:14
LocalStencil()
Definition: local_stencil.cpp:14
Operator class defines the generic interface for applying an operator (e.g. matrix, stencil) from/to global and local vectors.
Definition: operator.hpp:19
Definition: backend_manager.cpp:43
Definition: local_stencil.hpp:18
virtual void Clear()
Clear (free all data) the object.
Definition: local_stencil.cpp:85
virtual void MoveToAccelerator(void)
Move the object to the Accelerator backend.
Definition: local_stencil.cpp:142
Definition: base_stencil.hpp:10
virtual int get_ncol(void) const
Return the number of columns in the matrix/stencil.
Definition: local_stencil.cpp:71
AcceleratorStencil< ValueType > * stencil_accel_
Definition: local_stencil.hpp:56
virtual void Apply(const LocalVector< ValueType > &in, LocalVector< ValueType > *out) const
Apply the operator, out = Operator(in), where in, out are local vectors.
Definition: local_stencil.cpp:109
virtual void MoveToHost(void)
Move the object to the Host backend.
Definition: local_stencil.cpp:150
std::string object_name_
Definition: local_stencil.hpp:47
Definition: host_vector.hpp:13
HostStencil< ValueType > * stencil_host_
Definition: local_stencil.hpp:55