Repository navigation
feat(gpu): add Linux AMD probes and tested 780M APU leasing - #135
Merged
Merged
Conversation
Owner
|
Thank you for this, and for the careful 780M validation. The dual-pool accounting and the exclusive-only APU policy are exactly the right calls. I'm landing it through #136, which keeps your commits and authorship and adds one commit on top:
This PR will show as merged once #136 lands. |
T-Crypt
added a commit
that referenced
this pull request
Oct 22, 2026
Linux AMD support (#135) with NVIDIA kept as the auto default
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.
Summary
Add experimental Linux AMD support through the existing
gpu.Probeinterface, now including physically validated Radeon 780M/Phoenix APU leasing. This replaces closed PR #132, which was withdrawn so APU implementation and testing could happen first.Adapter and selection
--gpu-backend auto|nvidia|amdin the daemon and generated service, and reuse backend selection in the swap benchmark.cardNnumbering, not HIP ordinals.APU safety policy
needs-mibcannot express both pools.Validation
Checked with the repository's Go 1.27.1 and exact linter version:
go build ./... && test -z "$(gofmt -l .)" && go vet ./... && go test ./...go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.14.0 run ./...— 0 issuesGOOS=windows go build ./... && GOOS=windows go vet ./...go test -race ./internal/gpu ./internal/broker ./internal/cli ./internal/server-count=3)/slotsdrain and handoff to a real GTT allocationReal 780M inference evidence
Used an existing 175 MiB EmbeddingGemma 2 GGUF, a 512-token context, and two CPU threads in a private Berth daemon/config/socket and an unused loopback port. Two requests returned finite normalized 768-dimensional embeddings. Berth confirmed the model's release before admitting the next 64 MiB GTT workload.
The isolated model process's only observed GPU was the selected 780M. A process-local Landlock allowlist denied access to other DRM nodes; environment selection alone was insufficient in the first aborted attempt. Landlock is a validation-helper-only requirement, not a Berth runtime dependency.
The final smoke used a 1 GiB host-RSS watchdog budget while preserving the same 2 GiB admission floor. Observed kernel RSS high-water was 297,431,040 bytes and observed GPU residency 181,530,624 bytes. These are smoke-test observations, not reservations, hard cgroup guarantees, throughput benchmarks, or full-context stress results.
Reserved UMA usage returned to 3,924,680,704 bytes, and GTT usage to 460,148,736 bytes, exactly matching their pre-test readings. Both unattributed baselines also returned exactly. Existing workload process identities were unchanged; no existing service was stopped or reconfigured, and no driver/BIOS settings were changed.
Repeatable commands, fixture gates, resource checks, prior failed/blocked attempts, and explicit limits are documented in
contrib/amd/README.md. Optional helpers are not part of CI or the runtime dependency chain.Explicit remaining limits