cupyx.profiler.benchmark#

cupyx.profiler.benchmark(func, args=(), kwargs={}, n_repeat=10000, *, name=None, n_warmup=10, max_duration=inf, devices=None)[source]#

用于测量 CPU 和 GPU 耗时的计时工具。

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

import cupy as cp
from cupyx.profiler import benchmark

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

a = 0.5 - cp.random.random((100,))
b = cp.random.random((100,))
print(benchmark(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