Ship one binary with NPU + ROCm + CUDA support, fix CLI flag precedence
All checks were successful
Mirror to GitHub / mirror (push) Successful in 2s
release / build (push) Successful in 2m51s

Adds breadmill's `full` feature (npu + rocm + cuda together) and switches
the release workflow to build with it. All three backends are ort's
load-dynamic (dlopen) mode, so combining them doesn't require the NPU/ROCm/
CUDA toolkits on the build host -- which backend is actually available is
resolved at runtime via ORT_DYLIB_PATH / the dynamic linker, per whichever
backend is selected for that run.

Also fixes a real bug this surfaced: backend selection checked
`config.model.backend == "rocm"` unconditionally in an if/else-if chain, so
an explicit --cuda (or --npu) flag silently lost to an unrelated `backend`
value already sitting in config.toml. CLI flags now always take priority
over config.

Version bump: breadmill 0.2.0 -> 0.2.1.
This commit is contained in:
Breadway 2026-07-03 22:06:47 +08:00
parent 2618a33fd5
commit fdf596e58a
5 changed files with 56 additions and 14 deletions

View file

@ -16,10 +16,15 @@ jobs:
"https://git.breadway.dev/${GITHUB_REPOSITORY}.git" src
- name: build
run: cd src && cargo build --release --locked
# --features full (breadmill's npu+rocm+cuda combined) ships one binary
# that can use any backend at runtime via --npu/--rocm/--cuda or
# `backend` in config.toml. All three are ort load-dynamic (dlopen)
# EPs, so this doesn't require the NPU/ROCm/CUDA toolkits to be
# present on the build host — see breadmill/Cargo.toml.
run: cd src && cargo build --release --locked --workspace --features full
- name: test
run: cd src && cargo test --release --locked --workspace
run: cd src && cargo test --release --locked --workspace --features full
- name: prepare artifacts
run: |