
    9i#                         S SK Jr  S SKJr  S SKrSSKJrJr  / SQrSS jr	SS	\S\\
\4   4S
 jjrSS	\S\4S jjrSS	\S\4S jjrSS	\S\4S jjrSS	\S\4S jjrSS	\SS4S jjrSS	\SS4S jjrg)    )OrderedDict)AnyN   )	_device_t_get_device_index)empty_cachemax_memory_allocatedmax_memory_reservedmemory_allocatedmemory_reservedmemory_statsreset_accumulated_memory_statsreset_peak_memory_statsreturnc                      [         R                  R                  5       (       d  g[         R                  R                  5         g)a	  Release all unoccupied cached memory currently held by the caching
allocator so that those can be used in other application.

.. note:: This function is a no-op if the memory allocator for the current
    :ref:`accelerator <accelerators>` has not been initialized.
N)torch_C#_accelerator_isAllocatorInitialized_accelerator_emptyCache     X/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/accelerator/memory.pyr   r      s*     887799	HH$$&r   device_indexc                ,  ^^ [         R                  R                  5       (       d
  [        5       $ [	        U SS9n [         R                  R                  U 5      n/ mS[        S[        SS4UU4S jjmT" SU5        TR                  5         [        T5      $ )	a
  Return a dictionary of accelerator device memory allocator statistics for a given device index.

The return value of this function is a dictionary of statistics, each of
which is a non-negative integer.

Core statistics:

- ``"allocated.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``:
  number of allocation requests received by the memory allocator.
- ``"allocated_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``:
  amount of allocated memory.
- ``"segment.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``:
  number of reserved segments from device memory allocation.
- ``"reserved_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``:
  amount of reserved memory.
- ``"active.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``:
  number of active memory blocks.
- ``"active_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``:
  amount of active memory.
- ``"inactive_split.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``:
  number of inactive, non-releasable memory blocks.
- ``"inactive_split_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``:
  amount of inactive, non-releasable memory.

For these core statistics, values are broken down as follows.

Pool type:

- ``all``: combined statistics across all memory pools.
- ``large_pool``: statistics for the large allocation pool
  (as of June 2025, for size >= 1MB allocations).
- ``small_pool``: statistics for the small allocation pool
  (as of June 2025, for size < 1MB allocations).

Metric type:

- ``current``: current value of this metric.
- ``peak``: maximum value of this metric.
- ``allocated``: historical total increase in this metric.
- ``freed``: historical total decrease in this metric.

In addition to the core statistics, we also provide some simple event
counters:

- ``"num_alloc_retries"``: number of failed device memory allocation calls that
  result in a cache flush and retry.
- ``"num_ooms"``: number of out-of-memory errors thrown.
- ``"num_sync_all_streams"``: number of ``synchronize_and_free_events`` calls.
- ``"num_device_alloc"``: number of device memory allocation calls.
- ``"num_device_free"``: number of device memory free calls.

Args:
    device_index (:class:`torch.device`, str, int, optional): the index of the device to target.
        If not given, use :func:`torch.accelerator.current_device_index` by default.
        If a :class:`torch.device` or str is provided, its type must match the current
        :ref:`accelerator<accelerators>` device type.
Toptionalprefixvaluer   Nc                    > [        U[        5      (       a2  UR                  5        H  u  p#U (       a  U  SU 3OUnT" XC5        M     g TR                  X45        g )N.)
isinstancedictitemsappend)r   r   kvnested_prefix
flat_statsflattens        r   r)   memory_stats.<locals>.flattena   sO    eT""396(!A3q) & vo.r    )	r   r   r   r   r   _accelerator_getDeviceStatsstrr   sort)r   statsr(   r)   s     @@r   r   r   !   s    t 887799}$\DALHH00>EJ/ /C /D / / BOOz""r   c                8    [        U 5      R                  SS5      $ )a  Return the current :ref:`accelerator<accelerators>` device memory occupied by tensors
in bytes for a given device index.

Args:
    device_index (:class:`torch.device`, str, int, optional): the index of the device to target.
        If not given, use :func:`torch.accelerator.current_device_index` by default.
        If a :class:`torch.device` or str is provided, its type must match the current
        :ref:`accelerator<accelerators>` device type.
zallocated_bytes.all.currentr   r   getr   s    r   r   r   n   s     %))*GKKr   c                8    [        U 5      R                  SS5      $ )a  Return the current :ref:`accelerator<accelerators>` maximum device memory occupied by tensors
in bytes for a given device index.

By default, this returns the peak allocated memory since the beginning of
this program. :func:`~torch.accelerator.reset_peak_memory_stats` can be used to
reset the starting point in tracking this metric.

Args:
    device_index (:class:`torch.device`, str, int, optional): the index of the device to target.
        If not given, use :func:`torch.accelerator.current_device_index` by default.
        If a :class:`torch.device` or str is provided, its type must match the current
        :ref:`accelerator<accelerators>` device type.
zallocated_bytes.all.peakr   r1   r3   s    r   r	   r	   {   s     %))*DaHHr   c                8    [        U 5      R                  SS5      $ )a  Return the current :ref:`accelerator<accelerators>` device memory managed by the caching allocator
in bytes for a given device index.

Args:
    device_index (:class:`torch.device`, str, int, optional): the index of the device to target.
        If not given, use :func:`torch.accelerator.current_device_index` by default.
        If a :class:`torch.device` or str is provided, its type must match the current
        :ref:`accelerator<accelerators>` device type.
zreserved_bytes.all.currentr   r1   r3   s    r   r   r      s     %))*FJJr   c                8    [        U 5      R                  SS5      $ )a  Return the current :ref:`accelerator<accelerators>` maximum device memory managed by the caching allocator
in bytes for a given device index.

By default, this returns the peak cached memory since the beginning of this
program. :func:`~torch.accelerator.reset_peak_memory_stats` can be used to reset
the starting point in tracking this metric.

Args:
    device_index (:class:`torch.device`, str, int, optional): the index of the device to target.
        If not given, use :func:`torch.accelerator.current_device_index` by default.
        If a :class:`torch.device` or str is provided, its type must match the current
        :ref:`accelerator<accelerators>` device type.
zreserved_bytes.all.peakr   r1   r3   s    r   r
   r
      s     %))*CQGGr   c                T    [        U SS9n [        R                  R                  U 5      $ )ad  Reset the "accumulated" (historical) stats tracked by the current :ref:`accelerator<accelerators>`
memory allocator for a given device index.

Args:
    device_index (:class:`torch.device`, str, int, optional): the index of the device to target.
        If not given, use :func:`torch.accelerator.current_device_index` by default.
        If a :class:`torch.device` or str is provided, its type must match the current
        :ref:`accelerator<accelerators>` device type.

.. note:: This function is a no-op if the memory allocator for the current
    :ref:`accelerator <accelerators>` has not been initialized.
Tr   )r   r   r   "_accelerator_resetAccumulatedStatsr3   s    r   r   r      s%     %\DAL8866|DDr   c                T    [        U SS9n [        R                  R                  U 5      $ )aP  Reset the "peak" stats tracked by the current :ref:`accelerator<accelerators>`
memory allocator for a given device index.

Args:
    device_index (:class:`torch.device`, str, int, optional): the index of the device to target.
        If not given, use :func:`torch.accelerator.current_device_index` by default.
        If a :class:`torch.device` or str is provided, its type must match the current
        :ref:`accelerator<accelerators>` device type.

.. note:: This function is a no-op if the memory allocator for the current
    :ref:`accelerator <accelerators>` has not been initialized.
Tr   )r   r   r   _accelerator_resetPeakStatsr3   s    r   r   r      s%     %\DAL88//==r   )r   N)N)collectionsr   typingr   r   _utilsr   r   __all__r   r-   r   intr   r	   r   r
   r   r   r   r   r   <module>r@      s    #   0		'J#y J#{387L J#Z
L9 
L3 
LIy Is I"
K) 
K# 
KHi Hc H"E E E">) >$ >r   