Spaces:
Sleeping
Sleeping
import contextlib | |
import torch | |
__all__ = ["start", "stop", "profile"] | |
def start(mode: str = "interval", wait_until_completed: bool = False) -> None: | |
r"""Start OS Signpost tracing from MPS backend. | |
The generated OS Signposts could be recorded and viewed in | |
XCode Instruments Logging tool. | |
Args: | |
mode(str): OS Signpost tracing mode could be "interval", "event", | |
or both "interval,event". | |
The interval mode traces the duration of execution of the operations, | |
whereas event mode marks the completion of executions. | |
See document `Recording Performance Data`_ for more info. | |
wait_until_completed(bool): Waits until the MPS Stream complete | |
executing each encoded GPU operation. This helps generating single | |
dispatches on the trace's timeline. | |
Note that enabling this option would affect the performance negatively. | |
.. _Recording Performance Data: | |
https://developer.apple.com/documentation/os/logging/recording_performance_data | |
""" | |
mode_normalized = mode.lower().replace(" ", "") | |
torch._C._mps_profilerStartTrace(mode_normalized, wait_until_completed) | |
def stop(): | |
r"""Stops generating OS Signpost tracing from MPS backend.""" | |
torch._C._mps_profilerStopTrace() | |
def profile(mode: str = "interval", wait_until_completed: bool = False): | |
r"""Context Manager to enabling generating OS Signpost tracing from MPS backend. | |
Args: | |
mode(str): OS Signpost tracing mode could be "interval", "event", | |
or both "interval,event". | |
The interval mode traces the duration of execution of the operations, | |
whereas event mode marks the completion of executions. | |
See document `Recording Performance Data`_ for more info. | |
wait_until_completed(bool): Waits until the MPS Stream complete | |
executing each encoded GPU operation. This helps generating single | |
dispatches on the trace's timeline. | |
Note that enabling this option would affect the performance negatively. | |
.. _Recording Performance Data: | |
https://developer.apple.com/documentation/os/logging/recording_performance_data | |
""" | |
try: | |
start(mode, wait_until_completed) | |
yield | |
finally: | |
stop() | |