caldrix doctor
caldrix doctor reports, for each of the three lanes (Apple GPU through Metal, AMD GPU through HIP, the
CPU), whether this machine can use it and why, then what Inferno does not run. It reports only what it
probed, launches no kernel, and exits with status 1 when no lane is usable.
Run it
caldrix doctor
On a Linux x86-64 machine without an AMD GPU, the v0.1.0 release installed with install.sh
printed the output below, with one change: its last two blocks, model support and not supported,
are shown as the current binary prints them, not as v0.1.0 did. Later versions print more than this
capture shows: an index section, an ollama cache section and a dense snapshots section, and each
lane's capability vector (features= on cpu and hip, family= and simdgroup_bf16= on metal).
caldrix 0.1.0 (1b2f29dd1c13, x86_64-linux)
lanes
metal no the Metal lane exists on macOS only; speculation=no
hip no the HIP runtime did not load: dlopen libamdhip64.so: libamdhip64.so: cannot open shared object file: No such file or directory; speculation=no
cpu usable x86-64-v3 (12 physical cores, cgroup quota 8); cc at /usr/bin/cc; libm glibc 2.41; speculation=yes
model support
Inferno runs quantized GGUF (Q4_K_M, Q8_0) on the metal and hip lanes and on the cpu lane (a desk reading, not a run); quantized safetensors checkpoints other than bitsandbytes nf4 (densified at fetch) and NVIDIA GPUs are not supported
Inferno runs Qwen3.5 on the cpu lane only (x86-64-v3; a desk reading, not a run); the hip and metal lanes refuse it, though its token gates ran on one MI300X and on one Apple M1 Max
images on metal: no
images on hip: no
images on cpu: yes (SmolVLM, 64 tokens per 512-px tile)
not supported
none
no kernel was launched; `caldrix run` is what shows a lane works
Reading the report
- The first line is
caldrix --version: the version, the commit the binary was built from (unknown commitfor a build outside the release script) and the platform. laneshas one line per lane, in the order--backend autotries them:metal,hip,cpu. Each saysusablewith what was found, ornowith the reason.caldrix runandcaldrix servewith--backend auto(the default) take the first usable lane.speculation=yesorspeculation=noends each lane line: whether the lane can check a draft model's guesses, so--draft-modelcan speculate there (run.md). It reports what the build supports, not a measurement; todaycpuandhipsayyes.model supportsays which model formats Inferno runs on which lanes (quantized GGUF) and where Qwen3.5 (Qwen3_5ForCausalLM) runs:caldrixruns it on thecpulane only (models.md). Then oneimages on <lane>:line per lane, in the lanes' order:yeswhere a model that takes images runs on that lane (today SmolVLM,smolvlm-256m, oncpu: 64 prompt tokens for each 512-pixel tile), elseno(run.md). Like the rest of the block, it says what this build supports, not what was probed on this machine.not supportedlists what the probes found that Inferno does not run. When a device under/sys/class/drmreports NVIDIA's vendor id, a line says an NVIDIA device is present and not supported; otherwise it readsnone.- The last line is a reminder: the report comes from probes, and only
caldrix runshows a lane actually works.
What each lane needs
metal
- macOS. On any other system the line reads
the Metal lane exists on macOS only. - A binary built with Metal support; the macOS release archive is. Otherwise the line says the binary was
built without the
metalfeature. - A Metal device. When the device query fails, the line reads
no Metal device:and the error. - When usable, the line names the device. The working-set limit is not probed.
hip
- Linux. On any other system:
the AMD lane runs on Linux only. - The HIP runtime (
libamdhip64.so) loads and reports a device. The line reports what happened: the runtime did not load (with the loader's error), it loaded and reported no device, or a HIP call failed. A GPU architecture other thangfx942is reported as a failed call. - hipBLASLt: a
libhipblaslt.so*file under$ROCM_PATH/lib, or/opt/rocm/libwhenROCM_PATHis unset. The line names the directory it searched. ld.lld: theINFERNO_LLDvariable, else theld.lldinstalled besidecaldrix, else one onPATH.- When usable, the line names the GPU architecture, its compute units and VRAM, the hipBLASLt files and
where
ld.lldis.
cpu
- Linux. On any other system:
the CPU lane is built for Linux only. - An x86-64 instruction set at
x86-64-v2or above. Below that:this host is below x86-64-v2; the CPU lane cannot run here. - A C compiler,
cc, onPATH: the lane links its kernels with it when the model loads. - When usable, the line names the instruction-set row, the physical cores (and the cgroup CPU quota
when one is set, as in a container), where
ccis, and the libm version.
Exit status
| Status | When |
|---|---|
0 | at least one lane is usable |
1 | no lane is usable |
2 | an argument was given; caldrix doctor takes none |
Next
A lane that says no names what is missing; troubleshooting.md has the fixes. With a
usable lane, ask a model something: run.md.