Skip to content

ci : ROCm + Vulkan release builds per merge to master (lemonade-sdk/llamacpp-rocm layout) - #112

Merged
gaetan-puleo merged 3 commits into
masterfrom
ci/rocm-nightly-releases
Sep 29, 2026
Merged

gaetan-puleo merged 3 commits into
masterfrom
ci/rocm-nightly-releases

Conversation

@dzannotti

@dzannotti dzannotti commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Overview

Adds ROCm and Vulkan release builds, one release per merge to master, Linux zips by default, in the same layout as lemonade-sdk/llamacpp-rocm: same pipeline, same assets, same release format. Tools that consume their releases (e.g. Lemonade) can point at this repo.

The files are lemonade's own, copied as-is (MIT, attribution in each file):

file origin
.github/workflows/build-llamacpp-rocm.yml build-llamacpp-rocm.yml
.github/workflows/test-llamacpp-rocm.yml test-llamacpp-rocm.yml
.github/workflows/nightly-failure-alert.yml nightly-failure-alert.yml
.github/actions/test-llamacpp-build/action.yml .github/actions/test-llamacpp-build/action.yml
scripts/rocm-release/gather_required_libs.py utils/gather_required_libs.py

Kept identical to lemonade:

  • Build and packaging:
    • Ubuntu 22.04 builds. The Windows (windows-2022, VS2022) job is still there, selectable in a manual run.
    • Targets gfx1151,gfx1150,gfx120X,gfx110X,gfx103X,gfx90a,gfx908, including the multi-arch target mapping.
    • Newest TheRock nightly tarball from nightly.repo.amd.com, or a pinned version.
    • Identical cmake flags.
    • The same set of bundled ROCm DLLs / .sos plus the rocblas/library and hipblaslt/library kernel folders.
    • $ORIGIN RPATH on Linux.
  • Releases:
    • Assets named llama-bNNNN-ubuntu-rocm-{target}-x64.zip.
    • Sequential bNNNN tags starting at b1000.
    • The same release notes block.
    • An issue opened when a release build fails.

Changed, because this repo is not a wrapper around upstream:

  1. It clones this repository (${{ github.repository }}) instead of ggerganov/llama.cpp. The llamacpp_version input now means a branch or tag here, and latest means master.
  2. secrets.GH_TOKEN || github.token, so it works without adding a secret.
  3. The self-hosted hardware tests (test-stx-halo, test-stx, test-llamacpp-rocm.yml) only run when the repo variables STX_HALO_RUNNERS / STX_RUNNERS are true. When skipped they still allow the release, exactly as in lemonade's create-release condition. Without runners they would sit in the queue until they time out, as the self-hosted jobs did on Merge halo-box/llama.cpp master into strix (2026-09-15) #64.
  4. The PR trigger is limited to changes to the pipeline files. Lemonade builds the full 14-zip matrix on every PR; here that would be every PR.
  5. The alert goes to @dzannotti.
  6. It releases on every push to master (the merged commit, checked out by SHA) instead of lemonade's nightly cron. A newer merge cancels a release that is still building (concurrency).
  7. It adds a Linux Vulkan zip (llama-bNNNN-ubuntu-vulkan-x64.zip) to each release. It is built from the same commit on ubuntu-22.04 with the LunarG Vulkan SDK, GGML_VULKAN=ON, GGML_BACKEND_DL + GGML_CPU_ALL_VARIANTS for portable CPU code, and $ORIGIN RPATH, using the same flags as upstream's release.yml Vulkan job. Its failure blocks the release, like a ROCm failure does. The vulkan dispatch input turns it off.
  8. It builds Linux only by default. workflow_dispatch with operating_systems: windows,ubuntu still builds Windows.

The bNNNN pattern only matches four digits, so it does not collide with the b1xxxx tags carried over from upstream.

Measurements

Not applicable: CI configuration only, no runtime code changes.

Additional information

  • First run: this PR's own run (the build matrix, no release) is the first real test of the pipeline.
  • Windows: not built by default. The first run's Windows gfx120X job failed on a network timeout while downloading, not on our code. The Windows test build is also broken on master by test-qsa-fast.cpp (fixed in tests : build test-qsa-fast on Windows #113); release builds use LLAMA_BUILD_TESTS=OFF and are not affected.
  • Other targets: the CDNA/RDNA2-4 targets are built as lemonade does. Strix's HIP paths are gated on RDNA3.5, so they should compile, but that is unverified until the run finishes.
  • Existing failure: upstream's release.yml fails on every push to master here (the last 3 runs). This PR does not touch it.

Requirements

  • I have read and agree with the contributing guidelines
  • This change is Strix Halo specific, or justified by measurements on Strix Halo: release packaging for this fork, not an upstream change.
  • AI usage disclosure: AGENT-AUTHORED. Claude (Opus 5.5) ported the workflows and wrote this description, and @dzannotti requested it.
  • What was NOT verified:
    • YAML parses, and actionlint reports only the custom stx-halo runner label.
    • No build has run yet. This PR's CI run is the first.
    • The release step (tagging and upload) cannot run from a PR. It runs on the first merge to master after this lands, which includes this PR's own merge.

🤖 Generated with Claude Code

…yout

Port of lemonade-sdk/llamacpp-rocm's build, test and nightly-alert workflows (MIT).
Same targets, same TheRock nightly ROCm, same bundled runtime libraries, same
llama-bNNNN-{os}-rocm-{target}-x64.zip assets and bNNNN release numbering.

Differences from the original: it builds this repository instead of cloning upstream,
falls back to the job token when there is no GH_TOKEN secret, runs the PR trigger only
for changes to the pipeline, and gates the self-hosted Strix Halo test jobs behind
repository variables so missing runners cannot hold a run in the queue.

Assisted-by: Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added documentation Improvements or additions to documentation devops labels Sep 29, 2026
Release on push to master instead of a nightly cron and build the merged commit.
Default to ubuntu; Windows remains available through workflow_dispatch. Strip the
trailing whitespace the editorconfig check rejects.

Assisted-by: Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dzannotti dzannotti changed the title ci : nightly ROCm release builds in the lemonade-sdk/llamacpp-rocm layout ci : ROCm release builds per merge to master (lemonade-sdk/llamacpp-rocm layout) Sep 29, 2026
build-ubuntu-vulkan builds the same commit with GGML_VULKAN=ON, portable CPU
variants and $ORIGIN RPATH, and create-release adds llama-bNNNN-ubuntu-vulkan-x64.zip
to the release. The vulkan dispatch input turns it off.

Assisted-by: Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dzannotti dzannotti changed the title ci : ROCm release builds per merge to master (lemonade-sdk/llamacpp-rocm layout) ci : ROCm + Vulkan release builds per merge to master (lemonade-sdk/llamacpp-rocm layout) Sep 29, 2026
@gaetan-puleo
gaetan-puleo merged commit 3deeb33 into master Sep 29, 2026
13 of 15 checks passed
@gaetan-puleo
gaetan-puleo deleted the ci/rocm-nightly-releases branch September 29, 2026 19:35
dzannotti added a commit that referenced this pull request Sep 29, 2026
tests/test-backend-ops.cpp: keep both new test cases, upstream's
test_mul_mat_id_w4a8/w4a4 from the sync and test_moe_prefill from #91.

Assisted-by: Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comment thread docs/rocm-releases.md

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

file is called rocm-releases.md but it talks about rocm and vulkan... but I also don't see anything that actually builds vulkan or is it just using the upstream vulkan build action?

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

nevermind on not seeing the vulkan action. It was furled in the github UI (and in a file called build-llamacpp-rocm.yml, which I didn't think to look in at first)

michal-zurkowski pushed a commit to michal-zurkowski/strix-llama.cpp that referenced this pull request Oct 7, 2026
The Lint job (flake8-no-print, NP100) fails on master since halo-box#112 added this
script with print() calls. Use the logging module like the other scripts.

Assisted-by: Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

devops documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants