tvm.runtime.profiling
在 Python 中注册性能分析对象。
- class tvm.runtime.profiling.Report(calls: Sequence[Dict[str, Object]], device_metrics: Dict[str, Dict[str, Object]], configuration: Dict[str, Object])
用于存储性能分析运行期间收集的信息的容器。
- table(sort=True, aggregate=True, col_sums=True)
生成人类可读的表格
- class tvm.runtime.profiling.MetricCollector
用户定义的性能分析指标收集的接口。
- class tvm.runtime.profiling.DeviceWrapper(dev: Device)
封装 tvm.runtime.Device
- tvm.runtime.profiling.profile_function(mod, dev, collectors, func_name=None, warmup_iters=10)
收集函数执行的性能信息。通常与编译后的 PrimFunc 一起使用。
此信息可以包括性能计数器,如缓存命中率和 FLOP,这些计数器在调试单个 PrimFunc 的性能问题时很有用。可以根据使用的 MetricCollector 收集不同的指标。
示例
- 参数:
mod (Module) – 包含要分析的函数的模块。
dev (Device) – 运行函数的设备。
collectors (List[MetricCollector]) –
MetricCollector
,它将收集性能信息。func_name (Optional[str]) – 要分析的 mod 中的函数名称。默认为 mod 的 entry_name。
warmup_iters (int) – 在收集性能信息之前运行函数的迭代次数。建议将其设置为大于 0,以获得一致的缓存效果。默认为 10。
- 返回值:
prof – PackedFunc,它接受与 mod[func_name] 相同的参数,并以 Dict[str, ObjectRef] 的形式返回性能指标,其中值可以是 CountNode、DurationNode、PercentNode。
- 返回类型:
PackedFunc[args, Dict[str, ObjectRef]]