AMD ROCm GPU inference for Linux. llama.cpp + HIP backend for RDNA 3.
Find a file
Claude 661d37c5c1
style(ax): rename loop variable e→envEntry for AX naming compliance
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 08:25:10 +01:00
.forgejo/workflows ci: add Forgejo Actions test and security scan workflows 2026-02-23 03:28:08 +00:00
docs docs: archive completed phase 1-4 plans 2026-02-24 19:42:07 +00:00
internal feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00
backend.go feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00
CLAUDE.md fix(dx): audit coding standards and add tests for untested paths 2026-03-17 08:50:17 +00:00
discover.go feat(ax): pass 1 — remove banned imports, AX naming, test coverage 2026-03-31 08:24:58 +01:00
discover_test.go feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00
go.mod feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00
go.sum feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00
model.go feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00
README.md docs: add README with quick start and docs links 2026-02-20 15:11:26 +00:00
register_rocm.go feat(ax): apply RFC-025 AX compliance review 2026-03-31 07:33:47 +01:00
rocm.go feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00
rocm_benchmark_test.go feat: benchmark suite for decode speed, TTFT, and concurrent throughput 2026-02-19 23:16:40 +00:00
rocm_integration_test.go feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00
rocm_stub.go feat(ax): apply RFC-025 AX compliance review 2026-03-31 07:33:47 +01:00
server.go feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00
server_test.go style(ax): rename loop variable e→envEntry for AX naming compliance 2026-03-31 08:25:10 +01:00
vram.go feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00
vram_test.go feat(ax): pass 2 — replace banned imports, rename variables, add AX comments 2026-03-31 08:24:34 +01:00

go-rocm

AMD ROCm GPU inference for Linux via a managed llama-server subprocess. Implements the inference.Backend and inference.TextModel interfaces from go-inference for AMD RDNA 3+ GPUs (validated on RX 7800 XT with ROCm 7.2). Uses llama-server's OpenAI-compatible streaming API rather than direct HIP CGO bindings, giving access to 50+ GGUF model architectures with GPU crash isolation. Includes a GGUF v2/v3 binary metadata parser, sysfs VRAM monitoring, and model discovery. Platform-restricted: linux/amd64 only; a safe stub compiles everywhere else.

Module: forge.lthn.ai/core/go-rocm Licence: EUPL-1.2 Language: Go 1.25

Quick Start

import (
    "forge.lthn.ai/core/go-inference"
    _ "forge.lthn.ai/core/go-rocm"  // registers "rocm" backend via init()
)

// Requires llama-server compiled with HIP/ROCm on PATH
model, err := inference.LoadModel("/path/to/model.gguf")
defer model.Close()

for tok := range model.Generate(ctx, "Hello", inference.WithMaxTokens(256)) {
    fmt.Print(tok.Text)
}

Documentation

  • Architecture — subprocess design rationale, inference flow, server lifecycle, GGUF parser, VRAM monitoring
  • Development Guide — prerequisites (ROCm, llama-server build), test commands, benchmarks
  • Project History — completed phases, commit hashes, known limitations

Build & Test

go test ./...                             # unit tests, no GPU required
go test -tags rocm ./...                  # integration tests and benchmarks (GPU required)
go build ./...

Licence

European Union Public Licence 1.2 — see LICENCE for details.