Skip to content

QVAC-23802 feat[audiogen-ggml]: add an opt-in cuda feature - #4041

Open
Zbig9000 wants to merge 1 commit into
mainfrom
QVAC-23802/audiogen-ggml-cuda
Open

QVAC-23802 feat[audiogen-ggml]: add an opt-in cuda feature#4041
Zbig9000 wants to merge 1 commit into
mainfrom
QVAC-23802/audiogen-ggml-cuda

Conversation

@Zbig9000

Copy link
Copy Markdown
Contributor

Status

Ready. Final link of QVAC-23802 (AudioGen CUDA for ACE-Step and MiniMax). One commit, 19 added lines, no behaviour change to any existing build.

Why

The engine work merged in tetherto/qvac-ext-lib-whisper.cpp#162 and the ports in tetherto/qvac-registry-vcpkg#326 (which added speech-cpp's cuda feature — it previously exposed only metal / vulkan / opencl). This addon was the remaining gap: its manifest hardcoded speech-cpp[audiogen,vulkan] for desktop and exposed only ENABLE_VULKAN, so a CUDA build was not selectable from here and the merged CUDA support stayed unreachable for consumers.

What changes

Mirrors the existing vulkan plumbing exactly:

  • CMakeLists.txt: option(ENABLE_CUDA ...) appending the cuda manifest feature.
  • vcpkg.json: a cuda feature depending on speech-cpp[cuda], which in turn pulls ggml-speech[cuda].

Off by default, and excluded on Apple and Android to match speech-cpp's own supports: "!osx & !ios & !android", so every current build resolves exactly as before. nvcc is needed only on the build host; the runtime needs just the driver. No CUDA-specific staging was required — the backend install plumbing already iterates GGML_AVAILABLE_BACKENDS, so a CUDA-enabled ggml is picked up by the existing code.

Verification

vcpkg install --dry-run --x-feature=cuda --triplet=x64-linux against this manifest resolves the whole chain:

ggml-speech[core,cuda,vulkan]:x64-linux@2026-08-21
speech-cpp[audiogen,core,cuda,vulkan]:x64-linux@2026-08-24#2

CUDA is additive alongside Vulkan, and the engine's validated-GPU preference selects CUDA when both backends are compiled in. A control run with a deliberately bogus --x-feature=cudaXX warns not a feature supported, which the cuda run does not — confirming the feature is recognised rather than silently ignored.

Engine-level CUDA behaviour behind this feature was validated on an RTX 5090 (CUDA 12.9, sm_120) while landing #162 / #326: ACE-Step test-acestep-integration passes on CUDA and CPU, MiniMax test-minimax-quality passes with MM3_DEVICE=gpu, and the full speech superbuild compiles with GGML_CUDA=ON (661/661 targets, ctest -L unit 62/62).

Out of scope

Prebuilds stay Vulkan-only. The reusable prebuild workflow provisions a Vulkan SDK (include-vulkan-sdk: true) and has no CUDA equivalent, so shipping CUDA artifacts needs nvcc on the builders — shared-CI-infra work rather than a change to this package. This PR only makes a CUDA build selectable.

Note this is the first ENABLE_CUDA lane in the monorepo; tts-ggml merged three CUDA engine tickets (Chatterbox, Supertonic, Parler-TTS) and would want the identical two-hunk change if the platform owners want to generalise it.


QVAC-23802 landed CUDA for ACE-Step and MiniMax-Music3 in the engine
(qvac-ext-lib-whisper.cpp#162) and published it through the ports
(qvac-registry-vcpkg#326, which added speech-cpp's cuda feature), but the
addon could not select it: its manifest hardcoded speech-cpp[audiogen,
vulkan] and exposed only ENABLE_VULKAN, so a CUDA build was unreachable
from here.

Mirror the existing vulkan plumbing: an ENABLE_CUDA option that appends
the cuda manifest feature, which pulls speech-cpp[cuda] and hence
ggml-speech[cuda]. Off by default, and excluded on Apple and Android to
match speech-cpp's own `supports` expression, so every current build
resolves exactly as before. nvcc is needed only on the build host; the
runtime needs just the driver. No CUDA-specific staging is required --
the backend install plumbing already iterates GGML_AVAILABLE_BACKENDS.

Verified with a vcpkg dry-run (x64-linux, this manifest): the graph
resolves to speech-cpp[audiogen,core,cuda,vulkan]@2026-08-24#2 and
ggml-speech[core,cuda,vulkan]@2026-08-21. CUDA is additive next to
Vulkan, and the engine's validated-GPU preference selects CUDA when both
backends are compiled in.

Prebuilds stay Vulkan-only: the reusable prebuild workflow provisions a
Vulkan SDK (include-vulkan-sdk) and has no CUDA equivalent, so shipping
CUDA artifacts needs nvcc on the builders -- shared-CI-infra work, not
this package.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Review Status

Current Status: ❌ PENDING
Approvals so far: none

Pending reviews: Needs 1 Management or Team Lead, and 1 more from Management, Team Lead, or Member.

@github-actions

Copy link
Copy Markdown
Contributor

License compliance — clean

No new dependency license findings in this PR.

Warn-only (shadow) mode — this check does not block merges yet.

Updated automatically by the canonical license compliance workflow.

NOTICE presence (advisory)

Missing NOTICE (advisory, does not block):

  • ./.github/actions/release-merge-guard
  • ./docs/website
  • ./packages/ggml-coload-smoke
  • ./packages/fabric/test/integration
  • ./packages/inference-addon-cpp/mobile
  • ./packages/sdk/e2e
  • ./packages/llm-llamacpp/benchmarks/performance
  • ./packages/llm-llamacpp/benchmarks/server
  • ./packages/vla-ggml/sim/server
  • ./packages/embed-llamacpp/benchmarks/performance
  • ./packages/embed-llamacpp/benchmarks/server
  • ./packages/asr-ggml/benchmarks/server

@Zbig9000 Zbig9000 added tier1 verified Retired - no longer authorizes CI. Fork PRs use fork-ci environment approval. run-desktop-addon-tests CI: run desktop integration tests (requires verified) labels Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-desktop-addon-tests CI: run desktop integration tests (requires verified) tier1 verified Retired - no longer authorizes CI. Fork PRs use fork-ci environment approval.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants