Intel Arc 140T (Arrow Lake H, Xe2) not detected as INTEL_XE2 — cooperative matrix disabled despite driver support
Summary
The Intel Arc 140T iGPU (Arrow Lake H, Xe2 architecture, device ID 0x7d51) reports matrix cores: none on Windows, even though the Vulkan driver fully exposes VK_KHR_cooperative_matrix. The root cause is that the Intel Windows driver reports minSubgroupSize = 8 for this GPU, while the get_device_architecture() function in ggml-vulkan.cpp requires minSubgroupSize == 16 to classify a device as INTEL_XE2 — the only Intel architecture allowed to use coopmat.
The Arc 140V (Lunar Lake, same Xe2 microarchitecture) reports minSubgroupSize = 16 with the same driver branch and is correctly classified as INTEL_XE2 with matrix cores: KHR_coopmat (see issue #18946).
Environment
- GPU: Intel Arc 140T (48GB shared, device ID
0x7d51)
- CPU: Intel Core Ultra 9 285H (Arrow Lake H)
- Driver: Intel 32.0.101.8626 WHQL (latest, released 2026-03-18)
- OS: Windows 11
- llama.cpp: b8429 (2026-03-19) and Ollama 0.18.2 — both show
matrix cores: none
Evidence
1. Driver exposes cooperative matrix
PS> vulkaninfo | Select-String "minSubgroupSize|cooperative"
minSubgroupSize = 8
VK_KHR_cooperative_matrix : extension revision 2
cooperativeMatrix = true
cooperativeMatrixRobustBufferAccess = true
2. llama.cpp does not detect it
PS> .\llama-cli.exe --version
ggml_vulkan: Found 1 Vulkan devices:
ggml_vulkan: 0 = Intel(R) Arc(TM) 140T GPU (48GB) (Intel Corporation) | uma: 1 | fp16: 1 | bf16: 0 | warp size: 32 | shared memory: 49152 | int dot: 1 | matrix cores: none
version: 8429 (1e6453457)
3. vulkaninfo summary
GPU0:
apiVersion = 1.4.340
driverVersion = 101.8626
vendorID = 0x8086
deviceID = 0x7d51
deviceType = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
deviceName = Intel(R) Arc(TM) 140T GPU (48GB)
driverID = DRIVER_ID_INTEL_PROPRIETARY_WINDOWS
Root Cause Analysis
In ggml-vulkan.cpp, the detection chain is:
Step 1 — get_device_architecture() (line ~343):
if (subgroup_size_control_props.minSubgroupSize == 16) {
return vk_device_architecture::INTEL_XE2;
}
Since the 140T reports minSubgroupSize = 8, this returns OTHER.
Step 2 — ggml_vk_khr_cooperative_matrix_support() (line ~15972):
case VK_VENDOR_ID_INTEL:
return arch == vk_device_architecture::INTEL_XE2;
Since arch == OTHER, coopmat is disabled.
Comparison with Arc 140V
The Arc 140V (Lunar Lake, also Xe2) works correctly because it reports minSubgroupSize = 16. Both GPUs:
- Use the same Xe2 microarchitecture
- Use the same Windows driver branch (32.0.101.xxxx)
- Expose
VK_KHR_cooperative_matrix
But the 140T's driver reports a different minSubgroupSize, causing ggml to misclassify it.
Suggested Fix
Add a fallback detection path for Intel GPUs that checks for VK_KHR_cooperative_matrix support directly, or add device ID-based detection for known Xe2 iGPUs with minSubgroupSize != 16. For example:
// In get_device_architecture(), Intel section:
if (subgroup_size_control_props.minSubgroupSize == 16) {
return vk_device_architecture::INTEL_XE2;
}
// Fallback: check device ID for known Xe2 Arrow Lake H GPUs
if (props.deviceID == 0x7D51 || props.deviceID == 0x7D45) {
return vk_device_architecture::INTEL_XE2;
}
Alternatively, an Intel driver fix to report minSubgroupSize = 16 for Arrow Lake H would resolve this without ggml changes. I have filed a parallel report with Intel.
Related Issues
Intel Arc 140T (Arrow Lake H, Xe2) not detected as INTEL_XE2 — cooperative matrix disabled despite driver support
Summary
The Intel Arc 140T iGPU (Arrow Lake H, Xe2 architecture, device ID
0x7d51) reportsmatrix cores: noneon Windows, even though the Vulkan driver fully exposesVK_KHR_cooperative_matrix. The root cause is that the Intel Windows driver reportsminSubgroupSize = 8for this GPU, while theget_device_architecture()function inggml-vulkan.cpprequiresminSubgroupSize == 16to classify a device asINTEL_XE2— the only Intel architecture allowed to use coopmat.The Arc 140V (Lunar Lake, same Xe2 microarchitecture) reports
minSubgroupSize = 16with the same driver branch and is correctly classified asINTEL_XE2withmatrix cores: KHR_coopmat(see issue #18946).Environment
0x7d51)matrix cores: noneEvidence
1. Driver exposes cooperative matrix
2. llama.cpp does not detect it
3. vulkaninfo summary
Root Cause Analysis
In
ggml-vulkan.cpp, the detection chain is:Step 1 —
get_device_architecture()(line ~343):Since the 140T reports
minSubgroupSize = 8, this returnsOTHER.Step 2 —
ggml_vk_khr_cooperative_matrix_support()(line ~15972):Since
arch == OTHER, coopmat is disabled.Comparison with Arc 140V
The Arc 140V (Lunar Lake, also Xe2) works correctly because it reports
minSubgroupSize = 16. Both GPUs:VK_KHR_cooperative_matrixBut the 140T's driver reports a different
minSubgroupSize, causing ggml to misclassify it.Suggested Fix
Add a fallback detection path for Intel GPUs that checks for
VK_KHR_cooperative_matrixsupport directly, or add device ID-based detection for known Xe2 iGPUs withminSubgroupSize != 16. For example:Alternatively, an Intel driver fix to report
minSubgroupSize = 16for Arrow Lake H would resolve this without ggml changes. I have filed a parallel report with Intel.Related Issues
matrix cores: none(crash report, did not investigate root cause)matrix cores: KHR_coopmatworking correctly