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)元组。如果未给出,则使用当前设备。
- 返回:
一个收集所有测试结果的对象。
- 返回类型: