A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library. More...
#include <entry_proxy.hpp>
Public Member Functions | |
entry_proxy (unsigned int mem_offset, viennacl::ocl::handle< cl_mem > const &mem_handle) | |
The constructor for the proxy class. Declared explicit to avoid any surprises created by the compiler. | |
entry_proxy & | operator+= (SCALARTYPE value) |
Inplace addition of a CPU floating point value. | |
entry_proxy & | operator-= (SCALARTYPE value) |
Inplace subtraction of a CPU floating point value. | |
entry_proxy & | operator*= (SCALARTYPE value) |
Inplace multiplication with a CPU floating point value. | |
entry_proxy & | operator/= (SCALARTYPE value) |
Inplace division by a CPU floating point value. | |
entry_proxy & | operator= (SCALARTYPE value) |
Assignment of a CPU floating point value. | |
entry_proxy & | operator= (scalar< SCALARTYPE > const &value) |
Assignment of a GPU floating point value. Avoids unnecessary GPU->CPU->GPU transfers. | |
entry_proxy & | operator= (entry_proxy const &other) |
Assignment of another GPU value. | |
operator SCALARTYPE () const | |
Conversion to a CPU floating point value. | |
unsigned int | index () const |
Returns the index of the represented element. | |
viennacl::ocl::handle< cl_mem > const & | handle () const |
Returns the memory viennacl::ocl::handle. |
A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library.
This proxy provides access to a single entry of a vector. If the element is assigned to a GPU object, no unnecessary transfers to the CPU and back to GPU are initiated.
SCALARTYPE | Either float or double |
entry_proxy | ( | unsigned int | mem_offset, | |
viennacl::ocl::handle< cl_mem > const & | mem_handle | |||
) | [inline, explicit] |
The constructor for the proxy class. Declared explicit to avoid any surprises created by the compiler.
mem_offset | The memory offset in multiples of sizeof(SCALARTYPE) relative to the memory pointed to by the handle | |
mem_handle | A viennacl::ocl::handle for the memory buffer on the GPU. |
viennacl::ocl::handle<cl_mem> const& handle | ( | ) | const [inline] |
Returns the memory viennacl::ocl::handle.
unsigned int index | ( | ) | const [inline] |
Returns the index of the represented element.
operator SCALARTYPE | ( | ) | const [inline] |
Conversion to a CPU floating point value.
This conversion allows to write something like double test = vector(4); However, one has to keep in mind that CPU<->GPU transfers are very slow compared to CPU<->CPU operations.
entry_proxy& operator*= | ( | SCALARTYPE | value | ) | [inline] |
Inplace multiplication with a CPU floating point value.
entry_proxy& operator+= | ( | SCALARTYPE | value | ) | [inline] |
Inplace addition of a CPU floating point value.
entry_proxy& operator-= | ( | SCALARTYPE | value | ) | [inline] |
Inplace subtraction of a CPU floating point value.
entry_proxy& operator/= | ( | SCALARTYPE | value | ) | [inline] |
Inplace division by a CPU floating point value.
entry_proxy& operator= | ( | scalar< SCALARTYPE > const & | value | ) | [inline] |
Assignment of a GPU floating point value. Avoids unnecessary GPU->CPU->GPU transfers.
entry_proxy& operator= | ( | entry_proxy< SCALARTYPE > const & | other | ) | [inline] |
Assignment of another GPU value.
entry_proxy& operator= | ( | SCALARTYPE | value | ) | [inline] |
Assignment of a CPU floating point value.