CUTLASS
CUDA Templates for Linear Algebra Subroutines and Solvers
Public Types | Public Member Functions | Static Public Attributes | List of all members
cutlass::HostTensor< Element_, Layout_ > Class Template Reference

Host tensor.

#include <host_tensor.h>

Public Types

using Element = Element_
 Data type of individual access. More...
 
using Layout = Layout_
 Mapping function from logical coordinate to linear memory. More...
 
using Index = typename Layout::Index
 Index type. More...
 
using LongIndex = typename Layout::LongIndex
 Long index used for pointer offsets. More...
 
using TensorCoord = typename Layout::TensorCoord
 Coordinate in logical tensor space. More...
 
using Stride = typename Layout::Stride
 Layout's stride vector. More...
 
using TensorRef = TensorRef< Element, Layout >
 Tensor reference to device memory. More...
 
using ConstTensorRef = typename TensorRef::ConstTensorRef
 Tensor reference to constant device memory. More...
 
using TensorView = TensorView< Element, Layout >
 Tensor reference to device memory. More...
 
using ConstTensorView = typename TensorView::ConstTensorView
 Tensor reference to constant device memory. More...
 
using Reference = typename TensorRef::Reference
 Reference to element in tensor. More...
 
using ConstReference = typename ConstTensorRef::Reference
 Constant reference to element in tensor. More...
 

Public Member Functions

 HostTensor ()
 Default constructor. More...
 
 HostTensor (TensorCoord const &extent, bool device_backed=true)
 Constructs a tensor given an extent. Assumes a packed layout. More...
 
 HostTensor (TensorCoord const &extent, Layout const &layout, bool device_backed=true)
 Constructs a tensor given an extent and layout. More...
 
 ~HostTensor ()
 
void reset ()
 Clears the HostTensor allocation to size/capacity = 0. More...
 
void reserve (size_t count, bool device_backed_=true)
 Resizes internal memory allocations without affecting layout or extent. More...
 
void reset (TensorCoord const &extent, Layout const &layout, bool device_backed_=true)
 
void reset (TensorCoord const &extent, bool device_backed_=true)
 
void resize (TensorCoord const &extent, Layout const &layout, bool device_backed_=true)
 
void resize (TensorCoord const &extent, bool device_backed_=true)
 
size_t size () const
 Returns the number of elements stored in the host tensor. More...
 
LongIndex capacity () const
 Returns the logical capacity based on extent and layout. May differ from size(). More...
 
Elementhost_data ()
 Gets pointer to host data. More...
 
Elementhost_data_ptr_offset (LongIndex ptr_element_offset)
 Gets pointer to host data with a pointer offset. More...
 
Reference host_data (LongIndex idx)
 Gets a reference to an element in host memory. More...
 
Element const * host_data () const
 Gets pointer to host data. More...
 
ConstReference host_data (LongIndex idx) const
 Gets a constant reference to an element in host memory. More...
 
Elementdevice_data ()
 Gets pointer to device data. More...
 
Elementdevice_data_ptr_offset (LongIndex ptr_element_offset)
 Gets pointer to device data with a pointer offset. More...
 
Element const * device_data () const
 Gets pointer to device data. More...
 
TensorRef host_ref (LongIndex ptr_element_offset=0)
 Accesses the tensor reference pointing to data. More...
 
ConstTensorRef host_ref (LongIndex ptr_element_offset=0) const
 Accesses the tensor reference pointing to data. More...
 
TensorRef device_ref (LongIndex ptr_element_offset=0)
 Accesses the tensor reference pointing to data. More...
 
ConstTensorRef device_ref (LongIndex ptr_element_offset=0) const
 Accesses the tensor reference pointing to data. More...
 
TensorView host_view (LongIndex ptr_element_offset=0)
 Accesses the tensor reference pointing to data. More...
 
ConstTensorView host_view (LongIndex ptr_element_offset=0) const
 Accesses the tensor reference pointing to data. More...
 
TensorView device_view (LongIndex ptr_element_offset=0)
 Accesses the tensor reference pointing to data. More...
 
ConstTensorView device_view (LongIndex ptr_element_offset=0) const
 Accesses the tensor reference pointing to data. More...
 
bool device_backed () const
 Returns true if device memory is allocated. More...
 
Layoutlayout ()
 Returns the layout object. More...
 
Layout layout () const
 Returns the layout object. More...
 
Stride stride () const
 Returns the layout object's stride vector. More...
 
Stridestride ()
 Returns the layout object's stride vector. More...
 
Index stride (int dim) const
 Returns the layout object's stride in a given physical dimension. More...
 
Indexstride (int dim)
 Returns the layout object's stride in a given physical dimension. More...
 
LongIndex offset (TensorCoord const &coord) const
 Computes the offset of an index from the origin of the tensor. More...
 
Reference at (TensorCoord const &coord)
 Returns a reference to the element at the logical Coord in host memory. More...
 
ConstReference at (TensorCoord const &coord) const
 Returns a const reference to the element at the logical Coord in host memory. More...
 
TensorCoord extent () const
 Returns the extent of the tensor. More...
 
TensorCoordextent ()
 Returns the extent of the tensor. More...
 
void sync_host ()
 Copies data from device to host. More...
 
void sync_device ()
 Copies data from host to device. More...
 
void copy_in_device_to_host (Element const *ptr_device, LongIndex count=-1)
 Copy data from a caller-supplied device pointer into host memory. More...
 
void copy_in_device_to_device (Element const *ptr_device, LongIndex count=-1)
 Copy data from a caller-supplied device pointer into host memory. More...
 
void copy_in_host_to_device (Element const *ptr_host, LongIndex count=-1)
 Copy data from a caller-supplied device pointer into host memory. More...
 
void copy_in_host_to_host (Element const *ptr_host, LongIndex count=-1)
 Copy data from a caller-supplied device pointer into host memory. More...
 
void copy_out_device_to_host (Element *ptr_host, LongIndex count=-1) const
 Copy data from a caller-supplied device pointer into host memory. More...
 
void copy_out_device_to_device (Element *ptr_device, LongIndex count=-1) const
 Copy data from a caller-supplied device pointer into host memory. More...
 
void copy_out_host_to_device (Element *ptr_device, LongIndex count=-1) const
 Copy data from a caller-supplied device pointer into host memory. More...
 
void copy_out_host_to_host (Element *ptr_host, LongIndex count=-1) const
 Copy data from a caller-supplied device pointer into host memory. More...
 

Static Public Attributes

static int const kRank = Layout::kRank
 Logical rank of tensor index space. More...
 
static int const kElementsPerStoredItem = (sizeof_bits<Element>::value < 8 ? sizeof(Element) * 8 / sizeof_bits<Element>::value : 1)
 Used to handle packing of subbyte elements. More...
 

Member Typedef Documentation

template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::ConstReference = typename ConstTensorRef::Reference
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::ConstTensorRef = typename TensorRef::ConstTensorRef
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::ConstTensorView = typename TensorView::ConstTensorView
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::Element = Element_
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::Index = typename Layout::Index
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::Layout = Layout_
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::LongIndex = typename Layout::LongIndex
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::Reference = typename TensorRef::Reference
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::Stride = typename Layout::Stride
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::TensorCoord = typename Layout::TensorCoord
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::TensorRef = TensorRef<Element, Layout>
template<typename Element_ , typename Layout_ >
using cutlass::HostTensor< Element_, Layout_ >::TensorView = TensorView<Element, Layout>

Constructor & Destructor Documentation

template<typename Element_ , typename Layout_ >
cutlass::HostTensor< Element_, Layout_ >::HostTensor ( )
inline
template<typename Element_ , typename Layout_ >
cutlass::HostTensor< Element_, Layout_ >::HostTensor ( TensorCoord const &  extent,
bool  device_backed = true 
)
inline
template<typename Element_ , typename Layout_ >
cutlass::HostTensor< Element_, Layout_ >::HostTensor ( TensorCoord const &  extent,
Layout const &  layout,
bool  device_backed = true 
)
inline
template<typename Element_ , typename Layout_ >
cutlass::HostTensor< Element_, Layout_ >::~HostTensor ( )
inline

Member Function Documentation

template<typename Element_ , typename Layout_ >
Reference cutlass::HostTensor< Element_, Layout_ >::at ( TensorCoord const &  coord)
inline
template<typename Element_ , typename Layout_ >
ConstReference cutlass::HostTensor< Element_, Layout_ >::at ( TensorCoord const &  coord) const
inline
template<typename Element_ , typename Layout_ >
LongIndex cutlass::HostTensor< Element_, Layout_ >::capacity ( ) const
inline
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::copy_in_device_to_device ( Element const *  ptr_device,
LongIndex  count = -1 
)
inline

< number of elements to transfer; if negative, entire tensor is overwritten.

Parameters
ptr_devicesource device memory
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::copy_in_device_to_host ( Element const *  ptr_device,
LongIndex  count = -1 
)
inline

< number of elements to transfer; if negative, entire tensor is overwritten.

Parameters
ptr_devicesource device memory
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::copy_in_host_to_device ( Element const *  ptr_host,
LongIndex  count = -1 
)
inline

< number of elements to transfer; if negative, entire tensor is overwritten.

Parameters
ptr_hostsource host memory
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::copy_in_host_to_host ( Element const *  ptr_host,
LongIndex  count = -1 
)
inline

< number of elements to transfer; if negative, entire tensor is overwritten.

Parameters
ptr_hostsource host memory
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::copy_out_device_to_device ( Element ptr_device,
LongIndex  count = -1 
) const
inline

< number of elements to transfer; if negative, entire tensor is overwritten.

Parameters
ptr_devicesource device memory
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::copy_out_device_to_host ( Element ptr_host,
LongIndex  count = -1 
) const
inline

< number of elements to transfer; if negative, entire tensor is overwritten.

Parameters
ptr_hostsource device memory
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::copy_out_host_to_device ( Element ptr_device,
LongIndex  count = -1 
) const
inline

< number of elements to transfer; if negative, entire tensor is overwritten.

Parameters
ptr_devicesource host memory
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::copy_out_host_to_host ( Element ptr_host,
LongIndex  count = -1 
) const
inline

< number of elements to transfer; if negative, entire tensor is overwritten.

Parameters
ptr_hostsource host memory
template<typename Element_ , typename Layout_ >
bool cutlass::HostTensor< Element_, Layout_ >::device_backed ( ) const
inline
template<typename Element_ , typename Layout_ >
Element* cutlass::HostTensor< Element_, Layout_ >::device_data ( )
inline
template<typename Element_ , typename Layout_ >
Element const* cutlass::HostTensor< Element_, Layout_ >::device_data ( ) const
inline
template<typename Element_ , typename Layout_ >
Element* cutlass::HostTensor< Element_, Layout_ >::device_data_ptr_offset ( LongIndex  ptr_element_offset)
inline
template<typename Element_ , typename Layout_ >
TensorRef cutlass::HostTensor< Element_, Layout_ >::device_ref ( LongIndex  ptr_element_offset = 0)
inline
template<typename Element_ , typename Layout_ >
ConstTensorRef cutlass::HostTensor< Element_, Layout_ >::device_ref ( LongIndex  ptr_element_offset = 0) const
inline
template<typename Element_ , typename Layout_ >
TensorView cutlass::HostTensor< Element_, Layout_ >::device_view ( LongIndex  ptr_element_offset = 0)
inline
template<typename Element_ , typename Layout_ >
ConstTensorView cutlass::HostTensor< Element_, Layout_ >::device_view ( LongIndex  ptr_element_offset = 0) const
inline
template<typename Element_ , typename Layout_ >
TensorCoord cutlass::HostTensor< Element_, Layout_ >::extent ( ) const
inline
template<typename Element_ , typename Layout_ >
TensorCoord& cutlass::HostTensor< Element_, Layout_ >::extent ( )
inline
template<typename Element_ , typename Layout_ >
Element* cutlass::HostTensor< Element_, Layout_ >::host_data ( )
inline
template<typename Element_ , typename Layout_ >
Reference cutlass::HostTensor< Element_, Layout_ >::host_data ( LongIndex  idx)
inline
template<typename Element_ , typename Layout_ >
Element const* cutlass::HostTensor< Element_, Layout_ >::host_data ( ) const
inline
template<typename Element_ , typename Layout_ >
ConstReference cutlass::HostTensor< Element_, Layout_ >::host_data ( LongIndex  idx) const
inline
template<typename Element_ , typename Layout_ >
Element* cutlass::HostTensor< Element_, Layout_ >::host_data_ptr_offset ( LongIndex  ptr_element_offset)
inline
template<typename Element_ , typename Layout_ >
TensorRef cutlass::HostTensor< Element_, Layout_ >::host_ref ( LongIndex  ptr_element_offset = 0)
inline
template<typename Element_ , typename Layout_ >
ConstTensorRef cutlass::HostTensor< Element_, Layout_ >::host_ref ( LongIndex  ptr_element_offset = 0) const
inline
template<typename Element_ , typename Layout_ >
TensorView cutlass::HostTensor< Element_, Layout_ >::host_view ( LongIndex  ptr_element_offset = 0)
inline
template<typename Element_ , typename Layout_ >
ConstTensorView cutlass::HostTensor< Element_, Layout_ >::host_view ( LongIndex  ptr_element_offset = 0) const
inline
template<typename Element_ , typename Layout_ >
Layout& cutlass::HostTensor< Element_, Layout_ >::layout ( )
inline
template<typename Element_ , typename Layout_ >
Layout cutlass::HostTensor< Element_, Layout_ >::layout ( ) const
inline
template<typename Element_ , typename Layout_ >
LongIndex cutlass::HostTensor< Element_, Layout_ >::offset ( TensorCoord const &  coord) const
inline
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::reserve ( size_t  count,
bool  device_backed_ = true 
)
inline

< if true, device memory is also allocated

Parameters
countsize of tensor in elements
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::reset ( )
inline
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::reset ( TensorCoord const &  extent,
Layout const &  layout,
bool  device_backed_ = true 
)
inline

Updates the extent and layout of the HostTensor. Allocates memory according to the new extent and layout.

< if true, device memory is also allocated.

Parameters
extentextent of logical tensor
layoutlayout object of tensor
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::reset ( TensorCoord const &  extent,
bool  device_backed_ = true 
)
inline

Updates the extent and layout of the HostTensor. Allocates memory according to the new extent and layout. Assumes a packed tensor configuration.

< if true, device memory is also allocated.

Parameters
extentextent of logical tensor
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::resize ( TensorCoord const &  extent,
Layout const &  layout,
bool  device_backed_ = true 
)
inline

Changes the size of the logical tensor. Only allocates memory if new capacity exceeds reserved capacity. To force allocation, call reset().

< if true, device memory is also allocated.

Parameters
extentextent of logical tensor
layoutlayout object of tensor
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::resize ( TensorCoord const &  extent,
bool  device_backed_ = true 
)
inline

Changes the size of the logical tensor. Only allocates memory if new capacity exceeds reserved capacity. To force allocation, call reset(). Note, this form of resize() assumes a packed tensor configuration.

< if true, device memory is also allocated.

Parameters
extentextent of logical tensor
template<typename Element_ , typename Layout_ >
size_t cutlass::HostTensor< Element_, Layout_ >::size ( ) const
inline
template<typename Element_ , typename Layout_ >
Stride cutlass::HostTensor< Element_, Layout_ >::stride ( ) const
inline
template<typename Element_ , typename Layout_ >
Stride& cutlass::HostTensor< Element_, Layout_ >::stride ( )
inline
template<typename Element_ , typename Layout_ >
Index cutlass::HostTensor< Element_, Layout_ >::stride ( int  dim) const
inline
template<typename Element_ , typename Layout_ >
Index& cutlass::HostTensor< Element_, Layout_ >::stride ( int  dim)
inline
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::sync_device ( )
inline
template<typename Element_ , typename Layout_ >
void cutlass::HostTensor< Element_, Layout_ >::sync_host ( )
inline

Member Data Documentation

template<typename Element_ , typename Layout_ >
int const cutlass::HostTensor< Element_, Layout_ >::kElementsPerStoredItem = (sizeof_bits<Element>::value < 8 ? sizeof(Element) * 8 / sizeof_bits<Element>::value : 1)
static
template<typename Element_ , typename Layout_ >
int const cutlass::HostTensor< Element_, Layout_ >::kRank = Layout::kRank
static

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