快捷方式

torch.cuda.memory_stats

torch.cuda.memory_stats(device=None)[source][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: 大分配池的統計資訊(截至 2019 年 10 月,用於大小 >= 1MB 的分配)。

  • small_pool: 小分配池的統計資訊(截至 2019 年 10 月,用於大小 < 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,某些統計資訊無意義,始終報告為零。

文件

訪問 PyTorch 的完整開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源