triton_cpp v1.2.1
Header-only C++ wrapper for NVIDIA Triton Inference Server clients
Loading...
Searching...
No Matches
triton_cpp::CudaSharedMemoryRegion Class Reference

Own a CUDA device allocation exportable through a CUDA IPC handle. More...

#include <cuda_shm.hpp>

Public Member Functions

 CudaSharedMemoryRegion (const std::string &name, std::int64_t size)
 Allocate a CUDA shared-memory region on the current device.
 
 ~CudaSharedMemoryRegion ()
 Release the owned CUDA device allocation.
 
 CudaSharedMemoryRegion (const CudaSharedMemoryRegion &)=delete
 
CudaSharedMemoryRegionoperator= (const CudaSharedMemoryRegion &)=delete
 
 CudaSharedMemoryRegion (CudaSharedMemoryRegion &&)=delete
 
CudaSharedMemoryRegionoperator= (CudaSharedMemoryRegion &&)=delete
 
uint8_t * getDeviceAddress () const
 
const cudaIpcMemHandle_t & getIpcHandle () const
 
std::size_t getDeviceId () const
 
std::int64_t getSize () const
 
const std::string & getName () const
 

Detailed Description

Own a CUDA device allocation exportable through a CUDA IPC handle.

The allocation is created on the current CUDA device and released when the region is destroyed. Regions are deliberately neither copyable nor movable.

Definition at line 61 of file cuda_shm.hpp.

Constructor & Destructor Documentation

◆ CudaSharedMemoryRegion() [1/3]

triton_cpp::CudaSharedMemoryRegion::CudaSharedMemoryRegion ( const std::string & name,
std::int64_t size )
inline

Allocate a CUDA shared-memory region on the current device.

Parameters
nameName used when registering the region with Triton.
sizeAllocation size in bytes.
Exceptions
std::runtime_errorif allocation or IPC handle creation fails.

Definition at line 69 of file cuda_shm.hpp.

69 : name_{name}, size_{size} {
70 throw_on_cuda_error(cudaGetDevice(&device_id_), "cudaGetDevice");
71 throw_on_cuda_error(cudaMalloc(reinterpret_cast<void**>(&device_ptr_), static_cast<std::size_t>(size_)), "cudaMalloc");
72 throw_on_cuda_error(cudaIpcGetMemHandle(&ipc_handle_, device_ptr_), "cudaIpcGetMemHandle");
73 }
void throw_on_cuda_error(cudaError_t status, const char *operation)
Throw a descriptive exception when a CUDA Runtime API call fails.
Definition cuda_shm.hpp:24

References triton_cpp::throw_on_cuda_error().

◆ ~CudaSharedMemoryRegion()

triton_cpp::CudaSharedMemoryRegion::~CudaSharedMemoryRegion ( )
inline

Release the owned CUDA device allocation.

Definition at line 76 of file cuda_shm.hpp.

76 {
77 if (device_ptr_ != nullptr) {
78 cudaFree(device_ptr_);
79 }
80 }

◆ CudaSharedMemoryRegion() [2/3]

triton_cpp::CudaSharedMemoryRegion::CudaSharedMemoryRegion ( const CudaSharedMemoryRegion & )
delete

◆ CudaSharedMemoryRegion() [3/3]

triton_cpp::CudaSharedMemoryRegion::CudaSharedMemoryRegion ( CudaSharedMemoryRegion && )
delete

Member Function Documentation

◆ getDeviceAddress()

uint8_t * triton_cpp::CudaSharedMemoryRegion::getDeviceAddress ( ) const
inline
Returns
Device address of the allocation.

Definition at line 88 of file cuda_shm.hpp.

88{ return device_ptr_; }

◆ getDeviceId()

std::size_t triton_cpp::CudaSharedMemoryRegion::getDeviceId ( ) const
inline
Returns
CUDA device ordinal that owns the allocation.

Definition at line 92 of file cuda_shm.hpp.

92{ return static_cast<std::size_t>(device_id_); }

◆ getIpcHandle()

const cudaIpcMemHandle_t & triton_cpp::CudaSharedMemoryRegion::getIpcHandle ( ) const
inline
Returns
CUDA IPC handle for importing the allocation.

Definition at line 90 of file cuda_shm.hpp.

90{ return ipc_handle_; }

◆ getName()

const std::string & triton_cpp::CudaSharedMemoryRegion::getName ( ) const
inline
Returns
Name used to register this region with Triton.

Definition at line 96 of file cuda_shm.hpp.

96{ return name_; }

◆ getSize()

std::int64_t triton_cpp::CudaSharedMemoryRegion::getSize ( ) const
inline
Returns
Allocation size in bytes.

Definition at line 94 of file cuda_shm.hpp.

94{ return size_; }

◆ operator=() [1/2]

CudaSharedMemoryRegion & triton_cpp::CudaSharedMemoryRegion::operator= ( const CudaSharedMemoryRegion & )
delete

◆ operator=() [2/2]

CudaSharedMemoryRegion & triton_cpp::CudaSharedMemoryRegion::operator= ( CudaSharedMemoryRegion && )
delete

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