[Engine] strata-sycl.sh drops every STRATA_* variable whose value is 0, so the documented STRATA_PREFILL_MMQ=0 (FP16 prompt path) never reaches the engine; "off" works by accident
Maintainers usually reply within 3 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 74/100
Research direction
Start with the environment forwarding loop in sycl/serve/strata-sycl.sh and trace how its setting array is built from the config environment. Reproduce with STRATA_PREFILL_MMQ=0 bash -x sycl/serve/strata-sycl.sh --version and inspect the docker run arguments; compare with =off. Done when the documented value 0 reaches the engine as STRATA_PREFILL_MMQ=0 and the launcher’s other switch behavior remains understood.
Written by the indexing model from the issue text.
Description
Area
[Engine] (the SYCL serve path: sycl/serve/strata-sycl.sh, the config's exe on Intel)
Desktop app, Terminal or source?
Source
What happened
The launcher forwards STRATA_* (and ONEAPI_/UR_/IGC_/SYCL_/ZES_) variables into the container, but skips every one whose value is 0 or empty:
for k in "${!setting[@]}"; do
# the engine tests the switches by presence: a value of 0 (or empty) means "not set", so it is not passed on
case "${setting[$k]}" in 0|"") ;; *) envs+=(-e "$k=${setting[$k]}") ;; esac
done
That is right for a switch whose unset default is off, and wrong for a three-state switch where unset means "auto". STRATA_PREFILL_MMQ is one: unset = auto on Battlemage, 0 = the FP16 path. 0 is the documented value (docs/INTEL_INT8_EXPERTS.md: "STRATA_PREFILL_MMQ=0: the FP16 path everywhere"; the 0.2.0 release notes), and it is what the engine itself prints at start: int8 prompt experts are on (Battlemage default, auto); STRATA_PREFILL_MMQ=0 turns them off. A config with "env": {"STRATA_PREFILL_MMQ": "0"} (the documented way to give the engine a setting: the server puts the env block into the launcher's environment) starts the auto path anyway, and the log advises the value that was just dropped.
Trace, bash -x sycl/serve/strata-sycl.sh --version:
- with
STRATA_PREFILL_MMQ=0theexec docker runline carries only the launcher's three defaults:-e STRATA_VERIFY_NO_HOST=1 -e STRATA_VERIFY_DEVICE_PLAN=1 -e STRATA_STAGER_THREADS=12; - with
STRATA_PREFILL_MMQ=offit also carries-e STRATA_PREFILL_MMQ=off. "off" works only becausechoose_mode()insycl/include/strata/prefill/esimd_moe.hppparses a non-digit string as 0, which no document says.
Seen with the real engine (2026-10-26, v0.2.6 build): an A/B arm whose config env had STRATA_PREFILL_MMQ=0 logged int8 prompt experts are on (Battlemage default, auto) and ran at the auto path's speed (1115 tok/s on a 6,345-token prompt, against 1316 with "off"; the numbers are in the int8 issue I am filing next).
The launcher's own header example, "env": {"STRATA_VERIFY_NO_HOST": "0"}, works by accident: the 0 replaces the launcher's default 1 in the setting array and is then dropped, and the engine's unset default happens to be the same as 0. Other =0 forms the Intel docs give and the launcher cannot deliver: STRATA_I8_FORCE=0, STRATA_I8_WG=0, STRATA_MMVQ_A2=0, STRATA_MMVQ_WIDE_32=0, STRATA_LEND_MIRROR=0, STRATA_ARENA_ALIAS_CHECK=0, STRATA_SPLIT_HEADROOM=0, STRATA_MIRROR_MIB=0 (docs/INTEL.md, INTEL_ARC.md, INTEL_INT8_EXPERTS.md). I did not check which of those have an unset default equal to 0 and which do not.
Expected: a value the config's env block names reaches the engine as written. If some engine switches really are presence-tested (so that K=0 would turn them on), a short list of those names to keep dropping, or a list of the three-state names to pass through, would avoid this; dropping every 0 silently is what bites.
Smallest steps or command that reproduce it
- Intel install per docs/INTEL_ARC.md.
- In the run config:
"env": {"STRATA_PREFILL_MMQ": "0"}; start the server; the engine log saysint8 prompt experts are on (Battlemage default, auto). - Change the value to
"off": no int8 lines, FP16 timings. - Without a GPU:
STRATA_PREFILL_MMQ=0 bash -x sycl/serve/strata-sycl.sh --version 2>&1 | grep 'exec docker run'has no-e STRATA_PREFILL_MMQ; with=offit has.
Reproduction status
Reproduced locally
Strata version
Source v0.2.7.1 (46c152a1), engine 0.1.53 built from it; strata-sycl.sh is identical on main today and was the same on v0.2.6.
Graphics card, memory and system
Intel Arc Pro B70 32 GB · 62 GB RAM · Debian 13 (kernel 7.2.6, xe driver); engine in the strata-sycl-dev container
Model, size and settings
Qwen3.8-Flash-Next IQ3_S (native pack, --stream-experts, --prefill 4096), 256K context, pictures off
Logs
The trace lines above, and the engine's int8 prompt experts are on (Battlemage default, auto); STRATA_PREFILL_MMQ=0 turns them off under a config env of 0.
- Dominant language
- C++
- Stars
- 11.6k
- Forks
- 1k
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Niko1221/Strata
-
Difficulty 1/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Niko1221/Strata#4528 · 2 comments ·
Maintainers usually reply within 3 days
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 66/100
madskristensen/FileIcons#385 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
microsoft/SysmonCommon#26 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
espressif/esp-matter#1913 ·
-
bug priority: low
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
chipsalliance/verible#2644 ·