DeviceMem Struct Reference

DeviceMem Struct Reference#

Composable Kernel: ck_tile::DeviceMem Struct Reference
ck_tile::DeviceMem Struct Reference

Manages device memory allocation and host-device data transfers. More...

#include <device_memory.hpp>

Public Member Functions

 DeviceMem ()
 DeviceMem (std::size_t mem_size)
template<typename T>
 DeviceMem (const HostTensor< T > &t)
void Realloc (std::size_t mem_size)
void * GetDeviceBuffer () const
std::size_t GetBufferSize () const
void ToDevice (const void *p) const
void ToDevice (const void *p, const std::size_t cpySize) const
void FromDevice (void *p) const
void FromDevice (void *p, const std::size_t cpySize) const
template<typename T>
HostTensor< T > ToHost (std::size_t cpySize)
template<typename T>
HostTensor< T > ToHost ()
void SetZero () const
template<typename T>
void SetValue (T x) const
 ~DeviceMem ()

Public Attributes

void * mpDeviceBuf
 pointer to device buffer
std::size_t mMemSize
 size of device buffer in bytes

Detailed Description

Manages device memory allocation and host-device data transfers.

DeviceMem encapsulates GPU memory management operations using HIP runtime API. It provides functionality for allocating device memory, transferring data between host and device, and performing basic memory operations.

Key features:

  • Automatic memory allocation and deallocation
  • Host-to-device and device-to-host data transfers
  • Memory initialization operations
  • Integration with HostTensor for simplified data handling

Usage example:

// Allocate device memory
BHostTensor<float> AHostData({256});
DeviceMem d_mem(BHostData.get_element_space_size_in_bytes());
// Transfer data to device
HostTensor<float> AHostTensor({256});
d_mem.ToDevice(AHostData.data());
// Retrieve data from device
HostTensor<float> ResultHostTensor({256});
d_mem.FromDevice(ResultHostTensor.data());
Manages device memory allocation and host-device data transfers.
Definition tile/host/device_memory.hpp:52
Definition tile/host/host_tensor.hpp:336

Constructor & Destructor Documentation

◆ DeviceMem() [1/3]

ck_tile::DeviceMem::DeviceMem ( )
inline

◆ DeviceMem() [2/3]

ck_tile::DeviceMem::DeviceMem ( std::size_t mem_size)
inline

◆ DeviceMem() [3/3]

template<typename T>
ck_tile::DeviceMem::DeviceMem ( const HostTensor< T > & t)
inline

◆ ~DeviceMem()

ck_tile::DeviceMem::~DeviceMem ( )
inline

Member Function Documentation

◆ FromDevice() [1/2]

void ck_tile::DeviceMem::FromDevice ( void * p) const
inline

◆ FromDevice() [2/2]

void ck_tile::DeviceMem::FromDevice ( void * p,
const std::size_t cpySize ) const
inline

◆ GetBufferSize()

std::size_t ck_tile::DeviceMem::GetBufferSize ( ) const
inline

◆ GetDeviceBuffer()

void * ck_tile::DeviceMem::GetDeviceBuffer ( ) const
inline

◆ Realloc()

void ck_tile::DeviceMem::Realloc ( std::size_t mem_size)
inline

◆ SetValue()

template<typename T>
void ck_tile::DeviceMem::SetValue ( T x) const
inline

◆ SetZero()

void ck_tile::DeviceMem::SetZero ( ) const
inline

◆ ToDevice() [1/2]

void ck_tile::DeviceMem::ToDevice ( const void * p) const
inline

◆ ToDevice() [2/2]

void ck_tile::DeviceMem::ToDevice ( const void * p,
const std::size_t cpySize ) const
inline

◆ ToHost() [1/2]

template<typename T>
HostTensor< T > ck_tile::DeviceMem::ToHost ( )
inline

◆ ToHost() [2/2]

template<typename T>
HostTensor< T > ck_tile::DeviceMem::ToHost ( std::size_t cpySize)
inline

Member Data Documentation

◆ mMemSize

std::size_t ck_tile::DeviceMem::mMemSize

size of device buffer in bytes

◆ mpDeviceBuf

void* ck_tile::DeviceMem::mpDeviceBuf

pointer to device buffer


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