當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python PyTorch Timer.blocked_autorange用法及代碼示例


本文簡要介紹python語言中 torch.utils.benchmark.Timer.blocked_autorange 的用法。

用法:

blocked_autorange(callback=None, min_run_time=0.2)

返回

一個 Measurement 對象,包含測量的運行時間和重複計數,可用於計算統計信息。 (平均值、中位數等)

測量許多複製,同時將計時器開銷保持在最低限度。

在高層次上,blocked_autorange 執行以下 pseudo-code:

`setup`

total_time = 0
while total_time < min_run_time
    start = timer()
    for _ in range(block_size):
        `stmt`
    total_time += (timer() - start)

注意內部循環中的變量block_size。塊大小的選擇對測量質量很重要,並且必須平衡兩個相互競爭的目標:

  1. 較小的塊大小會導致更多的複製和通常更好的統計數據。

  2. 較大的塊大小可以更好地攤銷 timer 調用的成本,並導致測量偏差較小。這很重要,因為 CUDA 同步時間很重要(從單到低兩位數微秒),否則會使測量產生偏差。

blocked_autorange 通過運行預熱期設置block_size,增加塊大小直到計時器開銷小於整體計算的 0.1%。然後將該值用於主測量回路。

相關用法


注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.utils.benchmark.Timer.blocked_autorange。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。