Skip to content

Enable validated HIP VMM defaults in Arch AMD installer - #1080

Merged
0xShug0 merged 6 commits into
0xShug0:mainfrom
ZeroDot1:zerodot1/arch-linux-amd-installer-single
Oct 25, 2026
Merged

0xShug0 merged 6 commits into
0xShug0:mainfrom
ZeroDot1:zerodot1/arch-linux-amd-installer-single

Conversation

@ZeroDot1

Copy link
Copy Markdown
Contributor

Add a validated --hip-vmm on|off option to the Linux build wrapper and
make the Arch AMD installer select HIP virtual memory management through
AUDIOCPP_HIP_VMM=auto|on|off. Auto enables VMM only when all requested GPU
targets are recognized discrete AMD targets (gfx1100, gfx1101, gfx1102,
gfx1200, or gfx1201). Integrated, mixed, and unknown target sets retain
the conservative default; explicit on/off overrides remain available.
Reject --hip-vmm when the selected backend is not HIP.

This installer update follows the HIP VMM access fix already merged in
main as ZeroDot1@899d84a (PR #1059). That fix grants access across the mapped
contiguous pool prefix as the VMM pool grows, avoiding runtimes that reject
permission updates limited to only the newest mapped subrange. Document the
new option, automatic target selection, and conservative fallback in the
HIP build guide.

Validation on CachyOS with ROCm 7.2.4 and an AMD Radeon RX 9070 XT (gfx1201),
using source revision ZeroDot1@12897de:

  • bash -n, installer --help, the interactive quit path, invalid-value
    handling, backend validation, and git diff --check succeeded.
  • Target-selection checks enabled VMM for gfx1201 and discrete-only target
    lists, kept it off for gfx1151 and mixed discrete/integrated targets, and
    verified explicit on/off overrides.
  • Separate HIP Release deployment builds completed for gfx1201 with VMM
    disabled (GGML_HIP_NO_VMM=ON) and enabled (GGML_HIP_NO_VMM=OFF).
  • ACE-Step Base Q8_0 generated valid 5.12-second, 48 kHz stereo WAV files in
    both configurations with the same prompt, seed 314159, five-second request,
    and two inference steps. Both files were byte-identical (SHA-256
    3a5dddd19a9924d403a278ab43af8b3786626783dcd76a64e825798ff8319b1b).
    Runtime logs confirmed VMM: no and VMM: yes respectively; both generations
    succeeded, so the prior invalid-argument failure did not reproduce on the
    fixed VMM path.
  • A single paired timing measured 9199.09 ms with VMM off and 8690.24 ms with
    VMM on. This is one sample per configuration and does not establish a
    general performance improvement.
  • The installer gfx1201 route was smoke-tested with a stub builder and
    temporary install paths; it passed --hip-vmm on, installed the launcher,
    and the launcher ran. HIP compilation and inference were tested separately.

Portable multi-architecture compilation was not performed on this machine.

Expose HIP virtual memory management as a validated --hip-vmm on|off option
in scripts/build_linux.sh. The Arch installer now selects this setting through
AUDIOCPP_HIP_VMM=auto|on|off. Auto enables VMM only when every requested GPU
target is a recognized discrete target (gfx1100, gfx1101, gfx1102, gfx1200,
or gfx1201); integrated, mixed, and unknown target sets stay on ggml's
conservative no-VMM default. Users can explicitly override the selection.
Reject the build option when the selected backend is not HIP.

This updates the installer in light of the HIP VMM access fix already merged
in main as 899d84a (PR 0xShug0#1059). The fix applies access permissions across the
mapped contiguous pool prefix when HIP grows its VMM pool, avoiding runtimes
that reject permissions applied only to the latest mapped subrange. Update the
Arch HIP documentation to explain the new default, override, and reason for
treating integrated or mixed targets conservatively.

Validation on CachyOS, ROCm 7.2.4, AMD Radeon RX 9070 XT (gfx1201), using the
current main source (12897de):

- `bash -n`, installer `--help`, the interactive quit path, invalid VMM value
  handling, and `git diff --check` succeeded. The build wrapper rejected
  `--hip-vmm` for a non-HIP backend as intended.
- Auto target selection chose VMM for gfx1201 and discrete-only target lists;
  it left VMM off for gfx1151 and mixed discrete/integrated targets. Explicit
  on/off overrides were also checked.
- Separate HIP Release deployment builds for gfx1201 completed with VMM off
  (`GGML_HIP_NO_VMM=ON`) and on (`GGML_HIP_NO_VMM=OFF`).
- ACE-Step Base Q8_0 generated a valid 5.12-second, 48 kHz stereo WAV in both
  builds using the same prompt, seed 314159, five-second request, and two
  inference steps. Both outputs were byte-identical (SHA-256
  3a5dddd19a9924d403a278ab43af8b3786626783dcd76a64e825798ff8319b1b). The
  GPU runtime reported `VMM: no` and `VMM: yes` respectively; both generations
  completed successfully, so the fixed VMM path no longer reproduced the
  earlier invalid-argument failure.
- One paired run measured 9199.09 ms with VMM off and 8690.24 ms with VMM on.
  This is a single sample per configuration, not a reliable performance
  benchmark and not evidence of a general speedup.
- The installer's detected-gfx1201 flow was smoke-tested with a stub build
  executable and temporary install paths. It passed `--hip-vmm on`, installed
  the launcher, and the launcher ran. Actual HIP compilation and model
  inference were tested separately as detailed above.

Portable multi-architecture compilation was not performed on this machine.
Add a validated --hip-vmm on|off option to the Linux build wrapper and
make the Arch AMD installer select HIP virtual memory management through
AUDIOCPP_HIP_VMM=auto|on|off. Auto enables VMM only when all requested GPU
targets are recognized discrete AMD targets (gfx1100, gfx1101, gfx1102,
gfx1200, or gfx1201). Integrated, mixed, and unknown target sets retain
the conservative default; explicit on/off overrides remain available.
Reject --hip-vmm when the selected backend is not HIP.

This installer update follows the HIP VMM access fix already merged in
main as 899d84a (PR 0xShug0#1059). That fix grants access across the mapped
contiguous pool prefix as the VMM pool grows, avoiding runtimes that reject
permission updates limited to only the newest mapped subrange. Document the
new option, automatic target selection, and conservative fallback in the
HIP build guide.

Validation on CachyOS with ROCm 7.2.4 and an AMD Radeon RX 9070 XT (gfx1201),
using source revision 12897de:

- bash -n, installer --help, the interactive quit path, invalid-value
  handling, backend validation, and git diff --check succeeded.
- Target-selection checks enabled VMM for gfx1201 and discrete-only target
  lists, kept it off for gfx1151 and mixed discrete/integrated targets, and
  verified explicit on/off overrides.
- Separate HIP Release deployment builds completed for gfx1201 with VMM
  disabled (GGML_HIP_NO_VMM=ON) and enabled (GGML_HIP_NO_VMM=OFF).
- ACE-Step Base Q8_0 generated valid 5.12-second, 48 kHz stereo WAV files in
  both configurations with the same prompt, seed 314159, five-second request,
  and two inference steps. Both files were byte-identical (SHA-256
  3a5dddd19a9924d403a278ab43af8b3786626783dcd76a64e825798ff8319b1b).
  Runtime logs confirmed VMM: no and VMM: yes respectively; both generations
  succeeded, so the prior invalid-argument failure did not reproduce on the
  fixed VMM path.
- A single paired timing measured 9199.09 ms with VMM off and 8690.24 ms with
  VMM on. This is one sample per configuration and does not establish a
  general performance improvement.
- The installer gfx1201 route was smoke-tested with a stub builder and
  temporary install paths; it passed --hip-vmm on, installed the launcher,
  and the launcher ran. HIP compilation and inference were tested separately.

Portable multi-architecture compilation was not performed on this machine.
@0xShug0
0xShug0 merged commit 83b8c6b into 0xShug0:main Oct 25, 2026
7 checks passed
cunba-ai pushed a commit to cunba-ai/audio.cpp that referenced this pull request Oct 28, 2026
…d staging) + Earshot VAD + BreezeTTS CUDA opts + Echo-TTS CFG + /health version

Upstream commits 899d84a..71f42b8 (22):
- fix HIP VMM access updates for growing pools (0xShug0#1059)
- gguf: numeric array metadata in one bulk fread (0xShug0#1072)
- Echo-TTS optional Joint-CFG (0xShug0#773); Sway time scheduling later
- validated HIP VMM defaults in Arch AMD installer (0xShug0#1080)
- HIP argsort extended to large rows (0xShug0#1076)
- Irodori-TTS MeanFlow support (0xShug0#1083)
- assets: direct uploads preserved in weight-norm tensor views (0xShug0#1081)
- HIP device weight uploads staged through bounded host buffer (0xShug0#1070)
- empty/null speech voice values treated as omitted (0xShug0#1086)
- redundant VoxCPM2 KV cache staging/reset avoided (0xShug0#1085)
- Drama3 device sampling default off (0xShug0#1087)
- Studio LoRA controls + shared adapter groups (0xShug0#1088)
- Arena styling alignment (0xShug0#1089)
- Earshot VAD native C++ port (0xShug0#1095)
- ASR VAD chunking loads any built-in VAD family (0xShug0#1096)
- /health reports build version + git commit (0xShug0#1097)
- BreezeTTS opt-in fused depth graph CUDA (0xShug0#1090); bf16 rounding fusion in rms_norm/add/SwiGLU (0xShug0#1091); batch-2 CFG decode (0xShug0#1092); option names normalized
- ci: best-effort HIP test release binaries (0xShug0#1100)
- Echo-TTS Sway time scheduling (0xShug0#1105)
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.

2 participants