1 #ifndef PARALUTION_BASE_STENCIL_HPP_
2 #define PARALUTION_BASE_STENCIL_HPP_
9 template <
typename ValueType>
11 template <
typename ValueType>
15 template <
typename ValueType>
18 template <
typename ValueType>
20 template <
typename ValueType>
23 template <
typename ValueType>
25 template <
typename ValueType>
29 template <
typename ValueType>
31 template <
typename ValueType>
36 template <
typename ValueType>
51 virtual int get_nnz(
void)
const = 0;
54 virtual void info(
void)
const = 0;
60 virtual void SetGrid(
const int size);
88 template <
typename ValueType>
98 template <
typename ValueType>
99 class AcceleratorStencil :
public BaseStencil<ValueType> {
107 virtual void CopyFromHost(
const HostStencil<ValueType> &src) = 0;
110 virtual void CopyToHost(HostStencil<ValueType> *dst)
const = 0;
114 template <
typename ValueType>
115 class GPUAcceleratorStencil :
public AcceleratorStencil<ValueType> {
124 template <
typename ValueType>
125 class OCLAcceleratorStencil :
public AcceleratorStencil<ValueType> {
134 template <
typename ValueType>
135 class MICAcceleratorStencil :
public AcceleratorStencil<ValueType> {
147 #endif // PARALUTION_BASE_STENCIL_HPP_
virtual void ApplyAdd(const BaseVector< ValueType > &in, const ValueType scalar, BaseVector< ValueType > *out) const =0
Apply and add the stencil to vector, out = out + scalar*this*in;.
virtual void set_backend(const Paralution_Backend_Descriptor local_backend)
Copy the backend descriptor information.
Definition: base_stencil.cpp:60
virtual void info(void) const =0
Shows simple info about the object.
Definition: base_stencil.hpp:12
int get_ncol(void) const
Return the number of columns in the stencil.
Definition: base_stencil.cpp:48
virtual void CopyToHost(HostStencil< ValueType > *dst) const =0
Copy (accelerator stencil) to host stencil.
AcceleratorStencil()
Definition: base_stencil.cpp:89
Definition: backend_manager.hpp:10
int get_ndim(void) const
Return the dimension of the stencil.
Definition: base_stencil.cpp:54
Backend descriptor - keeps information about the hardware - OpenMP (threads); CUDA (blocksizes...
Definition: backend_manager.hpp:19
Definition: base_stencil.hpp:30
Paralution_Backend_Descriptor local_backend_
Backend descriptor (local copy)
Definition: base_stencil.hpp:77
Definition: base_vector.hpp:16
virtual ~HostStencil()
Definition: base_stencil.cpp:83
Definition: base_stencil.hpp:16
const IndexType const IndexType const IndexType const ValueType const ValueType scalar
Definition: cuda_kernels_coo.hpp:91
Definition: base_vector.hpp:10
Base class for all host/accelerator stencils.
Definition: base_stencil.hpp:37
virtual unsigned int get_stencil_id(void) const =0
Return the stencil format id (see stencil_formats.hpp)
OCLAcceleratorStencil()
Definition: base_stencil.cpp:107
virtual ~OCLAcceleratorStencil()
Definition: base_stencil.cpp:111
int get_nrow(void) const
Return the number of rows in the stencil.
Definition: base_stencil.cpp:32
Definition: base_stencil.hpp:32
Definition: base_stencil.hpp:21
Definition: base_vector.hpp:22
int size_
Number of columns.
Definition: base_stencil.hpp:73
BaseStencil()
Definition: base_stencil.cpp:13
virtual ~AcceleratorStencil()
Definition: base_stencil.cpp:93
Definition: backend_manager.cpp:43
virtual ~GPUAcceleratorStencil()
Definition: base_stencil.cpp:102
Definition: base_stencil.hpp:26
virtual void SetGrid(const int size)
Definition: base_stencil.cpp:67
Definition: base_stencil.hpp:10
virtual int get_nnz(void) const =0
Return the nnz per row.
virtual void CopyFromHost(const HostStencil< ValueType > &src)=0
Copy (accelerator stencil) from host stencil.
Definition: base_vector.hpp:19
MICAcceleratorStencil()
Definition: base_stencil.cpp:116
Base class for all host/accelerator vectors.
Definition: base_vector.hpp:26
virtual void Apply(const BaseVector< ValueType > &in, BaseVector< ValueType > *out) const =0
Apply the stencil to vector, out = this*in;.
Definition: base_stencil.hpp:19
GPUAcceleratorStencil()
Definition: base_stencil.cpp:98
HostStencil()
Definition: base_stencil.cpp:79
virtual ~MICAcceleratorStencil()
Definition: base_stencil.cpp:120
int ndim_
Number of rows.
Definition: base_stencil.hpp:71
virtual ~BaseStencil()
Definition: base_stencil.cpp:24
Definition: base_stencil.hpp:24