| try: |
| from torch._C import _nvtx |
| except ImportError: |
| class _NVTXStub(object): |
| @staticmethod |
| def _fail(*args, **kwargs): |
| raise RuntimeError("NVTX functions not installed. Are you sure you have a CUDA build?") |
| |
| rangePushA = _fail |
| rangePop = _fail |
| markA = _fail |
| |
| _nvtx = _NVTXStub() |
| |
| __all__ = ['range_push', 'range_pop', 'mark'] |
| |
| |
| def range_push(msg): |
| """ |
| Pushes a range onto a stack of nested range span. Returns zero-based |
| depth of the range that is started. |
| |
| Arguments: |
| msg (string): ASCII message to associate with range |
| """ |
| return _nvtx.rangePushA(msg) |
| |
| |
| def range_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() |
| |
| |
| def mark(msg): |
| """ |
| Describe an instantaneous event that occurred at some point. |
| |
| Arguments: |
| msg (string): ASCII message to associate with the event. |
| """ |
| return _nvtx.markA(msg) |