torch.profiler.itt 的源代码
# mypy: 允许未类型化定义
from contextlib 导入 contextmanager
尝试:
from torch._C 导入 _itt
除了
导入错误:
类 _ITTStub:
@staticmethod
定义 _fail(*
参数, **kwargs):
raise 运行时错误(
"ITT 功能未安装。您确定您有 ITT 构建吗?"
)
@staticmethod
定义
是否可用():
返回
假
范围推送 =
失败
rangePop = 失败
标记 =
失败
_itt = _ITTStub() # 类型:忽略[赋值]
全部 = [
"是否可用",
范围推送,
范围弹出,
"标记",
"范围"]
[文档]def is_available():
"""
检查 ITT 功能是否可用
"``"
返回 _itt 是否可用
[文档]def range_push(msg):
"""
将范围推入嵌套范围跨度栈。返回开始范围的基础索引。
深度。
参数:
msg (str): 与范围关联的 ASCII 消息
"""
return _itt.rangePush(msg)
[文档]def range_pop():
"""
从嵌套范围栈中弹出范围。返回结束范围的零基深度。
返回结束范围的零基深度。
"``"
返回_itt.rangePop()
[文档]定义_mark(msg):
"```"
描述某个时刻发生的瞬时事件。
参数:
msg (str): 与事件关联的 ASCII 消息。
"""
返回 _itt.mark(msg)
@contextmanager
定义
范围(
信息, *
参数, **kwargs):
""
上下文管理器/装饰器,在开始时推送一个 ITT 范围
其范围,并在末尾弹出。如果提供了额外的参数,
它们作为参数传递给 msg.format().
参数:
msg (str): 与范围关联的消息
"文档"
range_push(信息.
格式(*
参数, **kwargs))
尝试:
产生
最后:
range_pop()