A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!! More...
#include <forwards.h>
Public Types | |
typedef scalar< NumericT > | value_type |
typedef vcl_size_t | size_type |
typedef vcl_ptrdiff_t | difference_type |
typedef viennacl::backend::mem_handle | handle_type |
Public Member Functions | |
const_vector_iterator (vector_base< NumericT > const &vec, size_type index, size_type start=0, size_type stride=1) | |
Constructor. More... | |
const_vector_iterator (handle_type const &elements, size_type index, size_type start=0, size_type stride=1) | |
Constructor for vector-like treatment of arbitrary buffers. More... | |
value_type | operator* (void) const |
Dereferences the iterator and returns the value of the element. For convenience only, performance is poor due to OpenCL overhead! More... | |
self_type | operator++ (void) |
self_type | operator++ (int) |
bool | operator== (self_type const &other) const |
bool | operator!= (self_type const &other) const |
difference_type | operator- (self_type const &other) const |
self_type | operator+ (difference_type diff) const |
size_type | offset () const |
Offset of the current element index with respect to the beginning of the buffer. More... | |
size_type | stride () const |
Index increment in the underlying buffer when incrementing the iterator to the next element. More... | |
handle_type const & | handle () const |
Protected Attributes | |
handle_type const & | elements_ |
The index of the entry the iterator is currently pointing to. More... | |
size_type | index_ |
size_type | start_ |
size_type | stride_ |
A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be 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 } Note that you may obtain inconsistent data if entries of gpu_vector are manipulated elsewhere in the meanwhile.
NumericT | The underlying floating point type (either float or double) |
AlignmentV | Alignment of the underlying vector, |
Definition at line 245 of file forwards.h.
typedef vcl_ptrdiff_t viennacl::const_vector_iterator< SCALARTYPE, ALIGNMENT >::difference_type |
Definition at line 114 of file vector.hpp.
typedef viennacl::backend::mem_handle viennacl::const_vector_iterator< SCALARTYPE, ALIGNMENT >::handle_type |
Definition at line 115 of file vector.hpp.
typedef vcl_size_t viennacl::const_vector_iterator< SCALARTYPE, ALIGNMENT >::size_type |
Definition at line 113 of file vector.hpp.
typedef scalar<NumericT> viennacl::const_vector_iterator< SCALARTYPE, ALIGNMENT >::value_type |
Definition at line 112 of file vector.hpp.
|
inline |
Constructor.
vec | The vector over which to iterate |
index | The starting index of the iterator |
start | First index of the element in the vector pointed to be the iterator (for vector_range and vector_slice) |
stride | Stride for the support of vector_slice |
Definition at line 125 of file vector.hpp.
|
inline |
Constructor for vector-like treatment of arbitrary buffers.
elements | The buffer over which to iterate |
index | The starting index of the iterator |
start | First index of the element in the vector pointed to be the iterator (for vector_range and vector_slice) |
stride | Stride for the support of vector_slice |
Definition at line 136 of file vector.hpp.
|
inline |
Definition at line 174 of file vector.hpp.
|
inline |
Offset of the current element index with respect to the beginning of the buffer.
Definition at line 170 of file vector.hpp.
|
inline |
Definition at line 152 of file vector.hpp.
|
inline |
Dereferences the iterator and returns the value of the element. For convenience only, performance is poor due to OpenCL overhead!
Definition at line 142 of file vector.hpp.
|
inline |
Definition at line 166 of file vector.hpp.
|
inline |
Definition at line 148 of file vector.hpp.
|
inline |
Definition at line 149 of file vector.hpp.
|
inline |
Definition at line 161 of file vector.hpp.
|
inline |
Definition at line 151 of file vector.hpp.
|
inline |
Index increment in the underlying buffer when incrementing the iterator to the next element.
Definition at line 173 of file vector.hpp.
|
protected |
The index of the entry the iterator is currently pointing to.
Definition at line 178 of file vector.hpp.
|
protected |
Definition at line 179 of file vector.hpp.
|
protected |
Definition at line 180 of file vector.hpp.
|
protected |
Definition at line 181 of file vector.hpp.