評價此頁

torch.cuda.memory.memory_stats#

torch.cuda.memory.memory_stats(device=None)[source]#

返回給定裝置的 CUDA 記憶體分配器統計資訊的字典。

此函式的返回值是一個統計字典,其中每個統計項都是一個非負整數。

核心統計資訊

  • "allocated.{all,large_pool,small_pool}.{current,peak,allocated,freed}":記憶體分配器接收到的分配請求數量。

  • "allocated_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}": 已分配記憶體的大小。

  • "segment.{all,large_pool,small_pool}.{current,peak,allocated,freed}":從 cudaMalloc() 預留的段的數量。

  • "reserved_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}": 已預留記憶體的大小。

  • "active.{all,large_pool,small_pool}.{current,peak,allocated,freed}":活動記憶體塊的數量。

  • "active_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}": 活動記憶體的大小。

  • "inactive_split.{all,large_pool,small_pool}.{current,peak,allocated,freed}":不活動、不可釋放的記憶體塊的數量。

  • "inactive_split_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}":不活動、不可釋放的記憶體量。

對於這些核心統計資訊,值按以下方式細分。

記憶體池型別

  • all: 所有記憶體池的組合統計資訊。

  • large_pool:大分配池的統計資訊(截至 2025 年 6 月,用於大小 >= 1MB 的分配)。

  • small_pool:小分配池的統計資訊(截至 2025 年 6 月,用於大小 < 1MB 的分配)。

指標型別

  • current:此指標的當前值。

  • peak:此指標的最大值。

  • allocated:此指標的歷史總增長量。

  • freed:此指標的歷史總減少量。

除了核心統計資料外,我們還提供了一些簡單的事件計數器

  • "num_alloc_retries":導致快取重新整理和重試的 cudaMalloc 呼叫失敗的次數。

  • "num_ooms":丟擲的記憶體不足錯誤數量。

  • "num_sync_all_streams"synchronize_and_free_events 呼叫次數。

  • "num_device_alloc":CUDA 分配呼叫次數。這包括 cuMemMap 和 cudaMalloc。

  • "num_device_free":CUDA 釋放呼叫次數。這包括 cuMemUnmap 和 cudaFree。

快取分配器可以透過環境變數進行配置,使其不分割大於定義大小的塊(請參閱 CUDA 語義文件的記憶體管理部分)。這有助於避免記憶體碎片,但可能會帶來效能損失。其他輸出有助於調整和評估影響。

  • "max_split_size":大於此大小的塊不會被分割。

  • "oversize_allocations.{current,peak,allocated,freed}":記憶體分配器接收到的超大分配請求數量。

  • "oversize_segments.{current,peak,allocated,freed}":從 cudaMalloc() 預留的超大段數量。

快取分配器可以透過環境變數進行配置,以四捨五入記憶體分配以減少碎片。有時四捨五入的開銷可能高於其幫助減少的碎片。以下統計資訊可用於檢查四捨五入是否增加了過多開銷。

  • "requested_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}":客戶端程式碼請求的記憶體,與 allocated_bytes 進行比較,以檢查分配四捨五入是否增加了過多開銷。

引數

device (torch.deviceint, 可選) – 選定的裝置。如果 deviceNone(預設),則返回當前裝置(由 current_device() 指定)的統計資訊。

返回型別

dict[str, Any]

注意

有關 GPU 記憶體管理的更多詳細資訊,請參閱 記憶體管理

注意

在使用 backend:cudaMallocAsync 時,某些統計資訊無意義,始終報告為零。