1 #ifndef PARALUTION_LOCAL_VECTOR_HPP_
2 #define PARALUTION_LOCAL_VECTOR_HPP_
10 template <
typename ValueType>
13 template <
typename ValueType>
17 template <
typename ValueType>
18 class LocalVector :
public Vector<ValueType> {
29 virtual void Sync(
void);
31 virtual void info(
void)
const;
34 virtual bool Check(
void)
const;
37 virtual void Allocate(std::string name,
const int size);
40 void SetDataPtr(ValueType **ptr, std::string name,
const int size);
45 void Assemble(
const int *
i,
const ValueType *v,
46 int size, std::string name,
const int n=0);
51 virtual void SetValues(
const ValueType val);
52 virtual void SetRandom(
const ValueType a = -1.0,
const ValueType
b = 1.0,
const int seed = 0);
64 virtual void CopyFrom(
const LocalVector<ValueType> &src);
65 virtual void CopyFromAsync(
const LocalVector<ValueType> &src);
70 void CopyFrom(
const LocalVector<ValueType> &src,
84 void CloneFrom(
const LocalVector<ValueType> &src);
106 virtual void AddScale(
const LocalVector<ValueType> &
x,
const ValueType alpha);
107 virtual void ScaleAdd(
const ValueType alpha,
const LocalVector<ValueType> &
x);
108 virtual void ScaleAddScale(
const ValueType alpha,
const LocalVector<ValueType> &
x,
const ValueType beta);
110 void ScaleAddScale(
const ValueType alpha,
const LocalVector<ValueType> &
x,
const ValueType beta,
111 const int src_offset,
112 const int dst_offset,
115 virtual void ScaleAdd2(
const ValueType alpha,
const LocalVector<ValueType> &
x,
const ValueType beta,
const LocalVector<ValueType> &
y,
const ValueType gamma);
116 virtual void Scale(
const ValueType alpha);
117 virtual void PartialSum(
const LocalVector<ValueType> &
x);
118 virtual ValueType
Dot(
const LocalVector<ValueType> &
x)
const;
119 virtual ValueType
DotNonConj(
const LocalVector<ValueType> &
x)
const;
120 virtual ValueType
Norm(
void)
const;
121 virtual ValueType
Reduce(
void)
const;
122 virtual ValueType
Asum(
void)
const;
123 virtual int Amax(ValueType &value)
const;
125 virtual void PointWiseMult(
const LocalVector<ValueType> &
x,
const LocalVector<ValueType> &
y);
130 virtual bool is_host(
void)
const;
167 #endif // PARALUTION_LOCAL_VECTOR_HPP_
virtual void info(void) const
Print the object information (properties, backends)
Definition: local_vector.cpp:515
virtual void CopyFrom(const LocalVector< ValueType > &src)
Copy values from another local vector.
Definition: local_vector.cpp:248
virtual ValueType Dot(const LocalVector< ValueType > &x) const
Compute dot (scalar) product, return this^T y.
Definition: local_vector.cpp:745
void Permute(const LocalVector< int > &permutation)
Perform inplace permutation (forward) of the vector.
Definition: local_vector.cpp:922
virtual void PartialSum(const LocalVector< ValueType > &x)
Computes partial sum.
Definition: local_vector.cpp:729
IndexType i
Definition: cuda_kernels_coo.hpp:195
virtual void Allocate(std::string name, const int size)
Allocate a local vector with name and size.
Definition: local_vector.cpp:53
virtual void Power(const double power)
Perform power operation to a vector.
Definition: local_vector.cpp:1098
virtual void AddScale(const LocalVector< ValueType > &x, const ValueType alpha)
Perform vector update of type this = this + alpha*x.
Definition: local_vector.cpp:627
virtual bool is_accel(void) const
Return true if the object is on the accelerator.
Definition: local_vector.cpp:306
virtual void ScaleAdd(const ValueType alpha, const LocalVector< ValueType > &x)
Perform vector update of type this = alpha*this + x.
Definition: local_vector.cpp:643
virtual void SetRandom(const ValueType a=-1.0, const ValueType b=1.0, const int seed=0)
Set random values from interval [a,b].
Definition: local_vector.cpp:220
void CopyFromPermute(const LocalVector< ValueType > &src, const LocalVector< int > &permutation)
Copy a local vector under specified permutation (forward permutation)
Definition: local_vector.cpp:956
virtual ValueType Asum(void) const
Compute the sum of the absolute values of the vector (L1 norm), return = sum(|this|) ...
Definition: local_vector.cpp:809
virtual int get_size(void) const
Return the size of the vector.
Definition: local_vector.cpp:46
virtual void SetValues(const ValueType val)
Set the values of the vector to given argument.
Definition: local_vector.cpp:208
Definition: backend_manager.hpp:10
virtual void WriteFileASCII(const std::string filename) const
Write vector to ASCII file.
Definition: local_vector.cpp:560
void CopyFromData(const ValueType *data)
Copy (import) vector described in one array (values) The object data has to be allocated (call Alloca...
Definition: local_vector.cpp:894
virtual ValueType Reduce(void) const
Reduce the vector.
Definition: local_vector.cpp:795
virtual void CopyFromFloat(const LocalVector< float > &src)
Copy values from float vector.
Definition: local_vector.cpp:277
virtual ValueType Norm(void) const
Compute L2 norm of the vector, return = srqt(this^T this)
Definition: local_vector.cpp:781
virtual void PointWiseMult(const LocalVector< ValueType > &x)
Perform point-wise multiplication (element-wise) of type this = this * x.
Definition: local_vector.cpp:838
virtual void MoveToAccelerator(void)
Move the object to the Accelerator backend.
Definition: local_vector.cpp:327
const IndexType const IndexType const IndexType const ValueType const ValueType const ValueType ValueType * y
Definition: cuda_kernels_coo.hpp:91
virtual void MoveToAcceleratorAsync(void)
Move the object to the Accelerator backend with async move.
Definition: local_vector.cpp:381
virtual void ScaleAddScale(const ValueType alpha, const LocalVector< ValueType > &x, const ValueType beta)
Perform vector update of type this = alpha*this + x*beta.
Definition: local_vector.cpp:659
Definition: base_vector.hpp:10
virtual void MoveToHostAsync(void)
Move the object to the Host backend with async move.
Definition: local_vector.cpp:408
friend class LocalVector< float >
Definition: local_vector.hpp:145
void power(const int mic_dev, const int size, const double val, ValueType *vec)
Definition: mic_vector_kernel.cpp:241
void CopyToData(ValueType *data) const
Copy (export) vector described in one array (values) The output array has to be allocated.
Definition: local_vector.cpp:909
friend class LocalVector< double >
Definition: local_vector.hpp:144
void Assemble(const int *i, const ValueType *v, int size, std::string name, const int n=0)
Assembling.
Definition: local_vector.cpp:119
virtual bool Check(void) const
Return true if the vector is ok (empty vector is also ok) and false if some of values are NaN...
Definition: local_vector.cpp:92
HostVector< ValueType > * vector_host_
Host Vector.
Definition: local_vector.hpp:139
virtual void Zeros()
Set the values of the vector to zero.
Definition: local_vector.cpp:184
virtual ~LocalVector()
Definition: local_vector.cpp:35
ValueType & operator[](const int i)
Access operator (only for host data!)
Definition: local_vector.cpp:489
virtual void MoveToHost(void)
Move the object to the Host backend.
Definition: local_vector.cpp:354
void LeaveDataPtr(ValueType **ptr)
Get a pointer from the vector data and free the vector object.
Definition: local_vector.cpp:162
virtual ValueType DotNonConj(const LocalVector< ValueType > &x) const
Compute non-conjugate dot (scalar) product, return this^T y.
Definition: local_vector.cpp:763
Definition: backend_manager.cpp:43
virtual void CopyFromDouble(const LocalVector< double > &src)
Copy values from double vector.
Definition: local_vector.cpp:288
virtual void CopyFromAsync(const LocalVector< ValueType > &src)
Async copy.
Definition: local_vector.cpp:261
void Restriction(const LocalVector< ValueType > &vec_fine, const LocalVector< int > &map)
Restriction operator based on restriction mapping vector.
Definition: local_vector.cpp:998
Definition: local_stencil.hpp:18
AcceleratorVector< ValueType > * vector_accel_
Accelerator Vector.
Definition: local_vector.hpp:142
BaseVector< ValueType > * vector_
Pointer from the base vector class to the current allocated vector (host_ or accel_) ...
Definition: local_vector.hpp:136
void CopyFromPermuteBackward(const LocalVector< ValueType > &src, const LocalVector< int > &permutation)
Copy a local vector under specified permutation (backward permutation)
Definition: local_vector.cpp:977
const IndexType const IndexType const IndexType const ValueType const ValueType const ValueType * x
Definition: cuda_kernels_coo.hpp:91
LocalVector()
Definition: local_vector.cpp:20
friend class LocalVector< int >
Definition: local_vector.hpp:148
Definition: local_matrix.hpp:15
virtual int Amax(ValueType &value) const
Compute the absolute max value of the vector, return = index(max(|this|))
Definition: local_vector.cpp:823
virtual void Clear()
Clear (free) the vector.
Definition: local_vector.cpp:174
Base class for all host/accelerator vectors.
Definition: base_vector.hpp:26
virtual void Scale(const ValueType alpha)
Perform vector scaling this = alpha*this.
Definition: local_vector.cpp:717
void PermuteBackward(const LocalVector< int > &permutation)
Perform inplace permutation (backward) of the vector.
Definition: local_vector.cpp:939
virtual bool is_host(void) const
Return true if the object is on the host.
Definition: local_vector.cpp:299
virtual void WriteFileBinary(const std::string filename) const
Write vector to binary file.
Definition: local_vector.cpp:604
virtual void Sync(void)
Definition: local_vector.cpp:435
void Prolongation(const LocalVector< ValueType > &vec_coarse, const LocalVector< int > &map)
Prolongation operator based on restriction(!) mapping vector.
Definition: local_vector.cpp:1048
Definition: host_vector.hpp:13
virtual void ReadFileBinary(const std::string filename)
Read vector from binary file.
Definition: local_vector.cpp:583
virtual void ReadFileASCII(const std::string filename)
Read vector from ASCII file.
Definition: local_vector.cpp:537
void SetDataPtr(ValueType **ptr, std::string name, const int size)
Initialize a vector with externally allocated data.
Definition: local_vector.cpp:146
void CloneFrom(const LocalVector< ValueType > &src)
Clone the entire vector (values,backend descr) from another LocalVector.
Definition: local_vector.cpp:313
virtual void ScaleAdd2(const ValueType alpha, const LocalVector< ValueType > &x, const ValueType beta, const LocalVector< ValueType > &y, const ValueType gamma)
Perform vector update of type this = alpha*this + x*beta + y*gamma.
Definition: local_vector.cpp:700
virtual void Ones()
Set the values of the vector to one.
Definition: local_vector.cpp:196