ov-layers/skills/rocm/SKILL.md
AMD ROCm runtime, OpenCL, and GPU compute support via system packages. Use when working with AMD GPU computing, ROCm, HIP, OpenCL, or AMD GPU passthrough in containers.
npx skillsauth add overthinkos/overthink-plugins rocmInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Property | Value |
|----------|-------|
| Install files | layer.yml |
| Variable | Value |
|----------|-------|
| ROCM_PATH | /usr |
| Variable | Source | Example |
|----------|--------|---------|
| HSA_OVERRIDE_GFX_VERSION | KFD topology sysfs | 10.3.0 (RDNA2), 11.0.0 (RDNA3) |
| DRINODE | DRM render node enumeration | /dev/dri/renderD128 (typical), /dev/dri/renderD129 (multi-GPU) |
Both variables are not baked into the layer — they are auto-detected from host state at runtime and injected as container environment variables via appendAutoDetectedEnv() in ov/devices.go. The same function is called by ov config, ov start, and ov shell, so interactive shells and deployed services see the identical env set.
HSA_OVERRIDE_GFX_VERSION is read from /sys/class/kfd/kfd/topology/nodes/*/properties (gfx_target_version field).DRINODE is selected by walking /dev/dri/renderD* and picking the node that matches the AMD PCI device exposed to the container.Override either with -e HSA_OVERRIDE_GFX_VERSION=X.Y.Z or -e DRINODE=/dev/dri/renderD129. See /ov:doctor (Hardware Detection) for how the probe runs on the host side, and /ov-layers:nvidia (DRINODE Auto-Injection) for the NVIDIA counterpart using the same mechanism.
security:
group_add:
- keep-groups
Uses keep-groups to preserve host supplementary groups (video, render) inside the container. This is the standard approach across all layers -- Podman's keep-groups is mutually exclusive with explicit group names.
RPM (Fedora system repos): rocm-hip-runtime, rocm-opencl, rocm-clinfo, rocm-smi
AMD GPU support requires:
/dev/kfd device (auto-detected by ov)/dev/dri/renderD* render nodes (auto-detected)video and render groups (ov udev status to check)amdgpu kernel driver loadedRun ov doctor to verify detection. Run ov udev install to set up device permissions.
# image.yml -- standalone AMD GPU image
my-amd-app:
base: fedora
layers:
- rocm
- my-app
# Check AMD GPU detected on host
ov doctor | grep "AMD GPU"
# Verify inside container
ov shell my-amd-app -c "clinfo --list"
ov shell my-amd-app -c "rocm-smi"
ov shell my-amd-app -c "echo \$HSA_OVERRIDE_GFX_VERSION"
/ov-layers:nvidia -- NVIDIA GPU counterpart (runtime libs + CDI), shares appendAutoDetectedEnv() DRINODE injection/ov-layers:cuda -- NVIDIA CUDA toolkit (stacked on nvidia)/ov-layers:python-ml -- ML Python environment (currently depends on cuda; ROCm equivalent is a future direction)/ov:doctor -- Host AMD GPU detection (/dev/kfd, render nodes, driver status)/ov:shell -- Interactive shells receive the same auto-detected HSA_OVERRIDE_GFX_VERSION + DRINODE envs/ov:udev -- Device permission management for /dev/kfd and /dev/dri/renderD*/ov:config -- Runtime GPU env injection at deployment time (same auto-detect path)/ov:start -- Runtime GPU env injection at service start timeNot directly used in any current image definition. Available as a standalone layer for AMD GPU support. The NVIDIA base image (/ov-images:nvidia) is the currently-shipped GPU image; an AMD counterpart can be composed by substituting this layer.
Use when the user asks about:
/dev/kfd device accessHSA_OVERRIDE_GFX_VERSION configuration/ov:layer — layer authoring reference (layer.yml schema, task verbs, service declarations)/ov:test — declarative testing (tests: block, ov image test, ov test)tools
Use when authoring or modifying a charly PLUGIN — a candy with a `plugin:` block that contributes Providers (verbs/kinds/deploy-targets/steps/builders/commands), its own CUE schema, builtin (compiled-in) or external (out-of-tree git repo). Covers the unified Provider model, the per-plugin CUE-schema contract (single source → Go params for dev + schema-over-Describe RPC for runtime), the SDK, and the loader.
tools
The CUE data-validation / configuration CLI (cue), pinned to v0.16.1. Use when working with the cue candy, installing the cue binary into a box or onto a target:local dev host, or running the offline schema-vendoring pipeline that feeds charly's egress validation.
tools
CUE EGRESS validation — validating (and, where it adds value, generating) the config files charly WRITES to a system BEFORE the bytes hit disk. MUST be invoked before working on charly/egress.go, the vendored schemas under candy/plugin-egress/egress-schemas/vendor/, the ValidateEgress / registerVendoredEgressKind path, the offline `task cue:vendor` pipeline, or adding an egress schema for any written artifact (cloud-init, k8s manifests, traefik routes, runtime config, install ledger, systemd/quadlet units, ssh_config, libvirt XML).
tools
Kubernetes cluster-probe declarative check verb — the `kube:` check verb (nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs) served out-of-process by the candy/plugin-kube plugin (vendored client-go; no external kubectl required).