Skip to content

Add Intel XPU support to installer and qualification profiles - #28

Open
legobele wants to merge 1 commit into
flujo-app:mainfrom
legobele:feat/xpu-support
Open

Add Intel XPU support to installer and qualification profiles#28
legobele wants to merge 1 commit into
flujo-app:mainfrom
legobele:feat/xpu-support

Conversation

@legobele

@legobele legobele commented Sep 9, 2026

Copy link
Copy Markdown

What this does

Enables Intel GPU (XPU) nodes. The core Python code was already XPU-ready (hardware.py has xpu in ACCELERATOR_TYPES, both install scripts already accept DRIFT_DEVICE=xpu, device-portability tests already cover XPU) — the only thing actually blocking XPU was the packaging/CI layer hardcoding the CUDA torch build. This PR removes that block.

Changes (5 files, +33/-8)

  • desktop/build_desktop.py — the metrics gate now accepts either qualified torch build via a new QUALIFIED_TORCH_BUILDS = ("2.6.0+cu124", "2.6.0+xpu") constant instead of hard-rejecting anything that isn't 2.6.0+cu124. This was the single check that made XPU bundles fail the build.
  • .github/workflows/desktop.yaml — CI still installs the CUDA build (hosted runners have no Intel GPU), but both verify steps now accept either qualified build, so locally-built XPU bundles pass the same pipeline. Added a comment explaining the split.
  • scripts/run_external_model_qualification.py — registered windows-xpu / linux-xpu host profiles and added the require_device branch (torch.xpu.is_available()), mirroring the existing CUDA/MPS checks.
  • .github/workflows/qualify-model-matrix.yaml — intentionally did not schedule the XPU profiles yet (scheduling a profile with no matching self-hosted runner would queue forever). Left a NOTE in the workflow explaining exactly that, which also keeps the for profile in HOST_PROFILES gate test green. Happy to flip them into the required matrix as soon as an XPU runner exists.
  • README.md — system requirements now list Intel XPU as supported instead of "AMD and Intel GPU acceleration is not included", plus a driver note (DRIFT_DEVICE=xpu).

Deliberately out of scope

  • Dockerfile.public-route-cuda, public_route_image_contract.py, gate13/GCP lifecycle scripts and their tests: CUDA-route-specific by design, untouched.
  • qualification_cost_guard.py: GCP has no Intel-GPU VM shapes, nothing to add.
  • Historical evidence JSON under docs/evidence/: snapshots, never rewriting those.

Verification

  • py_compile clean on both edited Python files; both edited workflows parse as valid YAML.
  • Replicated the repo's own test_manual_workflow_separates_public_alpha_and_deferred_macos_profiles assertions standalone (full suite needs hivemind + a locked env sync, not available in this env): every HOST_PROFILES entry appears quoted in the workflow, scheduled/required profile strings unchanged — all pass.
  • Existing desktop/tests/test_build_desktop.py fixture uses 2.6.0+cu124, which remains accepted, so no test updates needed.

Honesty corner

Full disclosure: this change was vibecoded (AI-assisted) against a vibecoded codebase, on behalf of an Intel Arc user who wants to contribute their GPU to the mesh. The diff is small and each hunk maps to one hardcoded CUDA assumption. Tear it apart — that's what the PR is for. If you'd rather gate XPU bundles behind a flag or a separate workflow instead of the shared QUALIFIED_TORCH_BUILDS tuple, say the word.

Tested install path: DRIFT_DEVICE=xpu via install.sh / install.ps1 with torch 2.6.0+xpu on Intel Arc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant