mlir-aie maintainer dashboard

Nightly checks of the kernels, the compiler and whole designs on Ryzen AI NPUs

How each area did on its latest run. Open one for what went wrong and how to reproduce it.

About this dashboard

One page, utils/kernel_checks/index.html, with no build step: the nightly workflows copy it to gh-pages:dashboard/ each time they publish, and it reads the data they publish beside it.

Where the data is

kernel-checks/<npu>/
the kernel checks, per NPU, written by nightlyKernelChecks.yml through publishKernelResults.yml
component-checks/<check>/
the performance, routing and placement checks, per check: sa-placer and sa-placer-hw, written by nightlyComponentChecks.yml; allocator and router, written by modelBasedTests.yml
ci-health/
status.json, the critical test workflows' figures, merge time and the scheduled workflows' recent runs, and history.json, a point a day of those figures; written every six hours by publishCiHealth.yml (utils/kernel_checks/ci_health.py)

Both are written by utils/kernel_checks/publish.py in one format: runs/<id>.json (one run's record), runs.json (a summary per run), latest.json (the newest record that published numbers; the kernel checks' pull-request report compares against it) and history/<metric>.json (every run's value of one metric per case). A kernel NPU also has catalogue.json, every kernel factory and how its cases fared. Runs older than 90 days thin to weekly. Files carry a schema number, and the page sets aside a newer one rather than misread it.

Every metric is smaller-is-better. A change counts once it passes the metric's threshold in utils/kernel_checks/thresholds.json, which the pull-request report reads too; a noisy timing also has to pass a multiple of its run-to-run spread. Runs started by hand are charted but never compared against.

Working on the page

python3 utils/kernel_checks/preview.py --fetch                 # the published data, this page
python3 utils/kernel_checks/preview.py --scenario bad-night      # a synthetic failing night on top
python3 utils/kernel_checks/preview.py --site components --scenario bad-night
python3 -m pytest test/test_kernel_checks_page.py                # the page's code, under node

To add a section: publish its checks to component-checks/<check>/ from a nightly job (add the check to COMPONENTS in publish.py), then add the section to SECTIONS and its checks to BANDS in the page.