catalyst.debug.instrumentation¶
- instrumentation(session_name, filename=None, detailed=False)[source]¶
Instrumentation session to output information on wall time, CPU time, and intermediate program size of a program during compilation and execution.
- Parameters
session_name (str) – identifier to distinguish multiple sessions or runs within the same result file
filename (str) – Desired path to write results to in YAML format. If
None
, the results will instead be printed to the console.detailed (bool) – Whether to instrument fine-grained steps in the compiler and runtime. If
False
, only high-level steps such as “program capture” and “compilation” are reported.
Example
Printing an instrumentation session to the console:
>>> @qjit ... def expensive_function(a, b): ... return a + b >>> with debug.instrumentation("session_name", detailed=False): ... expensive_function(1, 2) [DIAGNOSTICS] Running capture walltime: 3.299 ms cputime: 3.294 ms programsize: 0 lines [DIAGNOSTICS] Running generate_ir walltime: 4.228 ms cputime: 4.225 ms programsize: 14 lines [DIAGNOSTICS] Running compile walltime: 57.182 ms cputime: 12.109 ms programsize: 121 lines [DIAGNOSTICS] Running run walltime: 1.075 ms cputime: 1.072 ms
We can also write an instrumentation session to a YAML file:
>>> with debug.instrumentation("session_name", filename="session.yml", detailed=False): ... expensive_function(1, 2) >>> with open('session.yml', 'r') as f: ... print(f.read()) 2024-04-29 18:19:29.349886: name: session_name system: os: Linux-6.1.58+-x86_64-with-glibc2.35 arch: x86_64 python: 3.10.12 results: - capture: walltime: 6.296216 cputime: 2.715764 programsize: 0 - generate_ir: walltime: 8.84289 cputime: 8.836589 programsize: 14 - compile: walltime: 199.249725 cputime: 38.820425 programsize: 121 - run: walltime: 1.053613 cputime: 1.019584
code/api/catalyst.debug.instrumentation
Download Python script
Download Notebook
View on GitHub