Template Numerical Library version\ main:1437bf49
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
TNL::Containers::VectorView< Real, Device, Index > Class Template Reference

VectorView extends ArrayView with algebraic operations. More...

#include <TNL/Containers/VectorView.h>

Inheritance diagram for TNL::Containers::VectorView< Real, Device, Index >:
Inheritance graph
[legend]
Collaboration diagram for TNL::Containers::VectorView< Real, Device, Index >:
Collaboration graph
[legend]

Public Types

using ConstViewType = VectorView< std::add_const_t< Real >, Device, Index >
 Compatible constant VectorView type.
 
using DeviceType = Device
 Device used to run operations on the vector.
 
using IndexType = Index
 Type being used for the vector elements indexing.
 
using RealType = Real
 Type of elements stored in this vector.
 
template<typename _Real , typename _Device = Device, typename _Index = Index>
using Self = VectorView< _Real, _Device, _Index >
 A template which allows to quickly obtain a VectorView type with changed template parameters.
 
using ViewType = VectorView< Real, Device, Index >
 Compatible VectorView type.
 
- Public Types inherited from TNL::Containers::ArrayView< Value, Device, Index >
using ConstViewType = ArrayView< std::add_const_t< Value >, Device, Index >
 Compatible constant ArrayView type.
 
using DeviceType = Device
 Device used to run operations on the array.
 
using IndexType = Index
 Type being used for the array elements indexing.
 
template<typename _Value , typename _Device = Device, typename _Index = Index>
using Self = ArrayView< _Value, _Device, _Index >
 A template which allows to quickly obtain an ArrayView type with changed template parameters.
 
using ValueType = Value
 Type of elements stored in this array.
 
using ViewType = ArrayView< Value, Device, Index >
 Compatible ArrayView type.
 

Public Member Functions

__cuda_callable__ VectorView ()=default
 Constructs an empty vector view.
 
template<typename Real_ >
__cuda_callable__ VectorView (const ArrayView< Real_, Device, Index > &view)
 Constructor for the initialization by a base class object.
 
__cuda_callable__ VectorView (const VectorView &view)=default
 Shallow copy constructor.
 
__cuda_callable__ VectorView (RealType *data, IndexType size)
 Constructs a vector view by binding to the given data pointer and size.
 
__cuda_callable__ VectorView (VectorView &&view) noexcept=default
 Move constructor for initialization from rvalues.
 
__cuda_callable__ ConstViewType getConstView (IndexType begin=0, IndexType end=0) const
 Returns a non-modifiable view of the vector view.
 
__cuda_callable__ ViewType getView (IndexType begin=0, IndexType end=0)
 Returns a modifiable view of the vector view.
 
template<typename VectorExpression >
VectorViewoperator%= (const VectorExpression &expression)
 Modulo assignment operator for vector view and a vector expression.
 
template<typename VectorExpression >
VectorView< Real, Device, Index > & operator%= (const VectorExpression &expression)
 
template<typename VectorExpression >
VectorViewoperator*= (const VectorExpression &expression)
 Multiplies elements of this vector view and a vector expression and stores the result in this vector view.
 
template<typename VectorExpression >
VectorView< Real, Device, Index > & operator*= (const VectorExpression &expression)
 
template<typename VectorExpression >
VectorViewoperator+= (const VectorExpression &expression)
 Adds elements of this vector view and a vector expression and stores the result in this vector view.
 
template<typename VectorExpression >
VectorView< Real, Device, Index > & operator+= (const VectorExpression &expression)
 
template<typename VectorExpression >
VectorViewoperator-= (const VectorExpression &expression)
 Subtracts elements of this vector view and a vector expression and stores the result in this vector view.
 
template<typename VectorExpression >
VectorView< Real, Device, Index > & operator-= (const VectorExpression &expression)
 
template<typename VectorExpression >
VectorViewoperator/= (const VectorExpression &expression)
 Divides elements of this vector view and a vector expression and stores the result in this vector view.
 
template<typename VectorExpression >
VectorView< Real, Device, Index > & operator/= (const VectorExpression &expression)
 
template<typename T , typename... , typename = std::enable_if_t< std::is_convertible_v< T, Real > || IsArrayType< T >::value >>
ArrayView< Real, Device, Index > & operator= (const T &data)
 Assigns a value or an array - same as ArrayView::operator=.
 
template<typename VectorExpression , typename... , typename = std::enable_if_t< Expressions::HasEnabledExpressionTemplates< VectorExpression >::value && ! IsArrayType< VectorExpression >::value >>
VectorViewoperator= (const VectorExpression &expression)
 Assigns a vector expression to this vector view.
 
template<typename VectorExpression , typename... , typename >
VectorView< Real, Device, Index > & operator= (const VectorExpression &expression)
 
VectorViewoperator= (const VectorView &view)=default
 Deep copy assignment operator - same as ArrayView::operator=.
 
- Public Member Functions inherited from TNL::Containers::ArrayView< Value, Device, Index >
__cuda_callable__ ArrayView ()=default
 Constructs an empty array view.
 
__cuda_callable__ ArrayView (ArrayView &&view) noexcept=default
 Move constructor for initialization from rvalues.
 
__cuda_callable__ ArrayView (const ArrayView &view)=default
 Shallow copy constructor.
 
template<typename Value_ >
__cuda_callable__ ArrayView (const ArrayView< Value_, Device, Index > &view)
 "Templated" shallow copy constructor.
 
__cuda_callable__ ArrayView (ValueType *data, IndexType size)
 Constructs an array view by binding to the given data pointer and size.
 
__cuda_callable__ void bind (ArrayView view)
 Method for rebinding (reinitialization) using another array view.
 
__cuda_callable__ void bind (ValueType *data, IndexType size)
 Method for rebinding (reinitialization) using a raw pointer and size.
 
__cuda_callable__ bool empty () const
 Returns true if the current array view size is zero.
 
template<typename Function >
void forAllElements (Function &&f)
 Process the lambda function f for each array element.
 
template<typename Function >
void forAllElements (Function &&f) const
 Process the lambda function f for each array element for constant instances.
 
template<typename Function >
void forElements (IndexType begin, IndexType end, Function &&f)
 Process the lambda function f for each array element in interval [ begin, end).
 
template<typename Function >
void forElements (IndexType begin, IndexType end, Function &&f) const
 Process the lambda function f for each array element in interval [ begin, end) for constant instances of the array.
 
__cuda_callable__ ValueTypegetArrayData ()
 Returns a raw pointer to the data.
 
__cuda_callable__ const ValueTypegetArrayData () const
 Returns a const-qualified raw pointer to the data.
 
__cuda_callable__ ConstViewType getConstView (IndexType begin=0, IndexType end=0) const
 Returns a non-modifiable view of the array view.
 
__cuda_callable__ ValueTypegetData ()
 Returns a raw pointer to the data.
 
__cuda_callable__ const ValueTypegetData () const
 Returns a const-qualified raw pointer to the data.
 
__cuda_callable__ ValueType getElement (IndexType i) const
 Returns the value of the i-th element.
 
__cuda_callable__ IndexType getSize () const
 Returns the current size of the array view.
 
__cuda_callable__ ViewType getView (IndexType begin=0, IndexType end=0)
 Returns a modifiable view of the array view.
 
void load (const std::string &fileName)
 Method for loading the data from a binary file fileName.
 
template<typename ArrayT >
bool operator!= (const ArrayT &array) const
 Compares the array view with another array-like container.
 
__cuda_callable__ Valueoperator() (IndexType i)
 Accesses the i-th element of the array.
 
__cuda_callable__ const Valueoperator() (IndexType i) const
 Accesses the i-th element of the array.
 
ArrayViewoperator= (const ArrayView &view)
 Deep copy assignment operator for copying data from another array view.
 
template<typename T , typename... , typename = std::enable_if_t< std::is_convertible_v< T, ValueType > || IsArrayType< T >::value >>
ArrayViewoperator= (const T &data)
 Assigns either array-like container or a single value.
 
template<typename T , typename... , typename >
ArrayView< Value, Device, Index > & operator= (const T &data)
 
template<typename ArrayT >
bool operator== (const ArrayT &array) const
 Compares the array view with another array-like container.
 
__cuda_callable__ Valueoperator[] (IndexType i)
 Accesses the i-th element of the array view.
 
__cuda_callable__ const Valueoperator[] (IndexType i) const
 Accesses the i-th element of the array view.
 
__cuda_callable__ void reset ()
 
void save (const std::string &fileName) const
 Method for saving the data to a binary file fileName.
 
__cuda_callable__ void setElement (IndexType i, ValueType value)
 Sets the value of the i-th element to v.
 
void setValue (ValueType value, IndexType begin=0, IndexType end=0)
 Sets elements of the array view to given value.
 
__cuda_callable__ void swap (ArrayView &view)
 Swaps this array view with another.
 

Additional Inherited Members

- Protected Attributes inherited from TNL::Containers::ArrayView< Value, Device, Index >
ValueTypedata = nullptr
 Pointer to the data.
 
IndexType size = 0
 Array view size.
 

Detailed Description

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
class TNL::Containers::VectorView< Real, Device, Index >

VectorView extends ArrayView with algebraic operations.

The template parameters have the same meaning as in ArrayView, with Real corresponding to ArrayView's Value parameter.

Template Parameters
RealAn arithmetic type for the vector values, e.g. float or double.
DeviceThe device to be used for the execution of vector operations.
IndexThe indexing type.

Member Typedef Documentation

◆ DeviceType

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
using TNL::Containers::VectorView< Real, Device, Index >::DeviceType = Device

Device used to run operations on the vector.

See TNL::Devices for the available options.

Constructor & Destructor Documentation

◆ VectorView() [1/4]

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
__cuda_callable__ TNL::Containers::VectorView< Real, Device, Index >::VectorView ( RealType * data,
IndexType size )
inline

Constructs a vector view by binding to the given data pointer and size.

This method can be called from device kernels.

Parameters
dataThe data pointer to be bound.
sizeThe number of elements in the vector view.

◆ VectorView() [2/4]

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
__cuda_callable__ TNL::Containers::VectorView< Real, Device, Index >::VectorView ( )
default

Constructs an empty vector view.

This method can be called from device kernels.

◆ VectorView() [3/4]

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
__cuda_callable__ TNL::Containers::VectorView< Real, Device, Index >::VectorView ( const VectorView< Real, Device, Index > & view)
default

Shallow copy constructor.

This method can be called from device kernels.

Parameters
viewThe vector view to be copied.

◆ VectorView() [4/4]

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
__cuda_callable__ TNL::Containers::VectorView< Real, Device, Index >::VectorView ( VectorView< Real, Device, Index > && view)
defaultnoexcept

Move constructor for initialization from rvalues.

This method can be called from device kernels.

Parameters
viewThe vector view to be moved.

Member Function Documentation

◆ getConstView()

template<typename Real , typename Device , typename Index >
__cuda_callable__ VectorView< Real, Device, Index >::ConstViewType TNL::Containers::VectorView< Real, Device, Index >::getConstView ( IndexType begin = 0,
IndexType end = 0 ) const

Returns a non-modifiable view of the vector view.

By default, a view for the whole vector is returned. If begin or end is set to a non-zero value, a view only for the sub-interval [begin, end) is returned.

Parameters
beginThe beginning of the vector view sub-interval. It is 0 by default.
endThe end of the vector view sub-interval. The default value is 0 which is, however, replaced with the array size.

◆ getView()

template<typename Real , typename Device , typename Index >
__cuda_callable__ VectorView< Real, Device, Index >::ViewType TNL::Containers::VectorView< Real, Device, Index >::getView ( IndexType begin = 0,
IndexType end = 0 )

Returns a modifiable view of the vector view.

By default, a view for the whole vector is returned. If begin or end is set to a non-zero value, a view only for the sub-interval [begin, end) is returned.

Parameters
beginThe beginning of the vector view sub-interval. It is 0 by default.
endThe end of the vector view sub-interval. The default value is 0 which is, however, replaced with the array size.

◆ operator%=()

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
VectorView & TNL::Containers::VectorView< Real, Device, Index >::operator%= ( const VectorExpression & expression)

Modulo assignment operator for vector view and a vector expression.

The division is evaluated element-wise. The vector expression must either evaluate to a scalar or a vector of the same size as this vector view.

Parameters
expressionReference to a vector expression.
Returns
Reference to this vector.

◆ operator*=()

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
VectorView & TNL::Containers::VectorView< Real, Device, Index >::operator*= ( const VectorExpression & expression)

Multiplies elements of this vector view and a vector expression and stores the result in this vector view.

The multiplication is evaluated element-wise. The vector expression must either evaluate to a scalar or a vector of the same size as this vector view.

Parameters
expressionReference to a vector expression.
Returns
Reference to this vector view.

◆ operator+=()

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
VectorView & TNL::Containers::VectorView< Real, Device, Index >::operator+= ( const VectorExpression & expression)

Adds elements of this vector view and a vector expression and stores the result in this vector view.

The addition is evaluated element-wise. The vector expression must either evaluate to a scalar or a vector of the same size as this vector view.

Parameters
expressionReference to a vector expression.
Returns
Reference to this vector view.

◆ operator-=()

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
VectorView & TNL::Containers::VectorView< Real, Device, Index >::operator-= ( const VectorExpression & expression)

Subtracts elements of this vector view and a vector expression and stores the result in this vector view.

The subtraction is evaluated element-wise. The vector expression must either evaluate to a scalar or a vector of the same size as this vector view.

Parameters
expressionReference to a vector expression.
Returns
Reference to this vector view.

◆ operator/=()

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
VectorView & TNL::Containers::VectorView< Real, Device, Index >::operator/= ( const VectorExpression & expression)

Divides elements of this vector view and a vector expression and stores the result in this vector view.

The division is evaluated element-wise. The vector expression must either evaluate to a scalar or a vector of the same size as this vector view.

Parameters
expressionReference to a vector expression.
Returns
Reference to this vector view.

◆ operator=() [1/3]

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
template<typename T , typename... , typename = std::enable_if_t< std::is_convertible_v< T, Real > || IsArrayType< T >::value >>
ArrayView< Real, Device, Index > & TNL::Containers::VectorView< Real, Device, Index >::operator= ( const T & data)
inline

Assigns a value or an array - same as ArrayView::operator=.

Template Parameters
TThe type of the source array or value.
Parameters
dataReference to the source array or value.
Returns
Reference to this vector view.

◆ operator=() [2/3]

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
template<typename VectorExpression , typename... , typename = std::enable_if_t< Expressions::HasEnabledExpressionTemplates< VectorExpression >::value && ! IsArrayType< VectorExpression >::value >>
VectorView & TNL::Containers::VectorView< Real, Device, Index >::operator= ( const VectorExpression & expression)

Assigns a vector expression to this vector view.

The assignment is evaluated element-wise. The vector expression must either evaluate to a scalar or a vector of the same size as this vector view.

Parameters
expressionThe vector expression to be evaluated and assigned to this vector view.
Returns
Reference to this vector view.

◆ operator=() [3/3]

template<typename Real = double, typename Device = Devices::Host, typename Index = int>
VectorView & TNL::Containers::VectorView< Real, Device, Index >::operator= ( const VectorView< Real, Device, Index > & view)
default

Deep copy assignment operator - same as ArrayView::operator=.

Parameters
viewReference to the source vector view.
Returns
Reference to this vector view.

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