Skip to content

resources: Add MI355X GPU smoke checkpoint sources - #84

Open
BobbyRBruce wants to merge 3 commits into
gem5:stablefrom
BobbyRBruce:gpu-fs-checkpoint-resources
Open

resources: Add MI355X GPU smoke checkpoint sources#84
BobbyRBruce wants to merge 3 commits into
gem5:stablefrom
BobbyRBruce:gpu-fs-checkpoint-resources

Conversation

@BobbyRBruce

@BobbyRBruce BobbyRBruce commented Aug 21, 2026

Copy link
Copy Markdown
Member

Overview

  • add the HIP source and --genco build recipe for the
    x86-mi355x-gpu-fs-smoke code object
  • add an initialized HIP loader and two-stage Atomic CPU configuration for
    reproducing x86-mi355x-gpu-fs-smoke-checkpoint
  • document creation of the intermediate loader checkpoint and the final
    completed-warm-up checkpoint
  • document portable checkpoint archives without macOS AppleDouble files

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-smoke version 1.0.0 is a 4,832-byte gfx950 code object
with MD5 007bb0aa417997df90195e8f2cdb00e0.

x86-mi355x-gpu-fs-smoke-checkpoint version 1.0.0 is a 120,005,120-byte
portable tar archive with extracted-directory MD5
fb11305e3e952b8764bf76f190c1360c. Its name and metadata make clear that the
saved 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

  • Python source compiles and git diff --check passes.
  • make -n -C src/x86-mi355x-gpu-fs-smoke selects
    hipcc --genco --offload-arch=gfx950.
  • Both resources passed public URL/API verification and a fresh download and
    checksum validation through a built gem5 25.1 obtain_resource.
  • The final checkpoint was created at tick 15666080342919 after a completed
    warm-up dispatch.
  • A local restore launched and verified a second GPU kernel; serial output
    contained GPU checkpoint restore test passed and statistics recorded one
    completed workgroup.
  • The archive contains no macOS AppleDouble files.

@BobbyRBruce
BobbyRBruce marked this pull request as ready for review August 21, 2026 15:48
Copilot AI lite review requested due to automatic review settings August 21, 2026 15:48

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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")
@BobbyRBruce
BobbyRBruce force-pushed the gpu-fs-checkpoint-resources branch from 8c610ea to c3208b1 Compare August 21, 2026 18:37
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.
@BobbyRBruce
BobbyRBruce force-pushed the gpu-fs-checkpoint-resources branch from c3208b1 to 60673f2 Compare August 21, 2026 19:03
@BobbyRBruce BobbyRBruce changed the title resources: Add MI200 checkpoint smoke sources resources: Add MI200 GPU smoke checkpoint sources Aug 21, 2026
powerjg
powerjg previously approved these changes Aug 21, 2026

@powerjg powerjg left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
@BobbyRBruce
BobbyRBruce force-pushed the gpu-fs-checkpoint-resources branch from 2fde0c8 to ad26b4c Compare August 27, 2026 03:26
@BobbyRBruce BobbyRBruce changed the title resources: Add MI200 GPU smoke checkpoint sources resources: Add MI355X GPU smoke checkpoint sources Aug 27, 2026
@mattsinc

Copy link
Copy Markdown
Contributor

@abmerop since you know this code better than I, can you please take a look first?

@abmerop abmerop left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this file part of another PR? I wasn't able to find it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants