ViennaCL - The Vienna Computing Library  1.5.2
Public Types | Public Member Functions
vector_iterator< SCALARTYPE, ALIGNMENT > Class Template Reference

A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!! More...

#include <vector.hpp>

Inheritance diagram for vector_iterator< SCALARTYPE, ALIGNMENT >:
const_vector_iterator< SCALARTYPE, ALIGNMENT >

Public Types

typedef base_type::handle_type handle_type
typedef base_type::difference_type difference_type

Public Member Functions

 vector_iterator ()
 vector_iterator (handle_type &elements, vcl_size_t index, vcl_size_t start=0, vcl_ptrdiff_t stride=1)
 vector_iterator (vector_base< SCALARTYPE > &vec, vcl_size_t index, vcl_size_t start=0, vcl_ptrdiff_t stride=1)
 Constructor.
base_type::value_type operator* (void)
difference_type operator- (self_type const &other) const
self_type operator+ (difference_type diff) const
handle_typehandle ()
handle_type const & handle () const

Detailed Description

template<class SCALARTYPE, unsigned int ALIGNMENT>
class viennacl::vector_iterator< SCALARTYPE, ALIGNMENT >

A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!

Every dereference operation initiates a transfer from the GPU to the CPU. The overhead of such a transfer is around 50us, so 20.000 dereferences take one second. This is four orders of magnitude slower than similar dereferences on the CPU. However, increments and comparisons of iterators is as fast as for CPU types. If you need a fast iterator, copy the whole vector to the CPU first and iterate over the CPU object, e.g. std::vector<float> temp; copy(gpu_vector, temp); for (std::vector<float>::const_iterator iter = temp.begin(); iter != temp.end(); ++iter) { //do something } copy(temp, gpu_vector); Note that you may obtain inconsistent data if you manipulate entries of gpu_vector in the meanwhile.

Template Parameters:
SCALARTYPEThe underlying floating point type (either float or double)
ALIGNMENTAlignment of the underlying vector,
See also:
vector

Member Typedef Documentation


Constructor & Destructor Documentation

vector_iterator ( ) [inline]
vector_iterator ( handle_type elements,
vcl_size_t  index,
vcl_size_t  start = 0,
vcl_ptrdiff_t  stride = 1 
) [inline]
vector_iterator ( vector_base< SCALARTYPE > &  vec,
vcl_size_t  index,
vcl_size_t  start = 0,
vcl_ptrdiff_t  stride = 1 
) [inline]

Constructor.

Parameters:
vecThe vector over which to iterate
indexThe starting index of the iterator
startOffset from the beginning of the underlying vector (for ranges and slices)
strideStride for slices

Member Function Documentation

handle_type& handle ( ) [inline]
handle_type const& handle ( ) const [inline]
base_type::value_type operator* ( void  ) [inline]
self_type operator+ ( difference_type  diff) const [inline]
difference_type operator- ( self_type const &  other) const [inline]

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