Shortcuts

torch.profiler.itt 的源代码

from contextlib import contextmanager

try:
    from torch._C import _itt
except ImportError:

    class _ITTStub:
        @staticmethod
        def _fail(*args, **kwargs):
            raise RuntimeError(
                "未安装ITT功能。您确定安装了ITT构建吗?"
            )

        @staticmethod
        def is_available():
            return False

        rangePush = _fail
        rangePop = _fail
        mark = _fail

    _itt = _ITTStub()  # type: ignore[assignment]


__all__ = ["is_available", "range_push", "range_pop", "mark", "range"]


[docs]def is_available(): """ 检查ITT功能是否可用 """ return _itt.is_available()
[docs]def range_push(msg): """ 将一个范围推入嵌套范围跨度的堆栈。返回开始范围的基于零的深度。 参数: msg (str): 与范围关联的ASCII消息 """ return _itt.rangePush(msg)
[docs]def range_pop(): """ 从嵌套范围跨度的堆栈中弹出一个范围。返回结束范围的基于零的深度。 """ return _itt.rangePop()
[docs]def mark(msg): """ 描述在某个时间点发生的瞬时事件。 参数: msg (str): 与事件关联的ASCII消息。 """ return _itt.mark(msg)
@contextmanager def range(msg, *args, **kwargs): """ 上下文管理器/装饰器,在作用域开始时推送一个ITT范围,在结束时弹出它。如果给出额外参数,它们将作为参数传递给msg.format()。 参数: msg (str): 与范围关联的消息 """ range_push(msg.format(*args, **kwargs)) try: yield finally: range_pop()
优云智算