PARALUTION  1.0.0
PARALUTION
mic_vector.hpp
Go to the documentation of this file.
1 #ifndef PARALUTION_MIC_VECTOR_HPP_
2 #define PARALUTION_MIC_VECTOR_HPP_
3 
4 #include "../base_vector.hpp"
5 #include "../base_matrix.hpp"
6 #include "../backend_manager.hpp"
7 #include "../../utils/log.hpp"
8 
9 
10 namespace paralution {
11 
12 template <typename ValueType>
13 class MICAcceleratorVector : public AcceleratorVector<ValueType> {
14 
15 public:
16 
18  MICAcceleratorVector(const Paralution_Backend_Descriptor local_backend);
19  virtual ~MICAcceleratorVector();
20 
21  virtual void info(void) const;
22 
23  virtual void Allocate(const int n);
24  virtual void SetDataPtr(ValueType **ptr, const int size);
25  virtual void LeaveDataPtr(ValueType **ptr);
26  virtual void Clear(void);
27  virtual void Zeros(void);
28  virtual void Ones(void);
29  virtual void SetValues(const ValueType val);
30 
31  virtual void CopyFrom(const BaseVector<ValueType> &src) ;
32  virtual void CopyFrom(const BaseVector<ValueType> &src,
33  const int src_offset,
34  const int dst_offset,
35  const int size);
36 
37 
38  virtual void CopyTo(BaseVector<ValueType> *dst) const;
39 
40  virtual void CopyFromHost(const HostVector<ValueType> &src);
41  virtual void CopyToHost(HostVector<ValueType> *dst) const;
42 
43  virtual void CopyFromPermute(const BaseVector<ValueType> &src,
44  const BaseVector<int> &permutation);
45  virtual void CopyFromPermuteBackward(const BaseVector<ValueType> &src,
46  const BaseVector<int> &permutation);
47 
48  virtual void Permute(const BaseVector<int> &permutation);
49  virtual void PermuteBackward(const BaseVector<int> &permutation);
50 
51 
52  // this = this + alpha*x
53  virtual void AddScale(const BaseVector<ValueType> &x, const ValueType alpha);
54  // this = alpha*this + x
55  virtual void ScaleAdd(const ValueType alpha, const BaseVector<ValueType> &x);
56  // this = alpha*this + x*beta
57  virtual void ScaleAddScale(const ValueType alpha, const BaseVector<ValueType> &x, const ValueType beta);
58  virtual void ScaleAddScale(const ValueType alpha, const BaseVector<ValueType> &x, const ValueType beta,
59  const int src_offset, const int dst_offset,const int size);
60  // this = alpha*this + x*beta + y*gamma
61  virtual void ScaleAdd2(const ValueType alpha, const BaseVector<ValueType> &x, const ValueType beta, const BaseVector<ValueType> &y, const ValueType gamma) ;
62  // this = alpha*this
63  virtual void Scale(const ValueType alpha);
65  virtual void PartialSum(const BaseVector<ValueType> &x);
66  // this^T x
67  virtual ValueType Dot(const BaseVector<ValueType> &x) const;
68  // this^T x
69  virtual ValueType DotNonConj(const BaseVector<ValueType> &x) const;
70  // srqt(this^T this)
71  virtual ValueType Norm(void) const;
72  // reduce
73  virtual ValueType Reduce(void) const;
74  // Compute sum of absolute values of this
75  virtual ValueType Asum(void) const;
76  // Compute absolute value of this
77  virtual int Amax(ValueType &value) const;
78  // point-wise multiplication
79  virtual void PointWiseMult(const BaseVector<ValueType> &x);
80  virtual void PointWiseMult(const BaseVector<ValueType> &x, const BaseVector<ValueType> &y);
81  virtual void Power(const double power);
82 
83 
84 private:
85 
86  ValueType *vec_;
87 
88  friend class MICAcceleratorVector<float>;
89  friend class MICAcceleratorVector<double>;
90  friend class MICAcceleratorVector<int>;
91 
92  friend class HostVector<ValueType>;
93  friend class AcceleratorMatrix<ValueType>;
94 
95  friend class MICAcceleratorMatrixCSR<ValueType>;
96  friend class MICAcceleratorMatrixMCSR<ValueType>;
97  friend class MICAcceleratorMatrixBCSR<ValueType>;
98  friend class MICAcceleratorMatrixCOO<ValueType>;
99  friend class MICAcceleratorMatrixDIA<ValueType>;
100  friend class MICAcceleratorMatrixELL<ValueType>;
101  friend class MICAcceleratorMatrixDENSE<ValueType>;
102  friend class MICAcceleratorMatrixHYB<ValueType>;
103 
104  friend class MICAcceleratorMatrixCOO<double>;
105  friend class MICAcceleratorMatrixCOO<float>;
106 
107  friend class MICAcceleratorMatrixCSR<double>;
108  friend class MICAcceleratorMatrixCSR<float>;
109 
110 };
111 
112 
113 
114 
115 };
116 
117 #endif // PARALUTION_BASE_VECTOR_HPP_
virtual void ScaleAdd2(const ValueType alpha, const BaseVector< ValueType > &x, const ValueType beta, const BaseVector< ValueType > &y, const ValueType gamma)
Perform vector update of type this = alpha*this + x*beta + y*gamma.
Definition: mic_vector.cpp:399
virtual void Power(const double power)
Definition: mic_vector.cpp:648
Definition: base_matrix.hpp:86
virtual ValueType Norm(void) const
Compute L2 norm of the vector, return = srqt(this^T this)
Definition: mic_vector.cpp:490
virtual ValueType Asum(void) const
Compute sum of absolute values of the vector (L1 norm), return = sum(|this|)
Definition: mic_vector.cpp:465
virtual void CopyFrom(const BaseVector< ValueType > &src)
Copy values from another vector.
Definition: mic_vector.cpp:176
Definition: base_matrix.hpp:80
virtual void ScaleAdd(const ValueType alpha, const BaseVector< ValueType > &x)
Perform vector update of type this = alpha*this + x.
Definition: mic_vector.cpp:343
virtual void PointWiseMult(const BaseVector< ValueType > &x)
Perform point-wise multiplication (element-wise) of type this = this * x.
Definition: mic_vector.cpp:515
virtual void CopyFromPermuteBackward(const BaseVector< ValueType > &src, const BaseVector< int > &permutation)
Copy a vector under specified permutation (backward permutation)
Definition: mic_vector.cpp:623
virtual ~MICAcceleratorVector()
Definition: mic_vector.cpp:38
friend class HostVector< ValueType >
Definition: mic_vector.hpp:92
virtual void SetValues(const ValueType val)
Set the values of the vector to given argument.
Definition: mic_vector.cpp:317
virtual void CopyToHost(HostVector< ValueType > *dst) const
Copy (host vector) from accelerator vector.
Definition: mic_vector.cpp:144
const IndexType const IndexType const IndexType const ValueType const ValueType const ValueType ValueType * y
Definition: cuda_kernels_coo.hpp:91
Definition: base_matrix.hpp:74
Definition: base_matrix.hpp:78
Definition: base_vector.hpp:10
virtual void PartialSum(const BaseVector< ValueType > &x)
Compute partial sum.
Definition: mic_vector.cpp:434
virtual void AddScale(const BaseVector< ValueType > &x, const ValueType alpha)
Perform vector update of type this = this + alpha*x.
Definition: mic_vector.cpp:325
virtual void Ones(void)
Set the values of the vector to one.
Definition: mic_vector.cpp:308
void power(const int mic_dev, const int size, const double val, ValueType *vec)
Definition: mic_vector_kernel.cpp:241
virtual void PermuteBackward(const BaseVector< int > &permutation)
Perform inplace permutation (backward) of the vector.
Definition: mic_vector.cpp:575
Definition: base_matrix.hpp:88
Definition: backend_manager.hpp:12
MICAcceleratorVector()
Definition: mic_vector.cpp:17
virtual void Permute(const BaseVector< int > &permutation)
Perform inplace permutation (forward) of the vector.
Definition: mic_vector.cpp:552
Definition: base_matrix.hpp:82
virtual void CopyTo(BaseVector< ValueType > *dst) const
Copy values to another vector.
Definition: mic_vector.cpp:249
Definition: base_matrix.hpp:76
virtual void LeaveDataPtr(ValueType **ptr)
Get a pointer from the vector data and free the vector object.
Definition: mic_vector.cpp:85
Definition: base_vector.hpp:22
virtual ValueType Reduce(void) const
Reduce vector.
Definition: mic_vector.cpp:503
virtual void CopyFromPermute(const BaseVector< ValueType > &src, const BaseVector< int > &permutation)
Copy a vector under specified permutation (forward permutation)
Definition: mic_vector.cpp:598
ValueType * vec_
Definition: mic_vector.hpp:86
Definition: backend_manager.cpp:43
virtual ValueType Dot(const BaseVector< ValueType > &x) const
Compute dot (scalar) product, return this^T y.
Definition: mic_vector.cpp:442
virtual void CopyFromHost(const HostVector< ValueType > &src)
Copy (accelerator vector) from host vector.
Definition: mic_vector.cpp:112
virtual void Zeros(void)
Set the values of the vector to zero.
Definition: mic_vector.cpp:296
const IndexType const IndexType const IndexType const ValueType const ValueType const ValueType * x
Definition: cuda_kernels_coo.hpp:91
virtual void SetDataPtr(ValueType **ptr, const int size)
Initialize a vector with externally allocated data.
Definition: mic_vector.cpp:74
virtual void info(void) const
Shows info about the object.
Definition: mic_vector.cpp:48
virtual void ScaleAddScale(const ValueType alpha, const BaseVector< ValueType > &x, const ValueType beta)
Perform vector update of type this = alpha*this + x*beta.
Definition: mic_vector.cpp:360
virtual ValueType DotNonConj(const BaseVector< ValueType > &x) const
Compute non-conjugated dot (scalar) product, return this^T y.
Definition: mic_vector.cpp:458
Definition: base_matrix.hpp:84
virtual int Amax(ValueType &value) const
Compute the absolute max value of the vector, return = max(|this|)
Definition: mic_vector.cpp:477
virtual void Scale(const ValueType alpha)
Perform vector scaling this = alpha*this.
Definition: mic_vector.cpp:422
virtual void Allocate(const int n)
Allocate a local vector with name and size.
Definition: mic_vector.cpp:55
virtual void Clear(void)
Clear (free) the vector.
Definition: mic_vector.cpp:98