捷徑

torch.cuda.memory_stats

torch.cuda.memory_stats(device=None)[原始碼][原始碼]

傳回給定裝置的 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}":非活動、不可釋放記憶體的數量。

對於這些核心統計資料,值會按如下方式分解。

Pool 類型

  • 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。

可以透過 ENV 配置快取配置器,以防止分割大於定義大小的區塊(請參閱 Cuda 語意文件的記憶體管理部分)。 這有助於避免記憶體碎片,但可能會造成效能損失。 提供其他輸出以協助調整和評估影響

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

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

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

可以透過 ENV 配置快取配置器,以捨入記憶體配置,以減少碎片。 有時,捨入的額外負擔可能高於其有助於減少的碎片。 可以使用以下統計資料來檢查捨入是否增加了太多額外負擔

  • "requested_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}":客戶端程式碼請求的記憶體,將其與 allocated_bytes 比較,以檢查配置捨入是否增加了太多額外負擔。

參數

device (torch.deviceint, optional) – 選取的裝置。如果 deviceNone(預設),則傳回 current_device() 給定的目前裝置的統計資料。

傳回類型

Dict[str, Any]

注意

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

注意

使用 backend:cudaMallocAsync 時,某些統計資料沒有意義,並且始終報告為零。

文件

存取 PyTorch 的完整開發人員文件

檢視文件

教學課程

取得針對初學者和進階開發人員的深入教學課程

檢視教學課程

資源

尋找開發資源並取得您的問題解答

檢視資源