pub struct LoggingResource { /* private fields */ }Expand description
Telemetry decorator for DeviceMemoryResource.
Implementations§
Source§impl LoggingResource
impl LoggingResource
Sourcepub fn new(
inner: Box<dyn DeviceMemoryResource + Send + Sync>,
sink: Arc<dyn LoggingSink>,
) -> Self
pub fn new( inner: Box<dyn DeviceMemoryResource + Send + Sync>, sink: Arc<dyn LoggingSink>, ) -> Self
Wrap inner with sink. Records are emitted on every public
call; sink failures are counted in dropped_records.
Sourcepub fn dropped_records(&self) -> u64
pub fn dropped_records(&self) -> u64
Total records the sink has refused. A nonzero value means telemetry was lost; allocator semantics are unaffected.
Trait Implementations§
Source§impl DeviceMemoryResource for LoggingResource
impl DeviceMemoryResource for LoggingResource
Source§fn allocate(
&self,
bytes: usize,
stream: StreamId,
tag: AllocTag,
) -> ResourceResult<DeviceBlock>
fn allocate( &self, bytes: usize, stream: StreamId, tag: AllocTag, ) -> ResourceResult<DeviceBlock>
Allocate
bytes bytes on the resource’s device, ordered on
stream. The returned block is in BlockState::Live.Source§fn deallocate(&self, block: DeviceBlock) -> ResourceResult<()>
fn deallocate(&self, block: DeviceBlock) -> ResourceResult<()>
Return
block to the resource. After this call the block’s
state is BlockState::Retired (or BlockState::Quarantined
for debug-guard resources). Reuse of the underlying memory is
resource-specific but must respect the stream-ordered contract. Read moreSource§fn device_ordinal(&self) -> u32
fn device_ordinal(&self) -> u32
CUDA device ordinal this resource serves. Resources are pinned
to a single device.
Source§fn bytes_outstanding(&self) -> usize
fn bytes_outstanding(&self) -> usize
Bytes currently outstanding (live + retired-but-not-yet-freed).
Used by tests and by the global budget adaptor.
Source§fn reap_pending(&self) -> ResourceResult<()>
fn reap_pending(&self) -> ResourceResult<()>
Drain any retired-but-not-yet-freed bytes whose underlying
CUDA work has completed. For synchronous backends this is a
no-op. For stream-ordered async backends this synchronizes
the streams that have queued
cuMemFreeAsync calls and
re-counts bytes_outstanding accordingly. Read moreSource§fn record_block_use(
&self,
block: &DeviceBlock,
use_stream: StreamId,
) -> ResourceResult<()>
fn record_block_use( &self, block: &DeviceBlock, use_stream: StreamId, ) -> ResourceResult<()>
Record that work has been (or is being) submitted on
use_stream that touches block’s bytes. Resources that
participate in cross-stream lifetime tracking (notably the
stream-ordered async backend) MUST attach a CUDA event from
use_stream to the block; on deallocate(block), the
block’s alloc_stream will wait on every recorded event
before queueing the underlying free. Read moreSource§fn supports_block_use_tracking(&self) -> bool
fn supports_block_use_tracking(&self) -> bool
Whether this resource (and any inner resources it
composes) actually tracks cross-stream uses via
record_block_use. Used by the launch recorder’s
preflight to fail BEFORE queueing CUDA work, rather than
after. The default returns false to match the trait’s
default record_block_use behavior; resources that
override record_block_use to track events MUST override
this to return true. Decorators forward to inner.Source§fn prepare_block_use(
&self,
block: BlockId,
use_stream: StreamId,
access: Access,
) -> ResourceResult<()>
fn prepare_block_use( &self, block: BlockId, use_stream: StreamId, access: Access, ) -> ResourceResult<()>
Pre-launch / pre-copy hook: queue any cross-stream waits
required for
use_stream to safely access block with
access semantics. MUST be called BEFORE the GPU work is
enqueued on use_stream. Read moreSource§fn finish_block_use(
&self,
block: BlockId,
use_stream: StreamId,
access: Access,
) -> ResourceResult<()>
fn finish_block_use( &self, block: BlockId, use_stream: StreamId, access: Access, ) -> ResourceResult<()>
Post-launch / post-copy hook: record an event on
use_stream capturing the work just enqueued and update
block’s dependency state. Read moreAuto Trait Implementations§
impl !Freeze for LoggingResource
impl !RefUnwindSafe for LoggingResource
impl Send for LoggingResource
impl Sync for LoggingResource
impl Unpin for LoggingResource
impl UnsafeUnpin for LoggingResource
impl !UnwindSafe for LoggingResource
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more