ViennaCL - The Vienna Computing Library  1.7.0
Free open-source GPU-accelerated linear algebra and solver library.
viennacl::vector_base< NumericT, SizeT, DistanceT > Class Template Reference

Common base class for dense vectors, vector ranges, and vector slices. More...

#include <vector_def.hpp>

Public Types

typedef scalar< NumericTvalue_type
 
typedef NumericT cpu_value_type
 
typedef viennacl::backend::mem_handle handle_type
 
typedef SizeT size_type
 
typedef DistanceT difference_type
 
typedef const_vector_iterator< NumericT, 1 > const_iterator
 
typedef vector_iterator< NumericT, 1 > iterator
 

Public Member Functions

size_type size () const
 Returns the length of the vector (cf. std::vector) More...
 
size_type internal_size () const
 Returns the internal length of the vector, which is given by size() plus the extra memory due to padding the memory with zeros up to a multiple of 'AlignmentV'. More...
 
size_type start () const
 Returns the offset within the buffer. More...
 
size_type stride () const
 Returns the stride within the buffer (in multiples of sizeof(NumericT)) More...
 
bool empty () const
 Returns true is the size is zero. More...
 
const handle_typehandle () const
 Returns the memory handle. More...
 
handle_typehandle ()
 Returns the memory handle. More...
 
viennacl::memory_types memory_domain () const
 
 vector_base ()
 Default constructor in order to be compatible with various containers. More...
 
 vector_base (viennacl::backend::mem_handle &h, size_type vec_size, size_type vec_start, size_type vec_stride)
 An explicit constructor for wrapping an existing vector into a vector_range or vector_slice. More...
 
 vector_base (size_type vec_size, viennacl::context ctx=viennacl::context())
 Creates a vector and allocates the necessary memory. More...
 
 vector_base (NumericT *ptr_to_mem, viennacl::memory_types mem_type, size_type vec_size, vcl_size_t start=0, size_type stride=1)
 
template<typename LHS , typename RHS , typename OP >
 vector_base (vector_expression< const LHS, const RHS, OP > const &proxy)
 
 vector_base (const self_type &other)
 
template<typename OtherNumericT >
 vector_base (const vector_base< OtherNumericT > &v1)
 
self_typeoperator= (const self_type &vec)
 Assignment operator. Other vector needs to be of the same size, or this vector is not yet initialized. More...
 
template<typename LHS , typename RHS , typename OP >
self_typeoperator= (const vector_expression< const LHS, const RHS, OP > &proxy)
 Implementation of the operation v1 = v2 @ alpha, where @ denotes either multiplication or division, and alpha is either a CPU or a GPU scalar. More...
 
template<typename OtherNumericT >
self_typeoperator= (const vector_base< OtherNumericT > &v1)
 Converts a vector of a different numeric type to the current numeric type. More...
 
self_typeoperator= (unit_vector< NumericT > const &v)
 Creates the vector from the supplied unit vector. More...
 
self_typeoperator= (zero_vector< NumericT > const &v)
 Creates the vector from the supplied zero vector. More...
 
self_typeoperator= (scalar_vector< NumericT > const &v)
 Creates the vector from the supplied scalar vector. More...
 
self_typeoperator= (const viennacl::vector_expression< const matrix_base< NumericT >, const vector_base< NumericT >, viennacl::op_prod > &proxy)
 Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a dense matrix. More...
 
self_typeoperator= (const vector_expression< const matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans >, const vector_base< NumericT >, op_prod > &proxy)
 Operator overload for v1 = trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. More...
 
entry_proxy< NumericToperator() (size_type index)
 Read-write access to a single element of the vector. More...
 
entry_proxy< NumericToperator[] (size_type index)
 Read-write access to a single element of the vector. More...
 
const_entry_proxy< NumericToperator() (size_type index) const
 Read access to a single element of the vector. More...
 
const_entry_proxy< NumericToperator[] (size_type index) const
 Read access to a single element of the vector. More...
 
self_typeoperator+= (const self_type &vec)
 
self_typeoperator-= (const self_type &vec)
 
self_typeoperator*= (char val)
 Scales a vector (or proxy) by a char (8-bit integer) More...
 
self_typeoperator*= (short val)
 Scales a vector (or proxy) by a short integer. More...
 
self_typeoperator*= (int val)
 Scales a vector (or proxy) by an integer. More...
 
self_typeoperator*= (long val)
 Scales a vector (or proxy) by a long integer. More...
 
self_typeoperator*= (float val)
 Scales a vector (or proxy) by a single precision floating point value. More...
 
self_typeoperator*= (double val)
 Scales a vector (or proxy) by a double precision floating point value. More...
 
self_typeoperator/= (char val)
 Scales a vector (or proxy) by a char (8-bit integer) More...
 
self_typeoperator/= (short val)
 Scales a vector (or proxy) by a short integer. More...
 
self_typeoperator/= (int val)
 Scales a vector (or proxy) by an integer. More...
 
self_typeoperator/= (long val)
 Scales a vector (or proxy) by a long integer. More...
 
self_typeoperator/= (float val)
 Scales a vector (or proxy) by a single precision floating point value. More...
 
self_typeoperator/= (double val)
 Scales a vector (or proxy) by a double precision floating point value. More...
 
vector_expression< const self_type, const NumericT, op_multoperator* (char value) const
 Scales the vector by a char (8-bit integer) 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_multoperator* (short value) const
 Scales the vector by a short integer 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_multoperator* (int value) const
 Scales the vector by an integer 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_multoperator* (long value) const
 Scales the vector by a long integer 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_multoperator* (float value) const
 Scales the vector by a single precision floating point value 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_multoperator* (double value) const
 Scales the vector by a double precision floating point value 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_divoperator/ (char value) const
 Scales the vector by a char (8-bit integer) 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_divoperator/ (short value) const
 Scales the vector by a short integer 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_divoperator/ (int value) const
 Scales the vector by an integer 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_divoperator/ (long value) const
 Scales the vector by a long integer 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_divoperator/ (float value) const
 Scales the vector by a single precision floating point value 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_divoperator/ (double value) const
 Scales the vector by a double precision floating point value 'alpha' and returns an expression template. More...
 
vector_expression< const self_type, const NumericT, op_multoperator- () const
 Sign flip for the vector. Emulated to be equivalent to -1.0 * vector. More...
 
iterator begin ()
 Returns an iterator pointing to the beginning of the vector (STL like) More...
 
iterator end ()
 Returns an iterator pointing to the end of the vector (STL like) More...
 
const_iterator begin () const
 Returns a const-iterator pointing to the beginning of the vector (STL like) More...
 
const_iterator end () const
 Returns a const-iterator pointing to the end of the vector (STL like) More...
 
self_typeswap (self_type &other)
 Swaps the entries of the two vectors. More...
 
void clear ()
 Resets all entries to zero. Does not change the size of the vector. More...
 
template<class NumericT, typename SizeT , typename DistanceT >
 vector_base (const vector_base< NumericT, SizeT, DistanceT > &other)
 
template<typename LHS , typename RHS , typename OP >
vector_base< NumericT, SizeT, DistanceT > & operator= (const vector_expression< const LHS, const RHS, OP > &proxy)
 Implementation of the operation v1 = v2 @ alpha, where @ denotes either multiplication or division, and alpha is either a CPU or a GPU scalar. More...
 
template<typename OtherNumericT >
vector_base< NumericT, SizeT, DistanceT > & operator= (const vector_base< OtherNumericT > &v1)
 

Protected Member Functions

void set_handle (viennacl::backend::mem_handle const &h)
 
self_typefast_swap (self_type &other)
 Swaps the handles of two vectors by swapping the OpenCL handles only, no data copy. More...
 
void pad ()
 Pads vectors with alignment > 1 with trailing zeros if the internal size is larger than the visible size. More...
 
void switch_memory_context (viennacl::context new_ctx)
 
void resize (size_type new_size, bool preserve=true)
 Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'AlignmentV'. More...
 
void resize (size_type new_size, viennacl::context ctx, bool preserve=true)
 Resizes the allocated memory for the vector. Convenience function for setting an OpenCL context in case reallocation is needed. More...
 

Detailed Description

template<class NumericT, typename SizeT, typename DistanceT>
class viennacl::vector_base< NumericT, SizeT, DistanceT >

Common base class for dense vectors, vector ranges, and vector slices.

Template Parameters
NumericTThe floating point type, either 'float' or 'double'

Definition at line 104 of file vector_def.hpp.

Member Typedef Documentation

template<class NumericT, typename SizeT, typename DistanceT>
typedef const_vector_iterator<NumericT, 1> viennacl::vector_base< NumericT, SizeT, DistanceT >::const_iterator

Definition at line 114 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
typedef NumericT viennacl::vector_base< NumericT, SizeT, DistanceT >::cpu_value_type

Definition at line 110 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
typedef DistanceT viennacl::vector_base< NumericT, SizeT, DistanceT >::difference_type

Definition at line 113 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
typedef viennacl::backend::mem_handle viennacl::vector_base< NumericT, SizeT, DistanceT >::handle_type

Definition at line 111 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
typedef vector_iterator<NumericT, 1> viennacl::vector_base< NumericT, SizeT, DistanceT >::iterator

Definition at line 115 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
typedef SizeT viennacl::vector_base< NumericT, SizeT, DistanceT >::size_type

Definition at line 112 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
typedef scalar<NumericT> viennacl::vector_base< NumericT, SizeT, DistanceT >::value_type

Definition at line 109 of file vector_def.hpp.

Constructor & Destructor Documentation

template<class NumericT , typename SizeT , typename DistanceT >
viennacl::vector_base< NumericT, SizeT, DistanceT >::vector_base ( )
explicit

Default constructor in order to be compatible with various containers.

Definition at line 251 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
viennacl::vector_base< NumericT, SizeT, DistanceT >::vector_base ( viennacl::backend::mem_handle h,
size_type  vec_size,
size_type  vec_start,
size_type  vec_stride 
)
explicit

An explicit constructor for wrapping an existing vector into a vector_range or vector_slice.

Parameters
hThe existing memory handle from a vector/vector_range/vector_slice
vec_sizeThe length (i.e. size) of the buffer
vec_startThe offset from the beginning of the buffer identified by 'h'
vec_strideIncrement between two elements in the original buffer (in multiples of NumericT)

Definition at line 254 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
viennacl::vector_base< NumericT, SizeT, DistanceT >::vector_base ( size_type  vec_size,
viennacl::context  ctx = viennacl::context() 
)
explicit

Creates a vector and allocates the necessary memory.

Definition at line 259 of file vector.hpp.

template<class NumericT, typename SizeT , typename DistanceT >
viennacl::vector_base< NumericT, SizeT, DistanceT >::vector_base ( NumericT ptr_to_mem,
viennacl::memory_types  mem_type,
size_type  vec_size,
vcl_size_t  start = 0,
size_type  stride = 1 
)
explicit

Definition at line 271 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
template<typename LHS , typename RHS , typename OP >
viennacl::vector_base< NumericT, SizeT, DistanceT >::vector_base ( vector_expression< const LHS, const RHS, OP > const &  proxy)
explicit

Definition at line 311 of file vector.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
viennacl::vector_base< NumericT, SizeT, DistanceT >::vector_base ( const self_type other)
template<typename NumericT , typename SizeT , typename DistanceT >
template<typename OtherNumericT >
viennacl::vector_base< NumericT, SizeT, DistanceT >::vector_base ( const vector_base< OtherNumericT > &  v1)

Definition at line 340 of file vector.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
template<class NumericT, typename SizeT , typename DistanceT >
viennacl::vector_base< NumericT, SizeT, DistanceT >::vector_base ( const vector_base< NumericT, SizeT, DistanceT > &  other)

Definition at line 324 of file vector.hpp.

Member Function Documentation

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT >::iterator viennacl::vector_base< NumericT, SizeT, DistanceT >::begin ( )

Returns an iterator pointing to the beginning of the vector (STL like)

Definition at line 841 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT >::const_iterator viennacl::vector_base< NumericT, SizeT, DistanceT >::begin ( ) const

Returns a const-iterator pointing to the beginning of the vector (STL like)

Definition at line 855 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
void viennacl::vector_base< NumericT, SizeT, DistanceT >::clear ( )

Resets all entries to zero. Does not change the size of the vector.

Definition at line 875 of file vector.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
bool viennacl::vector_base< NumericT, SizeT, DistanceT >::empty ( ) const
inline

Returns true is the size is zero.

Definition at line 126 of file vector_def.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT >::iterator viennacl::vector_base< NumericT, SizeT, DistanceT >::end ( )

Returns an iterator pointing to the end of the vector (STL like)

Definition at line 848 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT >::const_iterator viennacl::vector_base< NumericT, SizeT, DistanceT >::end ( ) const

Returns a const-iterator pointing to the end of the vector (STL like)

Definition at line 861 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::fast_swap ( self_type other)
protected

Swaps the handles of two vectors by swapping the OpenCL handles only, no data copy.

Definition at line 881 of file vector.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
const handle_type& viennacl::vector_base< NumericT, SizeT, DistanceT >::handle ( ) const
inline

Returns the memory handle.

Definition at line 128 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
handle_type& viennacl::vector_base< NumericT, SizeT, DistanceT >::handle ( )
inline

Returns the memory handle.

Definition at line 130 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
size_type viennacl::vector_base< NumericT, SizeT, DistanceT >::internal_size ( ) const
inline

Returns the internal length of the vector, which is given by size() plus the extra memory due to padding the memory with zeros up to a multiple of 'AlignmentV'.

Definition at line 120 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
viennacl::memory_types viennacl::vector_base< NumericT, SizeT, DistanceT >::memory_domain ( ) const
inline

Definition at line 131 of file vector_def.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
entry_proxy< NumericT > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator() ( size_type  index)

Read-write access to a single element of the vector.

Definition at line 562 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
const_entry_proxy< NumericT > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator() ( size_type  index) const

Read access to a single element of the vector.

Definition at line 580 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_mult > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator* ( char  value) const

Scales the vector by a char (8-bit integer) 'alpha' and returns an expression template.

Scales the vector by a char (8-bit value) 'alpha' and returns an expression template.

Definition at line 742 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_mult > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator* ( short  value) const

Scales the vector by a short integer 'alpha' and returns an expression template.

Definition at line 749 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_mult > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator* ( int  value) const

Scales the vector by an integer 'alpha' and returns an expression template.

Definition at line 756 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_mult > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator* ( long  value) const

Scales the vector by a long integer 'alpha' and returns an expression template.

Definition at line 763 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_mult > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator* ( float  value) const

Scales the vector by a single precision floating point value 'alpha' and returns an expression template.

Scales the vector by a single precision floating point number 'alpha' and returns an expression template.

Definition at line 770 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_mult > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator* ( double  value) const

Scales the vector by a double precision floating point value 'alpha' and returns an expression template.

Scales the vector by a single precision floating point number 'alpha' and returns an expression template.

Definition at line 777 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator*= ( char  val)

Scales a vector (or proxy) by a char (8-bit integer)

Scales a vector (or proxy) by a char (8-bit integer) value.

Definition at line 629 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator*= ( short  val)

Scales a vector (or proxy) by a short integer.

Scales a vector (or proxy) by a short integer value.

Definition at line 638 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator*= ( int  val)

Scales a vector (or proxy) by an integer.

Scales a vector (or proxy) by an integer value.

Definition at line 647 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator*= ( long  val)

Scales a vector (or proxy) by a long integer.

Scales a vector (or proxy) by a long integer value.

Definition at line 656 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator*= ( float  val)

Scales a vector (or proxy) by a single precision floating point value.

Definition at line 665 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator*= ( double  val)

Scales a vector (or proxy) by a double precision floating point value.

Definition at line 674 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator+= ( const self_type vec)

Definition at line 604 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_mult > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator- ( ) const

Sign flip for the vector. Emulated to be equivalent to -1.0 * vector.

Definition at line 830 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator-= ( const self_type vec)

Definition at line 616 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_div > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/ ( char  value) const

Scales the vector by a char (8-bit integer) 'alpha' and returns an expression template.

Scales the vector by a char (8-bit value) 'alpha' and returns an expression template.

Definition at line 786 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_div > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/ ( short  value) const

Scales the vector by a short integer 'alpha' and returns an expression template.

Definition at line 793 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_div > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/ ( int  value) const

Scales the vector by an integer 'alpha' and returns an expression template.

Definition at line 800 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_div > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/ ( long  value) const

Scales the vector by a long integer 'alpha' and returns an expression template.

Definition at line 807 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_div > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/ ( float  value) const

Scales the vector by a single precision floating point value 'alpha' and returns an expression template.

Scales the vector by a single precision floating point number 'alpha' and returns an expression template.

Definition at line 814 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_expression< const vector_base< NumericT, SizeT, DistanceT >, const NumericT, op_div > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/ ( double  value) const

Scales the vector by a double precision floating point value 'alpha' and returns an expression template.

Scales the vector by a double precision floating point number 'alpha' and returns an expression template.

Definition at line 821 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/= ( char  val)

Scales a vector (or proxy) by a char (8-bit integer)

Scales this vector by a char (8-bit) value.

Definition at line 685 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/= ( short  val)

Scales a vector (or proxy) by a short integer.

Scales this vector by a short integer value.

Definition at line 694 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/= ( int  val)

Scales a vector (or proxy) by an integer.

Scales this vector by an integer value.

Definition at line 703 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/= ( long  val)

Scales a vector (or proxy) by a long integer.

Scales this vector by a long integer value.

Definition at line 712 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/= ( float  val)

Scales a vector (or proxy) by a single precision floating point value.

Scales this vector by a single precision floating point value.

Definition at line 721 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator/= ( double  val)

Scales a vector (or proxy) by a double precision floating point value.

Scales this vector by a double precision floating point value.

Definition at line 730 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator= ( const self_type vec)

Assignment operator. Other vector needs to be of the same size, or this vector is not yet initialized.

Definition at line 356 of file vector.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
template<typename LHS , typename RHS , typename OP >
self_type& viennacl::vector_base< NumericT, SizeT, DistanceT >::operator= ( const vector_expression< const LHS, const RHS, OP > &  proxy)

Implementation of the operation v1 = v2 @ alpha, where @ denotes either multiplication or division, and alpha is either a CPU or a GPU scalar.

Parameters
proxyAn expression template proxy class.
template<class NumericT, typename SizeT, typename DistanceT>
template<typename OtherNumericT >
self_type& viennacl::vector_base< NumericT, SizeT, DistanceT >::operator= ( const vector_base< OtherNumericT > &  v1)

Converts a vector of a different numeric type to the current numeric type.

template<class NumericT, typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator= ( unit_vector< NumericT > const &  v)

Creates the vector from the supplied unit vector.

Definition at line 434 of file vector.hpp.

template<class NumericT, typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator= ( zero_vector< NumericT > const &  v)

Creates the vector from the supplied zero vector.

Definition at line 460 of file vector.hpp.

template<class NumericT, typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator= ( scalar_vector< NumericT > const &  v)

Creates the vector from the supplied scalar vector.

Definition at line 483 of file vector.hpp.

template<class NumericT, typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator= ( const viennacl::vector_expression< const matrix_base< NumericT >, const vector_base< NumericT >, viennacl::op_prod > &  proxy)

Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a dense matrix.

Parameters
proxyAn expression template proxy class

Definition at line 514 of file vector.hpp.

template<class NumericT, typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::operator= ( const vector_expression< const matrix_expression< const matrix_base< NumericT >, const matrix_base< NumericT >, op_trans >, const vector_base< NumericT >, op_prod > &  proxy)

Operator overload for v1 = trans(A) * v2, where v1, v2 are vectors and A is a dense matrix.

Parameters
proxyAn expression template proxy class

Definition at line 535 of file vector.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
template<typename LHS , typename RHS , typename OP >
vector_base<NumericT, SizeT, DistanceT>& viennacl::vector_base< NumericT, SizeT, DistanceT >::operator= ( const vector_expression< const LHS, const RHS, OP > &  proxy)

Implementation of the operation v1 = v2 @ alpha, where @ denotes either multiplication or division, and alpha is either a CPU or a GPU scalar.

Parameters
proxyAn expression template proxy class.

Definition at line 389 of file vector.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
template<typename OtherNumericT >
vector_base<NumericT, SizeT, DistanceT>& viennacl::vector_base< NumericT, SizeT, DistanceT >::operator= ( const vector_base< OtherNumericT > &  v1)

Definition at line 411 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
entry_proxy< NumericT > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator[] ( size_type  index)

Read-write access to a single element of the vector.

Definition at line 571 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
const_entry_proxy< NumericT > viennacl::vector_base< NumericT, SizeT, DistanceT >::operator[] ( size_type  index) const

Read access to a single element of the vector.

Definition at line 589 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
void viennacl::vector_base< NumericT, SizeT, DistanceT >::pad ( )
protected

Pads vectors with alignment > 1 with trailing zeros if the internal size is larger than the visible size.

Definition at line 889 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
void viennacl::vector_base< NumericT, SizeT, DistanceT >::resize ( size_type  new_size,
bool  preserve = true 
)
protected

Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'AlignmentV'.

Parameters
new_sizeThe new size of the vector
preserveIf true, old entries of the vector are preserved, otherwise eventually discarded.

Definition at line 909 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
void viennacl::vector_base< NumericT, SizeT, DistanceT >::resize ( size_type  new_size,
viennacl::context  ctx,
bool  preserve = true 
)
protected

Resizes the allocated memory for the vector. Convenience function for setting an OpenCL context in case reallocation is needed.

Parameters
new_sizeThe new size of the vector
ctxThe context within which the new memory should be allocated
preserveIf true, old entries of the vector are preserved, otherwise eventually discarded.

Definition at line 915 of file vector.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
void viennacl::vector_base< NumericT, SizeT, DistanceT >::set_handle ( viennacl::backend::mem_handle const &  h)
inlineprotected

Definition at line 305 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
size_type viennacl::vector_base< NumericT, SizeT, DistanceT >::size ( ) const
inline

Returns the length of the vector (cf. std::vector)

Definition at line 118 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
size_type viennacl::vector_base< NumericT, SizeT, DistanceT >::start ( ) const
inline

Returns the offset within the buffer.

Definition at line 122 of file vector_def.hpp.

template<class NumericT, typename SizeT, typename DistanceT>
size_type viennacl::vector_base< NumericT, SizeT, DistanceT >::stride ( ) const
inline

Returns the stride within the buffer (in multiples of sizeof(NumericT))

Definition at line 124 of file vector_def.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
vector_base< NumericT, SizeT, DistanceT > & viennacl::vector_base< NumericT, SizeT, DistanceT >::swap ( self_type other)

Swaps the entries of the two vectors.

Definition at line 867 of file vector.hpp.

template<class NumericT , typename SizeT , typename DistanceT >
void viennacl::vector_base< NumericT, SizeT, DistanceT >::switch_memory_context ( viennacl::context  new_ctx)
protected

Definition at line 899 of file vector.hpp.


The documentation for this class was generated from the following files: