[Bug]: Qwen3.8-27B with MTP cannot run across 2x Arc Pro B70: PIPELINE_PARALLEL crashes in igdrcl64.dll, TENSOR_PARALLEL unsupported
OpenVINO Version
2026.4.0 (OVMS 2026.4.0.869b2186 · OpenVINO 2026.4.0-22959-99c81491cc3 · GenAI 2026.4.0.0-3407-7ea2546852a)
Operating System
Windows 11 Pro (build 26200)
Device used for inference
HETERO (HETERO:GPU.0,GPU.1)
Framework
None
Model used
OpenVINO/Qwen3.8-27B-int8-ov (bundled MTP head, auto-detected: Draft model strategy: MTP (Multi-Token Prediction))
Issue description
On 2x Intel Arc Pro B70 (32 GB each, driver 32.0.101.8992), there is currently no working way to serve Qwen3.8-27B with MTP across both GPUs. Every multi-GPU route fails.
| Route | Result |
|---|---|
HETERO:GPU.0,GPU.1 + PIPELINE_PARALLEL, stock 2026.4.0 |
Loads, but the whole model is placed on GPU.0 (29.80 GB / 0.00 GB). It runs, but single-GPU in practice. |
PIPELINE_PARALLEL with a real split (stock plugins rebuilt from tag 2026.4.0 with the #34702 ratio fix + USM disabled on multi-dGPU, per #33012/#37006) |
Loads split correctly (15.58 GB / 14.12 GB). Process crashes on the first /v3/chat/completions request. |
| Same split, MTP off | Same crash, same module and offset |
TENSOR_PARALLEL |
Not available: HETERO rejects it (src/plugins/hetero/src/config.cpp:32: "HETERO plugin only support {PIPELINE_PARALLEL}") and the GPU plugin has no tensor-parallel implementation |
--pipeline_type LM_CB (the config in the OVMS multi-GPU scaling demo) |
Not applicable: "Models directory content indicates VLM pipeline, but pipeline type is set to non-VLM type." |
The crash is identical with and without MTP, so it is in the multi-GPU execution path rather than in speculative decoding itself. But the net effect for users is that MTP cannot run on more than one GPU. The pipeline-parallel crash is deterministic (same fault address every run) and happens on the first inference that moves data between the two GPUs:
Faulting application name: ovms.exe
Faulting module name: igdrcl64.dll, version: 32.0.101.8992, time stamp: 0x6a94fbfe
Exception code: 0xc0000005
Fault offset: 0x0000000000491e7b
Faulting module path: C:\Windows\System32\DriverStore\FileRepository\iigd_dch_d.inf_amd64_62b87437c1961b1b\igdrcl64.dllOVMS logs nothing after state changed to: AVAILABLE.
The same model with MTP on a single B70 works (~37 tok/s end-to-end, 200 tokens, short prompt).
Related: #37692 (2x Arc Pro B50, Linux: pipeline-parallel crash in the inter-GPU transfer path, blitter-engine page faults), #37450 (2x A770, Qwen3.8-27B, CL_OUT_OF_RESOURCES), #37006 (2x A770, CL_INVALID_KERNEL_ARGS), #34702 (ratio fix, closed unmerged), openvino.genai#4483 (MTP on Xe2 fails / slows down beyond ~64K context).
Requested: a working multi-GPU path for this model class on discrete Intel GPUs. At minimum, fix the pipeline-parallel crash in the NEO OpenCL runtime (igdrcl64.dll @ 0x491e7b) and make an explicit PIPELINE_PARALLEL actually distribute across the listed devices.
Step-by-step reproduction
- Download
OpenVINO/Qwen3.8-27B-int8-ovtoE:/models/Qwen3.8-27B-int8-ov. - OVMS 2026.4.0 Windows package, after
setupvars.bat:
ovms.exe --configure --model_path "E:/models/Qwen3.8-27B-int8-ov" --task text_generation ^
--target_device "HETERO:GPU.0,GPU.1" --model_distribution_policy PIPELINE_PARALLEL ^
--draft_model_path "E:/models/Qwen3.8-27B-int8-ov" --enable_prefix_caching false --cache_size 0 --overwrite_models
ovms.exe --model_path "E:/models/Qwen3.8-27B-int8-ov" --model_name qwen3.8-27b --rest_port 8081- Stock plugins: per-GPU memory (
Get-Counter '\GPU Adapter Memory(*)\Dedicated Usage') shows 29.80 GB / 0.00 GB, so there is no split. - To force the split, replace
openvino_hetero_plugin.dll/openvino_intel_gpu_plugin.dllwith builds from tag 2026.4.0 carrying:src/plugins/hetero/src/plugin.cpp: thequery_model_ratiochange from #34702 (proportional ratio when more than one discrete device is present)src/plugins/intel_gpu/src/runtime/engine.cpp:use_unified_shared_memory()returns false for discrete GPUs when more than one Intel discrete GPU is present
- Per-GPU memory now shows 15.58 GB / 14.12 GB.
POST /v3/chat/completions(max_tokens200). No HTTP response, and the process terminates. The Windows Application log shows theigdrcl64.dllfault above.- Repeat steps 2–6 without
--draft_model_path(MTP off): same crash, same offset.
Relevant log output
[servable_initializer.cpp:688] Initializing Visual Language Model Continuous Batching servable
[servable_initializer.cpp:239] Draft model strategy: MTP (Multi-Token Prediction)
[pipelinedefinitionstatus.hpp:61] Mediapipe: qwen3.8-27b state changed to: AVAILABLE after handling: ValidationPassedEvent:
<process exits on first request, no further log output>Source: openvinotoolkit/openvino