PARALUTION  1.0.0
PARALUTION
ocl_matrix_dia.hpp
Go to the documentation of this file.
1 #ifndef PARALUTION_OCL_MATRIX_DIA_HPP_
2 #define PARALUTION_OCL_MATRIX_DIA_HPP_
3 
4 #include "../base_matrix.hpp"
5 #include "../base_vector.hpp"
6 #include "../matrix_formats.hpp"
7 
8 #if defined(__APPLE__) && defined(__MACH__)
9 #include <OpenCL/cl.h>
10 #else
11 #include <CL/cl.h>
12 #endif
13 
14 namespace paralution {
15 
16 template <class ValueType>
17 class OCLAcceleratorMatrixDIA : public OCLAcceleratorMatrix<ValueType> {
18 
19 public:
20 
22  OCLAcceleratorMatrixDIA(const Paralution_Backend_Descriptor local_backend);
23  virtual ~OCLAcceleratorMatrixDIA();
24 
25  inline int get_ndiag(void) const { return mat_.num_diag; }
26 
27  virtual void info(void) const;
28  virtual unsigned int get_mat_format(void) const{ return DIA; }
29 
30  virtual void Clear(void);
31  virtual void AllocateDIA(const int nnz, const int nrow, const int ncol, const int ndiag);
32 
33  virtual bool ConvertFrom(const BaseMatrix<ValueType> &mat);
34 
35  virtual void CopyFrom(const BaseMatrix<ValueType> &mat);
36  virtual void CopyTo(BaseMatrix<ValueType> *mat) const;
37 
38  virtual void CopyFromHost(const HostMatrix<ValueType> &src);
39  virtual void CopyToHost(HostMatrix<ValueType> *dst) const;
40 
41  virtual void Apply(const BaseVector<ValueType> &in, BaseVector<ValueType> *out) const;
42  virtual void ApplyAdd(const BaseVector<ValueType> &in, const ValueType scalar,
43  BaseVector<ValueType> *out) const;
44 
45 private:
46 
48 
49  friend class BaseVector<ValueType>;
50  friend class AcceleratorVector<ValueType>;
51  friend class OCLAcceleratorVector<ValueType>;
52 
53 };
54 
55 
56 }
57 
58 #endif // PARALUTION_OCL_MATRIX_DIA_HPP_
virtual void Apply(const BaseVector< ValueType > &in, BaseVector< ValueType > *out) const
Apply the matrix to vector, out = this*in;.
Definition: ocl_matrix_dia.cpp:359
MatrixDIA< cl_mem, cl_mem, int > mat_
Definition: ocl_matrix_dia.hpp:47
Definition: matrix_formats.hpp:25
int get_ndiag(void) const
Definition: ocl_matrix_dia.hpp:25
virtual void AllocateDIA(const int nnz, const int nrow, const int ncol, const int ndiag)
Allocate DIA Matrix.
Definition: ocl_matrix_dia.cpp:55
Index num_diag
Number of diagonal.
Definition: matrix_formats.hpp:84
Definition: backend_manager.hpp:10
nnz
Definition: pcg_example.m:8
virtual ~OCLAcceleratorMatrixDIA()
Definition: ocl_matrix_dia.cpp:38
const IndexType const IndexType const IndexType const ValueType const ValueType scalar
Definition: cuda_kernels_coo.hpp:91
virtual void CopyTo(BaseMatrix< ValueType > *mat) const
Copy to another matrix.
Definition: ocl_matrix_dia.cpp:264
virtual bool ConvertFrom(const BaseMatrix< ValueType > &mat)
Convert the matrix from another matrix (with different structure)
Definition: ocl_matrix_dia.cpp:320
virtual void ApplyAdd(const BaseVector< ValueType > &in, const ValueType scalar, BaseVector< ValueType > *out) const
Apply and add the matrix to vector, out = out + scalar*this*in;.
Definition: ocl_matrix_dia.cpp:422
virtual unsigned int get_mat_format(void) const
Return the matrix format id (see matrix_formats.hpp)
Definition: ocl_matrix_dia.hpp:28
virtual void info(void) const
Shows simple info about the object.
Definition: ocl_matrix_dia.cpp:48
virtual void Clear(void)
Clear (free) the matrix.
Definition: ocl_matrix_dia.cpp:105
Base class for all host/accelerator matrices.
Definition: base_matrix.hpp:92
virtual void CopyToHost(HostMatrix< ValueType > *dst) const
Copy (accelerator matrix) to host matrix.
Definition: ocl_matrix_dia.cpp:165
Definition: backend_manager.cpp:43
Definition: backend_manager.hpp:14
Definition: base_vector.hpp:19
OCLAcceleratorMatrixDIA()
Definition: ocl_matrix_dia.cpp:16
Base class for all host/accelerator vectors.
Definition: base_vector.hpp:26
virtual void CopyFrom(const BaseMatrix< ValueType > &mat)
Copy from another matrix.
Definition: ocl_matrix_dia.cpp:210
virtual void CopyFromHost(const HostMatrix< ValueType > &src)
Copy (accelerator matrix) from host matrix.
Definition: ocl_matrix_dia.cpp:122