resources: Add MI355X GPU smoke checkpoint sources - #84
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
--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.