当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。