Pull requests / #2115

#2115 setup: the SYCL setup on an integrated Arc (xe): native launcher, a RAM fit rule, no KV streaming

open · @andersson82 · 0 comments · View on GitHub

Setup & installServer & APIAMD / HIPModels & quantsDocumentationWindows

Description

## Title
setup: the SYCL setup on an integrated Arc (xe): native launcher, a RAM fit rule, no KV streaming

Issue: none. **Depends on #2114** (the launcher and the iGPU memory query): until that one is merged this PR's diff
also shows its commit; the change of this PR is the last commit.

## Summary
`./setup.sh --backend sycl` on a PC whose only Intel GPU is integrated (an Intel GPU at PCI `00:02.0` on `xe`) stopped
with "no Intel Arc found". It now finds the GPU, checks that oneAPI and the engine build are on the PC, offers the
sizes that fit the RAM, and writes a config for `sycl/serve/strata-sycl-native.sh` (no Docker).

## What changed
- `sycl/setup_intel.py`:
  - `intel_gpus` lists the integrated GPU (on `xe`) with setup's unified-memory fields; `i915_igpus` finds one on `i915`,
    for which setup stops and names the kernel command line that moves it to `xe`.
  - `sycl_engine(igpu=True)` also needs `/opt/intel/oneapi/setvars.sh` (or `ONEAPI_ROOT`) and says how to build natively.
  - `to_sycl_igpu`: the PC's paths, the launcher as `exe`, `--stream-experts`, no `--kv-resident` (the KV is in the same
    RAM either way), the reserve as on a card (1,024 MiB up to 32K, 2,048 above; a given one is kept), `--draft-vocab en`,
    `SYCL_CACHE_PERSISTENT=1` on the 140T only (it crashed on Xe2), `STRATA_SYCL_BIN` for an AOT build.
  - The fit rule: shard 1 + 20 GiB <= RAM (measured: 10-13 GiB left with a 36.5 GiB shard 1, 3-4 GiB left with 43.8 GiB
    did not run well). The size menu marks the sizes that need more and recommends the first that fits; a size that does
    not fit is asked about (`--model X --yes` installs it anyway); `--check` says the same per model.
  - setup's AMD wording (BIOS carve-out, "this AMD card") is rewritten for an iGPU.
- `tools/test_setup_sycl.py`: 6 new tests (detection on xe and i915, the config, the fit rule, the persistent cache, the launcher's binary path).
- `docs/INTEL.md`: setup's bullet and a "With setup" paragraph in "Integrated Arc".

Left alone: discrete cards. Every new branch needs the GPU at `00:02.0`, where a card behind a PCIe port never is, so
their config and messages are unchanged. `setup.py` is not touched.

## How I checked
- `python tools/test_setup_sycl.py`: 23 of 23 pass. All other `tools/test_setup_*.py` pass except
  `test_setup_engine_hash.py`, which fails the same 2 tests on a clean `origin/main` (a release download returns 404).
- On the Arc 140T (Core Ultra 9 285H, 62 GiB, Fedora 44, `xe`, oneAPI 2026.0), from this branch:
  `./setup.sh --backend sycl --family coder --model IQ1_M --context 98304 --no-start --yes` ran through and wrote the
  config of the engine PR's docs (the one measured there) less `"fit_max_tokens"`, and `run-coder-iq1_m.sh`.

Not tested:
- A discrete Intel card with this branch (I have none); the unit tests for the card path still pass.
- A PC with a discrete card and an iGPU together (setup should pick the card; not run).
- Another integrated GPU than the 140T, an iGPU on `i915` on real hardware (the message is unit-tested only), Windows.
- The interactive size menu by hand (unit-tested; the real run used `--model IQ1_M --yes`).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Related on strata.com

Editorial links to help you install, pick models, or read release notes — not part of the upstream thread.