Repository navigation
docs(tensilelite): add the timing measurement scripts, results and write-ups - #15291
Draft
Alex-Vasile wants to merge 2 commits into
Conversation
Alex-Vasile
force-pushed
the
users/alvasile/tl-speedup-41-timing-results-and-notes
branch
from
November 6, 2026 18:24
e30640d to
c1cc9e4
Compare
✅ All Checks Passed — Ready for Review
📖 Need help? See the Policy FAQ for details on every check and how to fix failures. |
…ite-ups One draft-only branch with everything the speed-up work measured and wrote down (78 files, 15,982 lines): the hand-run measurement scripts (16 files, 598 lines; measure_env.sh makes paths, caches, GPU target and cores overridable), the generated analyze_timing / aggregate_timing outputs of six campaigns (43 files, 9,206 lines: first gfx942 runs, gfx950 per-config, gfx950 baseline / after-run / after-build, gfx942 before and after), and the hand-written notes (19 files, 6,178 lines: test-client-plan.md, CI_SPLIT_TIMING.md, the gfx950 investigations, DECISIONS.md, DEFERRED.md, the before/after write-ups, the gfx942 README and FURTHER_SPEEDUPS.md). Nothing in the build, CI or tests reads these files.
Alex-Vasile
force-pushed
the
users/alvasile/tl-speedup-41-timing-results-and-notes
branch
from
November 6, 2026 18:45
c1cc9e4 to
150dcfe
Compare
|
🎉 All checks passed! This PR is ready for review. |
…heir scripts Keep the 8 per-config timing aggregates of the before and after points (gfx950 baseline, after the run-side changes and after the build-side changes; gfx942 before and after) and the scripts that reproduce them. Remove the exploratory runs, the early gfx950 passes, the investigation and decision notes, the write-ups, the test-outcome lists, the comparison tables, the split times and the other scripts (66 files). They stay in the parent commit's history. Add before_after/run_side.sh, which runs one side of a before/after timing (CI-like split, shared config list, per-config build and run), and before_after/compare_aggregates.py, which prints two per-config aggregates side by side; it reproduces the removed gfx942 build_comparison.txt from the same data. run_split.sh gains DIST (pytest-xdist scheduler, default worksteal as in the hw-common CI category) and CLEAR_RUN_CACHE (default 0: the run phase keeps the cache the build phase left); the removed split numbers were measured with DIST=load and CLEAR_RUN_CACHE=1.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
JIRA ID : AIHPBLAS-5255
Motivation
The TensileLite common tests build GPU kernels for each YAML test config and then run them through tensilelite-client, the C++ program that runs and validates generated kernels. The changes below this one in the stack speed up both stages. This PR keeps the before and after timings of those changes and the scripts to measure a before and after again. It is meant to stay a draft, as a reference for reviewers of the other PRs.
Technical Details
All files are new and sit under
projects/hipblaslt/tensilelite/timing_runs/. Nothing in the build, CI or tests reads them, and no existing file changes.AGGREGATE_analysis.txtfiles, each the sum of one per-config pass (every config built or run on its own, with timers on), written byscripts/aggregate_timing.py. gfx950:full_runs_gfx950/baseline_build/andbaseline_run/(before),after_run/(after the run-stage changes) andafter_build/(after the build-stage changes). gfx942:full_runs_gfx942/pre_build/andpre_run/(before),post_build/andpost_run/(after).full_runs_gfx950/, used on both GPUs:split/run_split.sh(the CI-like pass: whole build stage, then whole run stage, 4 pytest-xdist workers),per_config/run_per_config_build.shandper_config/run_per_config.sh(the per-config passes), andmeasure_env.sh, which they all read for paths, caches, GPU target, cores and GPU.before_after/run_side.shruns one side of a before/after comparison through all 3 passes, andbefore_after/compare_aggregates.pyprints 2 aggregates side by side.run_split.shtakesDIST, the pytest-xdist scheduler (defaultworksteal, as thehw-commonCI category uses), andCLEAR_RUN_CACHE(default0: the run stage keeps the cache the build stage left). The CI-like numbers below were measured withDIST=loadandCLEAR_RUN_CACHE=1.The PR's first commit also added the exploratory runs, the investigation and decision notes and the write-ups; the second commit removes them, so they stay in the history.
How to read these results
Each result set was measured at one commit of the original, unsplit branch
users/alvasile/new_test_client("commit N" is its position among that branch's 109 commits,8149ff02ff2d..bb98b8d3b0bb). The last column names the PRs of this stack that hold the same code changes.baseline_build/,baseline_run/(184 configs)289f976d5a52; its code equals commit 20after_run/(185 configs)a9221990f377after_build/(185 configs)bcf018e67fd0; the first 25 configs at commit 92,55f2c5569f5a. The client is commit 75's; no client source changed between 75 and 94.pre_build/,pre_run/(123 configs)aa19af72bc03; its code equals commit 20post_build/,post_run/(123 configs)c1345541ac0cReading notes:
8149ff02ff2d, fromdevelopaf089c49d09c; the rebase changedDataInitialization.hpp,main.cppandReferenceValidator.cppto resolve conflicts. This stack is based on a newerdevelop(e3f8cddfeb95) than any measured tree.How to time a change
Build one msgpack-only client per side, from that side's source tree:
Then start both sides at the same time, each on its own 25 cores and GPU, so that both see the same host load:
Each side's CI-like stage times are in
/scratch/cmp/<side>/split/times.txt. The per-config passes cover the configs whose run passed in either side's CI-like pass. If the "before" tree is older than the timers you compare, setANALYZE_DIRto the "after" tree'sscripts/directory so both sides are read by the same analyzer.Test Plan
Run from
projects/hipblaslt/tensilelite:pre-commit run --fileson the added files checks whitespace, line endings and the hooks that apply to shell and Python.bash -non the shell scripts checks their syntax.compare_aggregates.pyon the gfx942 per-config data reproduces the comparison table removed from this PR.Test Result
Time saved: none by this branch; it adds documentation, reports and scripts only. The headline numbers below measure the whole stack, not this PR.
All numbers are wall times of the CI-like pass (
-n 4, timers off), measured on the original unsplit branch on shared hosts. Each run used 25 cores reserved withtaskset,OMP_NUM_THREADS=25and 1 GPU.gfx942 (MI300X). Before and after ran at the same time on different sockets and GPUs, 1 sample each:
gfx950 (MI355X). Before and after ran back to back in the same session, each on an idle GPU. For the build stage, "after" is the point after the build-stage changes; for the run stage, the point after the run-stage changes:
On the added scripts:
pre-commitpassed,bash -npassed, andcompare_aggregates.pyreproduced the gfx942 build comparison row for row. The scripts were not run end to end on this branch. Automated GitHub checks are pending.Related
Device / Architecture Coverage
Documentation, generated reports and hand-run scripts only. No product code, test, CI configuration or GPU behavior changes, so passing PR checks are sufficient.
Submission Checklist
Risk level
Low (1/5): docs, data and hand-run scripts only; nothing builds, runs or is tested differently.