[AIROCMLIR-375] Run tests in parallel across multiple GPUs#2419
[AIROCMLIR-375] Run tests in parallel across multiple GPUs#2419bogdan-petkovic wants to merge 14 commits into
Conversation
Signed-off-by: bogdan-petkovic <[email protected]>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #2419 +/- ##
===========================================
+ Coverage 82.57% 82.63% +0.06%
===========================================
Files 120 120
Lines 42852 42828 -24
Branches 7110 7106 -4
===========================================
+ Hits 35381 35388 +7
+ Misses 4815 4798 -17
+ Partials 2656 2642 -14
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
…eout Signed-off-by: bogdan-petkovic <[email protected]>
Signed-off-by: bogdan-petkovic <[email protected]>
Signed-off-by: bogdan-petkovic <[email protected]>
|
Result on 8-GPU mfma: random E2E 64m → 25m (2.6×), fixed 18.5m → 14.5m. gfx110x (2 GPU): ~1.44× on both. Single GPU nodes unchanged |
There was a problem hiding this comment.
Pull request overview
This PR adds multi-GPU test distribution for rocMLIR CI workloads by auto-detecting homogeneous GPU groups, sharding lit E2E runs across GPUs, and round-robining sweep runs across multiple devices to reduce wall-clock time on multi-GPU nodes.
Changes:
- Introduces a shared GPU-topology helper to select same-architecture GPUs and build per-process GPU-isolation environments.
- Updates parameter/attention sweep scripts to accept
--gpusand distribute GPU-executing stages across the selected devices. - Adds a Jenkins driver to shard lit E2E runs across GPUs and wires it into Jenkins fixed/random E2E stages.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| mlir/utils/performance/parameterSweeps.py | Adds GPU selection and round-robin assignment of GPU-executing stages; compiles/queries properties for the selected GPU group. |
| mlir/utils/performance/gpu_topology.py | New helper for enumerating visible GPUs, enforcing homogeneous arch selection, and generating isolated per-process GPU environments. |
| mlir/utils/performance/attentionSweeps.py | Adds GPU selection plumbing and passes selected GPU group info into shared sweep machinery. |
| mlir/utils/jenkins/run_e2e_multigpu.py | New driver to shard lit runs across GPUs with bounded per-GPU concurrency and optional fail-fast. |
| mlir/utils/jenkins/Jenkinsfile | Switches fixed/random E2E stages to build dependencies then run the new sharded lit driver across available GPUs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
umangyadav
left a comment
There was a problem hiding this comment.
I've not looked in detail yet but can you check if you can add unit-tests for the python scripts ?
…s, add tests Signed-off-by: bogdan-petkovic <[email protected]>
…/parallel-tests-multi-gpu
Sure, i've added |
…/parallel-tests-multi-gpu # Conflicts: # mlir/utils/jenkins/Jenkinsfile
Motivation
CI nodes commonly have multiple GPUs, and a scheduled job reserves the whole node regardless of how many it uses. Today rocMLIR runs its GPU test workloads almost entirely on GPU 0, leaving the other GPUs idle. This PR distributes the E2E lit suite and the parameter/attention sweeps across all same-architecture GPUs on a node to cut CI test runtime (especially Nightly). Resolves #1805.
Technical Details
Test Plan
Test Result
Submission Checklist