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

This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double. More...

#include <forwards.h>

Public Types

typedef
viennacl::backend::mem_handle 
handle_type
 
typedef vcl_size_t size_type
 
typedef SCALARTYPE value_type
 Returns the underlying host scalar type. More...
 

Public Member Functions

 scalar ()
 Creates the scalar object, but does not yet allocate memory. Thus, scalar<> can also be a global variable (if really necessary). More...
 
 scalar (SCALARTYPE val, viennacl::context ctx=viennacl::context())
 Allocates the memory for the scalar and sets it to the supplied value. More...
 
template<typename T1 , typename T2 , typename OP >
 scalar (scalar_expression< T1, T2, OP > const &proxy)
 Allocates memory for the scalar and sets it to the result of supplied expression. More...
 
 scalar (const scalar &other)
 Copy constructor. Allocates new memory for the scalar and copies the value of the supplied scalar. More...
 
 operator SCALARTYPE () const
 Reads the value of the scalar from the GPU and returns the float or double value. More...
 
self_typeoperator= (entry_proxy< SCALARTYPE > const &other)
 Assigns a vector entry. More...
 
self_typeoperator= (scalar< SCALARTYPE > const &other)
 Assigns the value from another scalar. More...
 
self_typeoperator= (float cpu_other)
 
self_typeoperator= (double cpu_other)
 
self_typeoperator= (long cpu_other)
 
self_typeoperator= (unsigned long cpu_other)
 
self_typeoperator= (int cpu_other)
 
self_typeoperator= (unsigned int cpu_other)
 
template<typename T1 , typename T2 >
self_typeoperator= (scalar_expression< T1, T2, op_inner_prod > const &proxy)
 Sets the scalar to the result of supplied inner product expression. More...
 
template<typename T1 , typename T2 >
self_typeoperator= (scalar_expression< T1, T2, op_norm_1 > const &proxy)
 Sets the scalar to the result of supplied norm_1 expression. More...
 
template<typename T1 , typename T2 >
self_typeoperator= (scalar_expression< T1, T2, op_norm_2 > const &proxy)
 Sets the scalar to the result of supplied norm_2 expression. More...
 
template<typename T1 , typename T2 >
self_typeoperator= (scalar_expression< T1, T2, op_norm_inf > const &proxy)
 Sets the scalar to the result of supplied norm_inf expression. More...
 
template<typename T1 , typename T2 >
self_typeoperator= (scalar_expression< T1, T2, op_norm_frobenius > const &proxy)
 Sets the scalar to the result of supplied norm_frobenius expression. More...
 
template<typename T1 , typename T2 >
self_typeoperator= (scalar_expression< T1, T2, op_flip_sign > const &proxy)
 Sets the scalar to the inverse with respect to addition of the supplied sub-expression. More...
 
self_typeoperator+= (scalar< SCALARTYPE > const &other)
 Inplace addition of a ViennaCL scalar. More...
 
self_typeoperator+= (SCALARTYPE other)
 Inplace addition of a host scalar (float or double) More...
 
self_typeoperator-= (scalar< SCALARTYPE > const &other)
 Inplace subtraction of a ViennaCL scalar. More...
 
self_typeoperator-= (SCALARTYPE other)
 Inplace subtraction of a host scalar (float or double) More...
 
self_typeoperator*= (scalar< SCALARTYPE > const &other)
 Inplace multiplication with a ViennaCL scalar. More...
 
self_typeoperator*= (SCALARTYPE other)
 Inplace multiplication with a host scalar (float or double) More...
 
self_typeoperator/= (scalar< SCALARTYPE > const &other)
 Inplace division with a ViennaCL scalar. More...
 
self_typeoperator/= (SCALARTYPE other)
 Inplace division with a host scalar (float or double) More...
 
self_type operator+ (scalar< SCALARTYPE > const &other)
 Addition of two ViennaCL scalars. More...
 
template<typename T1 , typename T2 , typename OP >
self_type operator+ (scalar_expression< T1, T2, OP > const &proxy) const
 Addition of a ViennaCL scalar with a scalar expression. More...
 
self_type operator+ (SCALARTYPE other)
 Addition of a ViennaCL scalar with a host scalar (float, double) More...
 
scalar_expression< const
self_type, const self_type,
op_flip_sign
operator- () const
 Sign flip of the scalar. Does not evaluate immediately, but instead returns an expression template object. More...
 
self_type operator- (scalar< SCALARTYPE > const &other) const
 Subtraction of two ViennaCL scalars. More...
 
template<typename T1 , typename T2 , typename OP >
self_type operator- (scalar_expression< T1, T2, OP > const &proxy) const
 Subtraction of a ViennaCL scalar from a scalar expression. More...
 
scalar< SCALARTYPE > operator- (SCALARTYPE other) const
 Subtraction of a host scalar (float, double) from a ViennaCL scalar. More...
 
self_type operator* (scalar< SCALARTYPE > const &other) const
 Multiplication of two ViennaCL scalars. More...
 
template<typename T1 , typename T2 , typename OP >
self_type operator* (scalar_expression< T1, T2, OP > const &proxy) const
 Multiplication of a ViennaCL scalar with a scalar expression. More...
 
self_type operator* (SCALARTYPE other) const
 Multiplication of a host scalar (float, double) with a ViennaCL scalar. More...
 
self_type operator/ (scalar< SCALARTYPE > const &other) const
 Division of two ViennaCL scalars. More...
 
template<typename T1 , typename T2 , typename OP >
self_type operator/ (scalar_expression< T1, T2, OP > const &proxy) const
 Division of a ViennaCL scalar by a scalar expression. More...
 
self_type operator/ (SCALARTYPE other) const
 Division of a ViennaCL scalar by a host scalar (float, double) More...
 
handle_typehandle ()
 Returns the memory handle, non-const version. More...
 
const handle_typehandle () const
 Returns the memory handle, const version. More...
 

Detailed Description

template<class SCALARTYPE>
class viennacl::scalar< SCALARTYPE >

This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double.

Since every read and write operation requires a CPU->GPU or GPU->CPU transfer, this type should be used with care. The advantage of this type is that the GPU command queue can be filled without blocking read operations.

Template Parameters
SCALARTYPEEither float or double. Checked at compile time.

Member Typedef Documentation

typedef SCALARTYPE value_type

Returns the underlying host scalar type.

Constructor & Destructor Documentation

scalar ( )
inline

Creates the scalar object, but does not yet allocate memory. Thus, scalar<> can also be a global variable (if really necessary).

scalar ( SCALARTYPE  val,
viennacl::context  ctx = viennacl::context() 
)
inline

Allocates the memory for the scalar and sets it to the supplied value.

scalar ( scalar_expression< T1, T2, OP > const &  proxy)
inline

Allocates memory for the scalar and sets it to the result of supplied expression.

scalar ( const scalar< SCALARTYPE > &  other)
inline

Copy constructor. Allocates new memory for the scalar and copies the value of the supplied scalar.

Member Function Documentation

handle_type& handle ( )
inline

Returns the memory handle, non-const version.

const handle_type& handle ( ) const
inline

Returns the memory handle, const version.

operator SCALARTYPE ( ) const
inline

Reads the value of the scalar from the GPU and returns the float or double value.

self_type operator* ( scalar< SCALARTYPE > const &  other) const
inline

Multiplication of two ViennaCL scalars.

self_type operator* ( scalar_expression< T1, T2, OP > const &  proxy) const
inline

Multiplication of a ViennaCL scalar with a scalar expression.

self_type operator* ( SCALARTYPE  other) const
inline

Multiplication of a host scalar (float, double) with a ViennaCL scalar.

self_type& operator*= ( scalar< SCALARTYPE > const &  other)
inline

Inplace multiplication with a ViennaCL scalar.

self_type& operator*= ( SCALARTYPE  other)
inline

Inplace multiplication with a host scalar (float or double)

self_type operator+ ( scalar< SCALARTYPE > const &  other)
inline

Addition of two ViennaCL scalars.

self_type operator+ ( scalar_expression< T1, T2, OP > const &  proxy) const
inline

Addition of a ViennaCL scalar with a scalar expression.

self_type operator+ ( SCALARTYPE  other)
inline

Addition of a ViennaCL scalar with a host scalar (float, double)

self_type& operator+= ( scalar< SCALARTYPE > const &  other)
inline

Inplace addition of a ViennaCL scalar.

self_type& operator+= ( SCALARTYPE  other)
inline

Inplace addition of a host scalar (float or double)

scalar_expression<const self_type, const self_type, op_flip_sign> operator- ( ) const
inline

Sign flip of the scalar. Does not evaluate immediately, but instead returns an expression template object.

self_type operator- ( scalar< SCALARTYPE > const &  other) const
inline

Subtraction of two ViennaCL scalars.

self_type operator- ( scalar_expression< T1, T2, OP > const &  proxy) const
inline

Subtraction of a ViennaCL scalar from a scalar expression.

scalar<SCALARTYPE> operator- ( SCALARTYPE  other) const
inline

Subtraction of a host scalar (float, double) from a ViennaCL scalar.

self_type& operator-= ( scalar< SCALARTYPE > const &  other)
inline

Inplace subtraction of a ViennaCL scalar.

self_type& operator-= ( SCALARTYPE  other)
inline

Inplace subtraction of a host scalar (float or double)

self_type operator/ ( scalar< SCALARTYPE > const &  other) const
inline

Division of two ViennaCL scalars.

self_type operator/ ( scalar_expression< T1, T2, OP > const &  proxy) const
inline

Division of a ViennaCL scalar by a scalar expression.

self_type operator/ ( SCALARTYPE  other) const
inline

Division of a ViennaCL scalar by a host scalar (float, double)

self_type& operator/= ( scalar< SCALARTYPE > const &  other)
inline

Inplace division with a ViennaCL scalar.

self_type& operator/= ( SCALARTYPE  other)
inline

Inplace division with a host scalar (float or double)

self_type& operator= ( entry_proxy< SCALARTYPE > const &  other)
inline

Assigns a vector entry.

self_type& operator= ( scalar< SCALARTYPE > const &  other)
inline

Assigns the value from another scalar.

self_type& operator= ( float  cpu_other)
inline
self_type& operator= ( double  cpu_other)
inline
self_type& operator= ( long  cpu_other)
inline
self_type& operator= ( unsigned long  cpu_other)
inline
self_type& operator= ( int  cpu_other)
inline
self_type& operator= ( unsigned int  cpu_other)
inline
self_type& operator= ( scalar_expression< T1, T2, op_inner_prod > const &  proxy)
inline

Sets the scalar to the result of supplied inner product expression.

self_type& operator= ( scalar_expression< T1, T2, op_norm_1 > const &  proxy)
inline

Sets the scalar to the result of supplied norm_1 expression.

self_type& operator= ( scalar_expression< T1, T2, op_norm_2 > const &  proxy)
inline

Sets the scalar to the result of supplied norm_2 expression.

self_type& operator= ( scalar_expression< T1, T2, op_norm_inf > const &  proxy)
inline

Sets the scalar to the result of supplied norm_inf expression.

self_type& operator= ( scalar_expression< T1, T2, op_norm_frobenius > const &  proxy)
inline

Sets the scalar to the result of supplied norm_frobenius expression.

self_type& operator= ( scalar_expression< T1, T2, op_flip_sign > const &  proxy)
inline

Sets the scalar to the inverse with respect to addition of the supplied sub-expression.


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