SLATE 2024.05.31
Software for Linear Algebra Targeting Exascale
Loading...
Searching...
No Matches
slate::internal::DevVector< scalar_t > Class Template Reference

A simple vector class for GPU memory, loosely based on std::vector. More...

#include <DevVector.hh>

Public Member Functions

 DevVector ()
 Constructs empty vector.
 
 DevVector (size_t in_size, int device, blas::Queue &queue)
 Constructs vector, allocating in_size elements on device.
 
 ~DevVector ()
 Destroys vector, freeing memory.
 
void clear (blas::Queue &queue)
 
void resize (size_t in_size, int device, blas::Queue &queue)
 Frees existing memory and allocates new memory for in_size elements on device.
 
scalar_t & operator[] (size_t i)
 
scalar_t * data ()
 
size_t size () const
 
bool empty () const
 

Detailed Description

template<typename scalar_t>
class slate::internal::DevVector< scalar_t >

A simple vector class for GPU memory, loosely based on std::vector.

Constructor & Destructor Documentation

◆ DevVector() [1/2]

template<typename scalar_t >
slate::internal::DevVector< scalar_t >::DevVector ( )
inline

Constructs empty vector.

No memory is allocated, the data pointer is null.

◆ DevVector() [2/2]

template<typename scalar_t >
slate::internal::DevVector< scalar_t >::DevVector ( size_t  in_size,
int  device,
blas::Queue &  queue 
)
inline

Constructs vector, allocating in_size elements on device.

Unlike std::vector, elements are uninitialized. todo: should this take queue instead of device, for SYCL?

Member Function Documentation

◆ data()

template<typename scalar_t >
scalar_t * slate::internal::DevVector< scalar_t >::data ( )
inline
Returns
underlying array.

◆ empty()

template<typename scalar_t >
bool slate::internal::DevVector< scalar_t >::empty ( ) const
inline
Returns
whether the vector is empty (size == 0).

◆ operator[]()

template<typename scalar_t >
scalar_t & slate::internal::DevVector< scalar_t >::operator[] ( size_t  i)
inline
Returns
reference to element i. Since the element is on the GPU, it can't be dereferenced; this is really only useful for taking addresses: &x[ i ].

◆ resize()

template<typename scalar_t >
void slate::internal::DevVector< scalar_t >::resize ( size_t  in_size,
int  device,
blas::Queue &  queue 
)
inline

Frees existing memory and allocates new memory for in_size elements on device.

Unlike std::vector, this does not copy old elements to new array.

◆ size()

template<typename scalar_t >
size_t slate::internal::DevVector< scalar_t >::size ( ) const
inline
Returns
number of elements in the vector.

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