|
| using | AllocatorType = Allocator |
| | Allocator type used for allocating this vector.
|
|
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, typename _Allocator = typename Allocators::Default< _Device >::template Allocator< _Real >> |
| using | Self = Vector< _Real, _Device, _Index, _Allocator > |
| | A template which allows to quickly obtain a Vector type with changed template parameters.
|
|
using | ViewType = VectorView< Real, Device, Index > |
| | Compatible VectorView type.
|
| using | AllocatorType |
| | Allocator type used for allocating this array.
|
|
using | ConstViewType |
| | Compatible constant ArrayView type.
|
| using | DeviceType |
| | Device used to run operations on the array.
|
|
using | IndexType |
| | Type being used for the array elements indexing.
|
|
using | Self |
| | A template which allows to quickly obtain an Array type with changed template parameters.
|
|
using | ValueType |
| | Type of elements stored in this array.
|
|
using | ViewType |
| | Compatible ArrayView type.
|
|
|
| Vector ()=default |
| | Constructs an empty array with zero size.
|
|
| Vector (const Vector &)=default |
| | Copy constructor (makes a deep copy).
|
|
| Vector (const Vector &vector, const AllocatorType &allocator) |
| | Copy constructor with a specific allocator (makes a deep copy).
|
| template<typename VectorExpression, typename..., typename = std::enable_if_t< Expressions::HasEnabledExpressionTemplates< VectorExpression >::value && ! IsArrayType< VectorExpression >::value >> |
| | Vector (const VectorExpression &expression) |
| | Constructor from expression template.
|
|
| Vector (Vector &&) noexcept=default |
| | Default move constructor.
|
| ConstViewType | getConstView (IndexType begin=0, IndexType end=0) const |
| | Returns a non-modifiable view of the vector.
|
| ViewType | getView (IndexType begin=0, IndexType end=0) |
| | Returns a modifiable view of the vector.
|
|
| operator ConstViewType () const |
| | Conversion operator to a non-modifiable view of the vector.
|
|
| operator ViewType () |
| | Conversion operator to a modifiable view of the vector.
|
| template<typename VectorExpression> |
| Vector & | operator%= (const VectorExpression &expression) |
| | Modulo assignment operator for vector and a vector expression.
|
| template<typename VectorExpression> |
| Vector & | operator*= (const VectorExpression &expression) |
| | Multiplies elements of this vector and a vector expression and stores the result in this vector.
|
| template<typename VectorExpression> |
| Vector & | operator+= (const VectorExpression &expression) |
| | Adds elements of this vector and a vector expression and stores the result in this vector.
|
| template<typename VectorExpression> |
| Vector & | operator-= (const VectorExpression &expression) |
| | Subtracts elements of this vector and a vector expression and stores the result in this vector.
|
| template<typename VectorExpression> |
| Vector & | operator/= (const VectorExpression &expression) |
| | Divides elements of this vector and a vector expression and stores the result in this vector.
|
| template<typename T, typename..., typename = std::enable_if_t< std::is_convertible_v< T, Real > || IsArrayType< T >::value >> |
| Array< Real, Device, Index, Allocator > & | operator= (const T &data) |
| | Assigns a value or an array - same as Array::operator=.
|
|
Vector & | operator= (const Vector &)=default |
| | Copy-assignment operator for copying data from another vector.
|
| template<typename VectorExpression, typename..., typename = std::enable_if_t< Expressions::HasEnabledExpressionTemplates< VectorExpression >::value && ! IsArrayType< VectorExpression >::value >> |
| Vector & | operator= (const VectorExpression &expression) |
| | Assigns a vector expression to this vector.
|
|
Vector & | operator= (Vector &&) noexcept(false)=default |
| | Move-assignment operator for acquiring data from rvalues.
|
|
| Array ()=default |
| | Constructs an empty array with zero size.
|
|
virtual | ~Array () |
| | Destructor.
|
| __cuda_callable__ bool | empty () const |
| | Returns true if the current array size is zero.
|
| void | forAllElements (Function &&f) |
| | Process the lambda function f for each array element.
|
| void | forElements (IndexType begin, IndexType end, Function &&f) |
| | Process the lambda function f for each array element in interval [ begin, end).
|
|
AllocatorType | getAllocator () const |
| | Returns the allocator associated with the array.
|
| __cuda_callable__ const double * | getArrayData () const |
| | Returns a const-qualified raw pointer to the data.
|
| ConstViewType | getConstView (IndexType begin=0, IndexType end=0) const |
| | Returns a non-modifiable view of the array.
|
| __cuda_callable__ const double * | getData () 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 array size.
|
| ViewType | getView (IndexType begin=0, IndexType end=0) |
| | Returns a modifiable view of the array.
|
| void | load (const String &fileName) |
| | Method for loading the array from a binary file fileName.
|
|
| operator ConstViewType () const |
| | Conversion operator to a non-modifiable view of the array.
|
|
| operator ViewType () |
| | Conversion operator to a modifiable view of the array.
|
| bool | operator!= (const ArrayT &array) const |
| | Compares the array with another array-like container.
|
| __cuda_callable__ double & | operator() (IndexType i) |
| | Accesses the i-th element of the array.
|
| Array & | operator= (const Array &array) |
| | Copy-assignment operator for copying data from another array.
|
| bool | operator== (const ArrayT &array) const |
| | Compares the array with another array-like container.
|
| __cuda_callable__ double & | operator[] (IndexType i) |
| | Accesses the i-th element of the array.
|
| void | reset () |
| | Resets the array to the empty state.
|
| void | resize (IndexType size) |
| | Method for resizing the array.
|
| void | save (const String &fileName) const |
| | Method for saving the array to a binary file fileName.
|
| __cuda_callable__ void | setElement (IndexType i, ValueType value) |
| | Sets the value of the i-th element to v.
|
| void | setLike (const ArrayT &array) |
| | Sets the same size as the size of an existing array.
|
| void | setSize (IndexType size) |
| | Method for setting the array size.
|
| void | setValue (ValueType value, IndexType begin=0, IndexType end=0) |
| | Sets elements of the array to given value.
|
| void | swap (Array &array) noexcept |
| | Swaps this array with another.
|
template<typename
Real = double, typename Device = Devices::Host, typename Index = int, typename Allocator = typename Allocators::Default< Device >::template Allocator< Real >>
class TNL::Containers::Vector< Real, Device, Index, Allocator >
Vector extends Array with algebraic operations.
The template parameters have the same meaning as in Array, with Real corresponding to Array's Value parameter.
- Template Parameters
-
| Real | An arithmetic type for the vector values, e.g. float or double. |
| Device | The device to be used for the execution of vector operations. |
| Index | The indexing type. |
| Allocator | The type of the allocator used for the allocation and deallocation of memory used by the array. By default, an appropriate allocator for the specified Device is selected with Allocators::Default. |
- Example
#include <iostream>
#include <TNL/Containers/Vector.h>
#include <TNL/Containers/Array.h>
#include <TNL/Devices/Host.h>
#include <TNL/Devices/Cuda.h>
template< typename Device >
void
VectorExample()
{
vector1 = 0;
vector2 = 1;
vector2.swap( vector1 );
vector2.setElement( 2, 4 );
cout <<
"First vector:" << vector1.getData() <<
endl;
cout <<
"Second vector:" << vector2.getData() <<
endl;
vector2.reset();
cout <<
"Second vector after reset:" << vector2.getData() <<
endl;
cout <<
"The smallest element is:" <<
min( vect ) <<
endl;
cout <<
"The absolute biggest element is:" <<
max(
abs( vect ) ) <<
endl;
cout <<
"Sum of all vector elements:" << sum( vect ) <<
endl;
vect *= 2.0;
cout <<
"Vector multiplied by 2:" << vect <<
endl;
}
int
main()
{
VectorExample< Devices::Host >();
#ifdef __CUDACC__
VectorExample< Devices::Cuda >();
#endif
}
Vector extends Array with algebraic operations.
Definition Vector.h:36
The main TNL namespace.
Definition AtomicOperations.h:9
__cuda_callable__ T abs(const T &n)
This function returns absolute value of given number n.
Definition Math.h:75
constexpr ResultType min(const T1 &a, const T2 &b)
This function returns minimum of two numbers.
Definition Math.h:24
constexpr ResultType max(const T1 &a, const T2 &b)
This function returns maximum of two numbers.
Definition Math.h:49
- Output
Running vector example on the host system:
First vector:0x55a12640d1f0
Second vector:0x55a12640d1d0
Second vector after reset:0
The smallest element is:-3
The absolute biggest element is:3
Sum of all vector elements:3
Vector multiplied by 2:[ 2, 4, -6, 6 ]
Running vector example on the CUDA device:
First vector:0x7f146e200200
Second vector:0x7f146e200000
Second vector after reset:0
The smallest element is:-3
The absolute biggest element is:3
Sum of all vector elements:3
Vector multiplied by 2:[ 2, 4, -6, 6 ]