resources: Add MI355X GPU smoke checkpoint sources - #84
BobbyRBruce wants to merge 3 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Adds reproducible source and configuration needed to build and validate MI200 GPU full-system checkpoint resources in gem5-resources, without checking in the generated binary/checkpoint artifacts.
Changes:
- Add a small HIP “smoke” executable source + Makefile to validate MI200 checkpoint restore behavior.
- Add an Atomic x86 gem5 configuration wrapper to create the reusable post-boot MI200 GPUFS checkpoint using published stdlib resources.
- Add documentation for building the smoke executable and archiving/uploading the checkpoint.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/x86-mi200-gpu-fs-smoke/README.md | Documents how to build the MI200 HIP smoke binary used after restoring the checkpoint. |
| src/x86-mi200-gpu-fs-smoke/Makefile | Build recipe for the HIP smoke executable targeting gfx90a. |
| src/x86-mi200-gpu-fs-smoke/gpu_checkpoint_smoke.cpp | Minimal HIP kernel + host-visible memory check to validate restore correctness. |
| src/x86-mi200-gpu-fs-checkpoint/README.md | Documents how to run the checkpoint creation config and create a portable tar archive. |
| src/x86-mi200-gpu-fs-checkpoint/create-checkpoint.py | Wrapper config to run MI200 GPUFS with an Atomic CPU and create the checkpoint using stdlib resources. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| arg == "--checkpoint-dir" or arg.startswith("--checkpoint-dir=") | ||
| for arg in remaining_args | ||
| ): | ||
| parser.error("--checkpoint-dir is required") |
8c610ea to
c3208b1
Compare
Add the gfx90a code object source and build recipe used by the MI200 full-system smoke test. Add the initialized HIP loader and two-stage Atomic configuration used to create an intermediate loader checkpoint and the kernel-specific warmed-dispatch CI checkpoint. Document portable archive creation without macOS AppleDouble files.
c3208b1 to
60673f2
Compare
Build the smoke code object for `gfx950` and use the standard-library MI355X configuration to create the loader and warmed checkpoints. Document the exact topology, disk, kernel, and code-object coupling required by the immutable checkpoint resource. Check `hipHostFree` before emitting the restore success marker.
Describe the published checkpoint as containing a completed warm-up\ndispatch and a second kernel launch after restoration.
2fde0c8 to
ad26b4c
Compare
|
@abmerop since you know this code better than I, can you please take a look first? |
abmerop
left a comment
There was a problem hiding this comment.
Interesting, I don't think I have seen a python-based dlopen-like wrapper for GPU kernel libraries, but seems like this makes it easier to load the script into gem5.
High-level comment: Does it make sense for these folders to be in the gem5-resources/src/ directory? It seems like that base directory could get cluttered fast this way. Would it make more sense to put it in gem5-resources/src/gpu (or gpu-fs or some new directory)?
| args = parser.parse_args() | ||
|
|
||
| gem5_root = args.gem5_root.resolve() | ||
| config = gem5_root / "tests" / "gem5" / "gpu" / "configs" / "mi355x_gpu.py" |
There was a problem hiding this comment.
Is this file part of another PR? I wasn't able to find it
## Overview This change adds dedicated standard-library GPU full-system coverage: - Daily cold-boots an MI200-family (`MI210`, `gfx90a`) configuration and an MI355X (`gfx950`) configuration. Neither Daily test uses a checkpoint. - Pull-request CI restores a warmed MI355X checkpoint, launches a second real `gfx950` kernel, verifies its result, and checks the guest serial marker. - Both paths run through the public x86 GPU examples so those examples and the regression configurations cannot drift independently. The checkpoint and its smoke program are published as immutable gem5 Resources: - `x86-mi355x-gpu-fs-smoke-checkpoint`, version `1.0.0` - `x86-mi355x-gpu-fs-smoke`, version `1.0.0` Reproducible resource sources are in [gem5-resources #84](gem5/gem5-resources#84). ## Supporting changes - Remove the deprecated `gcn-gpu` image, its active tests, workflow entries, host tag, and guidance. Archived tests under `tests/deprecated` are untouched. - Stream disk-image downloads into sparse files by default, while retaining dense output through `sparse=False`. - Fix drain handling for objects created during an active drain and include both HBM pseudo channels in checkpoint drain accounting. - Add a shared x86 GPU example helper and an MI200 entry point. Disk, kernel, and checkpoint resource versions remain independently selectable. - Remove the obsolete `HSA_OVERRIDE_GFX_VERSION` setting from the classic MI300X example. ROCr enumeration instead relies on the required guest `/proc`, `/sys`, and `/dev/pts` mounts. - Run the `ALL` GPUFS suites through the standard CI and Daily TestLib matrices using the standard Ubuntu dependencies image.
Overview
--gencobuild recipe for thex86-mi355x-gpu-fs-smokecode objectreproducing
x86-mi355x-gpu-fs-smoke-checkpointcompleted-warm-up checkpoint
This PR contains only reproducible source and configuration. Generated
artifacts remain external gem5 resources. The configuration depends on the
MI355X checkpoint support in
gem5 #3401.
Published resources
x86-mi355x-gpu-fs-smokeversion1.0.0is a 4,832-bytegfx950code objectwith MD5
007bb0aa417997df90195e8f2cdb00e0.x86-mi355x-gpu-fs-smoke-checkpointversion1.0.0is a 120,005,120-byteportable tar archive with extracted-directory MD5
fb11305e3e952b8764bf76f190c1360c. Its name and metadata make clear that thesaved state contains the loaded smoke kernel and a completed warm-up dispatch;
it cannot inject a different kernel after restoration.
Both resources are published in Azure Blob Storage and the production
resource database.
Validation
git diff --checkpasses.make -n -C src/x86-mi355x-gpu-fs-smokeselectshipcc --genco --offload-arch=gfx950.checksum validation through a built gem5 25.1
obtain_resource.15666080342919after a completedwarm-up dispatch.
contained
GPU checkpoint restore test passedand statistics recorded onecompleted workgroup.