| from . import cudart, check_error |
| class cudaOutputMode(object): |
| cudaKeyValuePair = ctypes.c_int(0) |
| cudaCSV = ctypes.c_int(1) |
| return cudaOutputMode.cudaKeyValuePair |
| return cudaOutputMode.cudaCSV |
| raise RuntimeError("supported CUDA profiler output modes are: key_value and csv") |
| def init(output_file, flags=None, output_mode='key_value'): |
| flags = DEFAULT_FLAGS if flags is None else flags |
| output_mode = cudaOutputMode.for_key(output_mode) |
| with tempfile.NamedTemporaryFile(delete=True) as f: |
| f.write(b'\n'.join(map(lambda f: f.encode('ascii'), flags))) |
| check_error(cudart().cudaProfilerInitialize( |
| ctypes.c_char_p(f.name.encode('ascii')), ctypes.c_char_p(output_file.encode('ascii')), output_mode)) |
| check_error(cudart().cudaProfilerStart()) |
| check_error(cudart().cudaProfilerStop()) |
| @contextlib.contextmanager |