SYCL multi-GPU inference fails with UR_RESULT_ERROR_OUT_OF_DEVICE_MEMORY on Intel Arc Pro (single GPU works)
Author: aaricanttoCreated Jan 11, 2026Updated Jan 11, 2026
Labelsuser issue
Summary
Multi-GPU inference using the SYCL / oneAPI backend fails with an out-of-device-memory error during a SYCL memcpy().wait() call, even though sufficient VRAM is available on each GPU. The same model and configuration work reliably on a single Intel GPU.
This appears to be a multi-GPU SYCL / Level Zero pipeline or cross-device copy issue, not a real VRAM exhaustion problem.
Environment
- OS: Windows 11
- Ollama build: ollama-ipex-llm 2.3.0b20250725 (Windows portable ZIP)
- Ollama version: 0.9.3
- Backend: SYCL / oneAPI (ggml-sycl)
- oneAPI / Level Zero: oneAPI 2024.2 (bundled with build)
- Model: nemotron-mini (GGUF, Q4_K, ~2.5 GiB)
- Context size: 4096 (also reproduced with 2048)
- Batch size: 512 (also reproduced with smaller values)
- Parallel sequences: 1
- KV cache: f16
GPUs
- 2× Intel Arc Pro B60 (24 GiB VRAM each)
- NVIDIA GPU also present in system, but Intel SYCL backend is explicitly selected
Reproduction Steps
Works (single GPU)
set ONEAPI_DEVICE_SELECTOR=level_zero:0
start-ollama.bat
ollama run nemotron-mini:latestModel loads and runs correctly Stable inference, high tokens/sec
Fails (multi-GPU)
set ONEAPI_DEVICE_SELECTOR=level_zero:0;level_zero:1
start-ollama.bat
ollama run nemotron-mini:latestModel loads successfully Fails on first inference request
Observed Error
Native API failed. Native API returns: 39 (UR_RESULT_ERROR_OUT_OF_DEVICE_MEMORY)
Exception caught at:
ggml-sycl.cpp:4602
func: operator()
SYCL error:
CHECK_TRY_ERROR(
(stream)->memcpy(data, (const char *)tensor->data + offset, size).wait()
)
in function:
ggml_backend_sycl_get_tensor_async
common.hpp:115: SYCL error
ERROR source=server.go:827 msg="post predict"
ERROR source=server.go:484 msg="llama runner terminated"
exit status 0xc0000409Key Observations
This is not a real VRAM exhaustion issue
- Each GPU has ~22 GiB free at runtime
- Model uses <3 GiB weights + ~512 MiB KV cache The failure happens after successful model load, during inference The error is triggered inside a SYCL memcpy + wait, suggesting:
- cross-device tensor movement
- pipeline parallelism
- or Level Zero memory management issues With two GPUs visible, logs show:
- pipeline parallelism enabled
- multiple graph splits With one GPU:
- no pipeline parallelism
- stable execution
Any help would be appreciated.
Source: intel/ipex-llm