QVAC-23802 feat[audiogen-ggml]: add an opt-in cuda feature - #4041
Open
Zbig9000 wants to merge 1 commit into
Open
QVAC-23802 feat[audiogen-ggml]: add an opt-in cuda feature#4041Zbig9000 wants to merge 1 commit into
Zbig9000 wants to merge 1 commit into
Conversation
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>
Contributor
Review StatusCurrent Status: ❌ PENDING Pending reviews: Needs 1 Management or Team Lead, and 1 more from Management, Team Lead, or Member. |
Contributor
License compliance — cleanNo 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):
|
ishanvohra2
approved these changes
Aug 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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'scudafeature — it previously exposed only metal / vulkan / opencl). This addon was the remaining gap: its manifest hardcodedspeech-cpp[audiogen,vulkan]for desktop and exposed onlyENABLE_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 thecudamanifest feature.vcpkg.json: acudafeature depending onspeech-cpp[cuda], which in turn pullsggml-speech[cuda].Off by default, and excluded on Apple and Android to match
speech-cpp's ownsupports: "!osx & !ios & !android", so every current build resolves exactly as before.nvccis needed only on the build host; the runtime needs just the driver. No CUDA-specific staging was required — the backend install plumbing already iteratesGGML_AVAILABLE_BACKENDS, so a CUDA-enabled ggml is picked up by the existing code.Verification
vcpkg install --dry-run --x-feature=cuda --triplet=x64-linuxagainst this manifest resolves the whole chain: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=cudaXXwarnsnot a feature supported, which thecudarun 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-integrationpasses on CUDA and CPU, MiniMaxtest-minimax-qualitypasses withMM3_DEVICE=gpu, and the full speech superbuild compiles withGGML_CUDA=ON(661/661 targets,ctest -L unit62/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_CUDAlane in the monorepo;tts-ggmlmerged three CUDA engine tickets (Chatterbox, Supertonic, Parler-TTS) and would want the identical two-hunk change if the platform owners want to generalise it.