Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[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

Abierto Apto para principiantes
#4,546 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 3 días

@ctr-137 ya está trabajando en esto.

Desde el 29/10/2026.

  • #4639 de @ctr-137 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
74/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
bash, cpp, docker
Área
backend, cli

Línea de trabajo

Empieza por el bucle de propagación del entorno en sycl/serve/strata-sycl.sh y sigue cómo se construye el array setting a partir del entorno de configuración. Reproduce el caso con STRATA_PREFILL_MMQ=0 bash -x sycl/serve/strata-sycl.sh --version e inspecciona los argumentos de docker run; compáralo con =off. Se considera terminado cuando el valor documentado 0 llega al motor como STRATA_PREFILL_MMQ=0 y se entiende el comportamiento de los demás interruptores del lanzador.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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=0 the exec docker run line 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=off it also carries -e STRATA_PREFILL_MMQ=off. "off" works only because choose_mode() in sycl/include/strata/prefill/esimd_moe.hpp parses 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
  1. Intel install per docs/INTEL_ARC.md.
  2. In the run config: "env": {"STRATA_PREFILL_MMQ": "0"}; start the server; the engine log says int8 prompt experts are on (Battlemage default, auto).
  3. Change the value to "off": no int8 lines, FP16 timings.
  4. 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 =off it 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.

Lenguaje dominante
C++
Estrellas
11.6k
Forks
1k
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Niko1221/Strata

Todos los issues de Niko1221/Strata

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.