cupyx.time.repeat#

cupyx.time.repeat(func, args=(), kwargs={}, n_repeat=10000, *, name=None, n_warmup=10, max_duration=inf, devices=None)[源文件]#

用于测量 CPU 和 GPU 所花费时间的计时工具。

此函数是一个非常方便的辅助工具,用于设置计时测试。GPU 时间通过同步内部流得到正确记录。因此,要对一个多 GPU 函数进行计时,所有参与的设备必须作为 devices 参数传递,以便此辅助工具知道要记录哪些设备。一个简单的示例如下所示

import cupy as cp
from cupyx.time import repeat

def f(a, b):
    return 3 * cp.sin(-a) * b

a = 0.5 - cp.random.random((100,))
b = cp.random.random((100,))
print(repeat(f, (a, b), n_repeat=1000))
参数:
  • func (callable) – 一个要计时的可调用对象。

  • args (tuple) – 要传递给可调用对象的定位参数。

  • kwargs (dict) – 要传递给可调用对象的关键字参数。

  • n_repeat (int) – 调用可调用对象的次数。增加此值将提高收集到的统计数据质量,但会延长测试时间。

  • name (str) – 要报告的函数名称。如果未给出,则使用可调用对象的 __name__ 属性。

  • n_warmup (int) – 调用可调用对象的次数。热身运行不计时。

  • max_duration (float) – 整个测试可以使用的最大时间(以秒为单位)。如果花费的时间超过此限制,测试将停止并报告截至中断点收集到的统计数据。

  • devices (tuple) – 在计时测试期间将要计时的设备 ID(int)元组。如果未给出,则使用当前设备。

返回值:

一个收集所有测试结果的对象。

返回类型:

_PerfCaseResult

警告

此 API 已迁移至 cupyx.profiler.benchmark(),自 CuPy v10 起。通过 cupyx.time 访问的方式已弃用。