Compile bug: SYCL AOT build for mtl-m (Xe-LPG) fails: `dpas.nosrc0` intrinsic not supported, introduced by d81d0d8fb

Aperta
#31,033 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
1-2 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
cmake, cpp, linux

Direzione di ricerca

Start with the regression commit d81d0d8fb95e52a66992bcfc212b1891b4d2f94a and the XMX implementation at ggml/src/ggml-sycl/esimd.hpp:1036, where xmx::dpas is called. Reproduce using the provided CMake configuration for GGML_SYCL on mtl-m and inspect how AOT code generation handles that kernel. Done means AOT compilation succeeds on Xe-LPG using a supported DPAS form or by excluding the unsupported kernels for that target.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug-unconfirmed
Git commit
1ab09d632ebc30f171f58547a1110f8d6e9546c0 (b11834)
Operating systems

Linux

GGML backends

SYCL

Problem description & steps to reproduce

Compiling llama.cpp with the SYCL backend using AOT compilation for Meteor Lake iGPU (-device mtl-m, Xe-LPG) fails since d81d0d8fb (b11821, PR #29864 "Multi-column on Intel XMX matrix engines refactored"). The new XMX kernels call xmx::dpas (ggml/src/ggml-sycl/esimd.hpp:1036), which the compiler lowers to the llvm.genx.dpas.nosrc0 intrinsic. This intrinsic variant is not supported on Xe-LPG — the DPAS unit on Meteor Lake does not support the no-src0 form (it is a Xe2+ feature), so the AOT backend pass (GenXCisaBuilder) aborts.

The previous build tree at 39da130fcb (b11770, oneAPI 2026.2) compiled fine with the same flags, so this is a regression introduced in this batch. Presumably PR #29864 was validated on Xe2 hardware (B70), where dpas.nosrc0 exists. JIT builds may not notice because native code generation happens lazily at kernel launch; AOT codegen for Xe-LPG fails at build time for any kernel containing the intrinsic.

Expected: AOT compilation for Xe-LPG targets should either succeed (using a DPAS form supported on Xe-LPG) or the XMX multi-column kernels should be excluded from codegen for targets that lack dpas.nosrc0.

First Bad Commit
d81d0d8fb95e52a66992bcfc212b1891b4d2f94a (b11821, PR #29864)

Last known good: 39da130fcb (b11770) built successfully with identical flags and toolchain.

Compile command

cmake -B build-aot \
  -DCMAKE_C_COMPILER=icx \
  -DCMAKE_CXX_COMPILER=icpx \
  -DGGML_SYCL=ON \
  -DGGML_SYCL_F16=ON \
  -DGGML_SYCL_DEVICE_ARCH=mtl-m \
  -DGGML_SYCL_DNN=OFF
cmake --build build-aot -j16


Toolchain: Intel oneAPI DPC++/C++ Compiler 2026.2.0, Debian 13, kernel 6.12.113.
Relevant log output

[ 77%] Linking CXX shared library ../../../bin/libggml-sycl.so.0.27.0
error: LLVM ERROR: GenXCisaBuilder failed for: <  %.esimd28 = tail call <16 x i32> @llvm.genx.dpas.nosrc0.v16i32.v128i32.v8i32(<128 x i32> %.esimd20.join48, <8 x i32> %.esimd11, i32 17303560)>: Intrinsic is not supported by the <XeLPG> platform
error: LLVM ERROR: GenXCisaBuilder failed for: <  %.esimd30 = tail call <16 x i32> @llvm.genx.dpas.nosrc0.v16i32.v128i32.v8i32(<128 x i32> %.esimd24.join48, <8 x i32> %.esimd111997, i32 17303560)>: Intrinsic is not supported by the <XeLPG> platform
error: LLVM ERROR: GenXCisaBuilder failed for: <  %.esimd28.1 = tail call <16 x i32> @llvm.genx.dpas.nosrc0.v16i32.v128i32.v8i32(<128 x i32> %.esimd20.1.join48, <8 x i32> %.esimd11.1, i32 17303560)>: Intrinsic is not supported by the <XeLPG> platform
gmake[2]: *** [ggml/src/ggml-sycl/CMakeFiles/ggml-sycl.dir/build.make:1772:bin/libggml-sycl.so.0.27.0] 错误 1
gmake[1]: *** [CMakeFiles/Makefile2:2617:ggml/src/ggml-sycl/CMakeFiles/ggml-sycl.dir/all] 错误 2
gmake: *** [Makefile:146:all] 错误 2
Lingua principale
C++
Stelle
133k
Fork
24.9k
Merge medio
2g 1h
PR unite (30g)
475

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ggml-org/llama.cpp

Tutte le issue di ggml-org/llama.cpp

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.