Template Class Vector

Class Documentation

template<typename ...Props>
class ChipSum::Numeric::Vector

Public Types

using traits = Vector_Traits<Props...>
using vector_type = typename traits::vector_type
using size_type = typename traits::size_type
using size_type_ref = typename ::std::add_lvalue_reference<size_type>::type
using const_size_type_ref = typename ::std::add_const<size_type_ref>::type
using vector_type_ref = typename ::std::add_lvalue_reference<vector_type>::type
using const_vector_type_ref = typename ::std::add_const<vector_type_ref>::type
using scalar_type = Scalar<Props...>
using value_type = typename traits::value_type
using value_type_ref = typename ::std::add_lvalue_reference<value_type>::type
using const_value_type_ref = typename ::std::add_const<value_type_ref>::type

Public Functions

CHIPSUM_DECLARED_FUNCTION Vector() = default
CHIPSUM_DECLARED_FUNCTION Vector(const Vector&) = default
CHIPSUM_DECLARED_FUNCTION Vector(Vector&&) = default
template<typename ST, typename ...Args>
inline CHIPSUM_DECLARED_FUNCTION Vector(const ST &size, Args... args)
inline CHIPSUM_FUNCTION_INLINE void DeepCopy (Vector &y)

Vector深拷贝

参数

y – 输出向量

inline CHIPSUM_FUNCTION_INLINE void DeviceToHost ()

Device端到Host端数据深拷贝

inline CHIPSUM_FUNCTION_INLINE void HostToDevice ()

Host端到Device端数据深拷贝

inline CHIPSUM_FUNCTION_INLINE vector_type & GetData ()

GetData 获取后端数据类型

返回

inline CHIPSUM_FUNCTION_INLINE const_size_type_ref GetSize ()

GetSize 获取向量维度

返回

template<typename Arg> inline CHIPSUM_FUNCTION_INLINE void Dot (Vector &v, Arg &r)
inline CHIPSUM_FUNCTION_INLINE void Dot (Vector &v, scalar_type &r)

Dot 向量点积

参数
  • v – 右端项

  • r – 点积结果

template<typename RetType> inline CHIPSUM_FUNCTION_INLINE value_type Dot (Vector &v)

Dot 向量点积

参数

v – 右端项

返回

点积结果

inline CHIPSUM_FUNCTION_INLINE scalar_type Dot (Vector &v)

Dot 向量点积

参数

v – 右端项

返回

点积结果

inline CHIPSUM_FUNCTION_INLINE Vector operator* (value_type a)

operator * y = a*x

参数

a – 系数

返回

y

template<typename VT> inline CHIPSUM_FUNCTION_INLINE void Mult (const VT &a, Vector &y)

Mult y=a*(*this)

参数
  • a

  • y

inline CHIPSUM_FUNCTION_INLINE Vector & operator= (Vector &y)
inline CHIPSUM_FUNCTION_INLINE void Mult (Scalar< Props... > &a, Vector &y)

operator * y = a*x

参数

a – 系数(后端Scalar类型)

返回

y

inline CHIPSUM_FUNCTION_INLINE Vector & operator*= (scalar_type &a)

operator * y = a*x

参数

a – 系数(后端Scalar类型)

返回

y

inline CHIPSUM_FUNCTION_INLINE Vector & operator*= (value_type a)

operator *= x = a*x

参数

a – 系数

返回

(*this)

inline CHIPSUM_FUNCTION_INLINE Vector Add (Vector &y)

operator + z=x+y

参数

y – 右端项

返回

结果

inline CHIPSUM_FUNCTION_INLINE Vector & operator+= (Vector &y)

operator += x+=y

参数

y – 右端项

返回

结果

inline CHIPSUM_FUNCTION_INLINE void Sub (Vector &y)

operator -, z=x-y

参数

y

返回

inline CHIPSUM_FUNCTION_INLINE void Sub (Vector &y, Vector &z)

Sub 减法接口, z = (*this)-y.

参数
  • y – 输入 y

  • z – 输出 z

inline CHIPSUM_FUNCTION_INLINE Vector operator- ()

operator -, y=-x

返回

y

inline CHIPSUM_FUNCTION_INLINE Vector Neg ()

Neg 取负数接口, y=-x.

返回

y

inline CHIPSUM_FUNCTION_INLINE Vector & operator-= (Vector &y)

operator -= x=x-y

参数

y

返回

inline CHIPSUM_FUNCTION_INLINE value_type & operator() (const size_type i)

operator () x(i) CPU端索引

参数

i – 下标索引

返回

inline CHIPSUM_SPECIAL_INLINE value_type & operator[] (const size_type i) const

operator [] x[i] 设备端索引访问

参数

i – 下标索引

返回

inline CHIPSUM_SPECIAL_INLINE value_type & Item (const size_type i) const

同operator [], x.item(i) 设备端索引

参数

i – 下标索引

返回

template<typename IDT> inline CHIPSUM_FUNCTION_INLINE void GetSlice (IDT i, IDT j, Vector &x)

GetSlice 获取Vector部分拷贝数据

参数
  • i – 起始索引

  • j – 终止索引

  • x – 获取到的Vector由i到j部分的拷贝数据

inline CHIPSUM_FUNCTION_INLINE auto Norm1()

Norm2 x的1范数

返回

标量(POD)

template<typename RefType> inline CHIPSUM_FUNCTION_INLINE void Norm1 (RefType &r)

Norm1 1范数

参数

r – [OUT]

inline CHIPSUM_FUNCTION_INLINE void Norm1 (scalar_type &r)
inline CHIPSUM_FUNCTION_INLINE value_type Norm2 ()

Norm2 x的2范数

返回

标量(POD)

template<typename RefType> inline CHIPSUM_FUNCTION_INLINE void Norm2 (RefType &r)

Norm1 2范数

参数

r – [OUT]

inline CHIPSUM_FUNCTION_INLINE void Norm2 (scalar_type &r)
inline CHIPSUM_FUNCTION_INLINE value_type NormInf ()

NormInf x的Inf范数

返回

标量(POD)

inline CHIPSUM_FUNCTION_INLINE void NormInf (scalar_type &r)

NormInf x的Inf范数 [IN,OUT] scalar标量

template<typename OStreamT = std::ostream> inline CHIPSUM_FUNCTION_INLINE void Print (OStreamT &out=std::cout)

Print 打印(一般用于调试)

参数

out – 输出流

template<typename ... Args> inline CHIPSUM_FUNCTION_INLINE void AXPBY (Vector &y, Args ...args)

AXPBY 模板化接口

参数
  • y – 输出,可能为 y += x y += a*x y = a*x+b*y

  • args

template<typename ValueType> inline CHIPSUM_FUNCTION_INLINE void Fill (ValueType alpha)

Norm1 vector fill.

参数

alpha – [IN] fill data

inline CHIPSUM_FUNCTION_INLINE void Fill (scalar_type &alpha)
inline CHIPSUM_FUNCTION_INLINE auto IAMAX()

IAMAX 向量元素最大绝对值处的(最小)索引 ARGMAX_i(|x[i]|)

返回

size_type

template<typename ScalarType> inline CHIPSUM_FUNCTION_INLINE void IAMAX (ScalarType &r)

IAMAX 向量元素最大绝对值处的(最小)索引 ARGMAX_i(|x[i]|)

参数

[OUT] – scalar<unsigned> type

inline CHIPSUM_FUNCTION_INLINE void Reciprocal (Vector &y)

向量倒数

参数

[OUT] – Vector倒数输出

inline CHIPSUM_FUNCTION_INLINE value_type Sum ()

向量求和

返回

向量和