| from . import cudart, check_error |
| __all__ = ["init", "start", "stop", "profile"] |
| def init(output_file, flags=None, output_mode='key_value'): |
| if not hasattr(rt, 'cudaOutputMode'): |
| raise AssertionError("HIP does not support profiler initialization!") |
| flags = DEFAULT_FLAGS if flags is None else flags |
| if output_mode == 'key_value': |
| output_mode_enum = rt.cudaOutputMode.KeyValuePair |
| elif output_mode == 'csv': |
| output_mode_enum = rt.cudaOutputMode.CSV |
| raise RuntimeError("supported CUDA profiler output modes are: key_value and csv") |
| with tempfile.NamedTemporaryFile(delete=True) as f: |
| f.write(b'\n'.join(f.encode('ascii') for f in flags)) |
| check_error(rt.cudaProfilerInitialize(f.name, output_file, output_mode_enum)) |
| check_error(cudart().cudaProfilerStart()) |
| check_error(cudart().cudaProfilerStop()) |
| @contextlib.contextmanager |