fix(dl): route compression-off through ggml's own knob (3.1.1)#46
Merged
Conversation
….1.2
The 3.1.1 fix passed --compress-mode=none as a raw base CUDA flag, but
ggml-cuda appends -compress-mode=${GGML_CUDA_COMPRESSION_MODE} (default
"size") AFTER base flags, and nvcc takes the last value — the v3.1.1
build's 'incompatible redefinition' warning proved our flag was being
silently overridden and the pack would ship driver-incompatible anyway.
ggml's own knob is the only effective lever; it accepts "none".
There was a problem hiding this comment.
Pull request overview
This PR fixes the CUDA fatbin compression setting for the BACKEND_DL build flavor by routing “compression off” through ggml’s dedicated CMake knob (so it can’t be overridden by ggml-cuda’s later-appended nvcc flags), and bumps the release version to 3.1.2 with dependency metadata kept in sync.
Changes:
- Switch BACKEND_DL builds from using base
CMAKE_CUDA_FLAGStoGGML_CUDA_COMPRESSION_MODE=none. - Bump package version from 3.1.1 → 3.1.2.
- Sync
optionalDependenciesandpackage-lock.jsonto 3.1.2.
Reviewed changes
Copilot reviewed 2 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| scripts/build.js | Uses ggml’s compression-mode knob for BACKEND_DL to reliably disable fatbin compression. |
| package.json | Bumps root package version to 3.1.2 and updates optional dependency versions to match. |
| package-lock.json | Reconciles lockfile package version and optional dependency versions to 3.1.2. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
nvcc treats a colliding option (passed twice, last wins) as a warning and proceeds — which is how the v3.1.1 compress-mode fix shipped silently overridden by ggml's own -compress-mode=size. Any redefinition means a CUDA build flag is not what we think it is; catch it at minute ~3 of the build instead of at the L4 gate two hours later.
The v3.1.1 tag produced zero artifacts (run cancelled pre-publish, no npm packages, no binaries, no release); the tag ref will be recreated on this fix's merge commit rather than burning the version number.
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.
Supersedes the 3.1.1 attempt, whose fix was silently ineffective: it passed
--compress-mode=noneas a raw base CUDA flag, but ggml-cuda appends its own-compress-mode=${GGML_CUDA_COMPRESSION_MODE}(ggml/src/ggml-cuda/CMakeLists.txt:210, knob default "size" atggml/CMakeLists.txt:211) after base flags — and nvcc takes the last value. The v3.1.1 build emittednvcc warning : incompatible redefinition for option 'compress-mode', the last value of this option was used, meaning the pack would have shipped driver-incompatible again. The run was cancelled before anything published or uploaded (npm 3.1.1 does not exist; the 3.1.1 binaries slot is empty; the tag points at a run that produced nothing).This also sharpens the root cause one final step: the compression was never nvcc's implicit default — ggml explicitly opts into
sizecompression via its knob. The knob acceptsnone, which is the setting this flavor needs: NVIDIA documents the new compress modes as incompatible with pre-CUDA-12.4 drivers (r550), and old-driver fleets (Cloud Run L4 = 535/12.2) are the DL pack's primary audience — proven fatal on the v3.1.0 rig run ("device kernel image is invalid" on every kernel load).Stays on 3.1.1: the tag produced zero artifacts (cancelled pre-publish), so the ref is recreated on this merge commit instead of burning the number. Carries the version + optionalDependencies sync + lockfile reconcile. After merge: tag
v3.1.2→ pipeline → the L4 gate proves the fix (a correct build shows no compress-mode redefinition warning) →publish-dlsigns.🤖 Generated with Claude Code