Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Classes | Public Member Functions | Friends | List of all members
uni20::cuda::DeviceResources Class Reference

Mutable stream and provider resources associated with one CUDA device. More...

#include <runtime.hpp>

Classes

struct  Config
 Configuration for one device's mutable CUDA resources. More...
 

Public Member Functions

Device device () const noexcept
 Return the device served by this resource set.
 
 DeviceResources (Config config)
 Create isolated resources for one CUDA device.
 
 DeviceResources (DeviceResources &&)=delete
 
 DeviceResources (DeviceResources const &)=delete
 
std::size_t live_allocation_count () const noexcept
 Return the number of live CUDA allocations borrowing these resources.
 
DeviceResources & operator= (DeviceResources &&)=delete
 
DeviceResources & operator= (DeviceResources const &)=delete
 
template<class Resource , class... Args>
Resource & provider_resource (Args &&... args)
 Return the resource-owned instance of one provider resource type.
 
StreamPool const & streams () const noexcept
 
StreamPool & streams () noexcept
 Return the device's actually-idle stream pool.
 
 ~DeviceResources () noexcept
 

Friends

template<typename T >
class CudaBuffer
 

Detailed Description

Mutable stream and provider resources associated with one CUDA device.

Ordinary application code obtains the canonical instance from the installed CUDA runtime. Direct construction remains useful for focused tests and low-level bring-up. The resources object must outlive every buffer, stream lease, and provider lease created from it. A dedicated reclamation stream orders allocation release after buffer completion events without consuming an operation-stream slot.

Constructor & Destructor Documentation

◆ DeviceResources() [1/3]

uni20::cuda::DeviceResources::DeviceResources ( Config  config)
explicit

Create isolated resources for one CUDA device.

◆ DeviceResources() [2/3]

uni20::cuda::DeviceResources::DeviceResources ( DeviceResources const &  )
delete

◆ DeviceResources() [3/3]

uni20::cuda::DeviceResources::DeviceResources ( DeviceResources &&  )
delete

◆ ~DeviceResources()

uni20::cuda::DeviceResources::~DeviceResources ( )
noexcept

Member Function Documentation

◆ device()

Device uni20::cuda::DeviceResources::device ( ) const
inlinenoexcept

Return the device served by this resource set.

◆ live_allocation_count()

std::size_t uni20::cuda::DeviceResources::live_allocation_count ( ) const
inlinenoexcept

Return the number of live CUDA allocations borrowing these resources.

◆ operator=() [1/2]

DeviceResources & uni20::cuda::DeviceResources::operator= ( DeviceResources &&  )
delete

◆ operator=() [2/2]

DeviceResources & uni20::cuda::DeviceResources::operator= ( DeviceResources const &  )
delete

◆ provider_resource()

template<class Resource , class... Args>
Resource & uni20::cuda::DeviceResources::provider_resource ( Args &&...  args)
inline

Return the resource-owned instance of one provider resource type.

The resource is constructed on first use and retained until shutdown. A device owns at most one instance of each concrete resource type. Provider resources are destroyed before the stream pool that they may reference.

◆ streams() [1/2]

StreamPool const & uni20::cuda::DeviceResources::streams ( ) const
inlinenoexcept

◆ streams() [2/2]

StreamPool & uni20::cuda::DeviceResources::streams ( )
inlinenoexcept

Return the device's actually-idle stream pool.

Friends And Related Symbol Documentation

◆ CudaBuffer

template<typename T >
friend class CudaBuffer
friend

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