fromcontextlibimportcontextmanagertry:fromtorch._Cimport_nvtxexceptImportError:class_NVTXStub(object):@staticmethoddef_fail(*args,**kwargs):raiseRuntimeError("NVTX functions not installed. Are you sure you have a CUDA build?")rangePushA=_failrangePop=_failmarkA=_fail_nvtx=_NVTXStub()# type: ignore[assignment]__all__=["range_push","range_pop","range_start","range_end","mark","range"]
[docs]defrange_push(msg):""" Pushes a range onto a stack of nested range span. Returns zero-based depth of the range that is started. Args: msg (str): ASCII message to associate with range """return_nvtx.rangePushA(msg)
[docs]defrange_pop():""" Pops a range off of a stack of nested range spans. Returns the zero-based depth of the range that is ended. """return_nvtx.rangePop()
defrange_start(msg)->int:""" Mark the start of a range with string message. It returns an unique handle for this range to pass to the corresponding call to rangeEnd(). A key difference between this and range_push/range_pop is that the range_start/range_end version supports range across threads (start on one thread and end on another thread). Returns: A range handle (uint64_t) that can be passed to range_end(). Args: msg (str): ASCII message to associate with the range. """return_nvtx.rangeStartA(msg)defrange_end(range_id)->None:""" Mark the end of a range for a given range_id. Args: range_id (int): an unique handle for the start range. """_nvtx.rangeEnd(range_id)
[docs]defmark(msg):""" Describe an instantaneous event that occurred at some point. Args: msg (str): ASCII message to associate with the event. """return_nvtx.markA(msg)
@contextmanagerdefrange(msg,*args,**kwargs):""" Context manager / decorator that pushes an NVTX range at the beginning of its scope, and pops it at the end. If extra arguments are given, they are passed as arguments to msg.format(). Args: msg (str): message to associate with the range """range_push(msg.format(*args,**kwargs))yieldrange_pop()
Docs
Access comprehensive developer documentation for PyTorch
To analyze traffic and optimize your experience, we serve cookies on this site. By clicking or navigating, you agree to allow our usage of cookies. As the current maintainers of this site, Facebook’s Cookies Policy applies. Learn more, including about available controls: Cookies Policy.