Files
intel-gpu-llm-diagnosis/repos/patch/phase3-vulkan-intel/0001-arc-140t-xe2-override.patch
T
sleepy 6ad84d543c feat: phased patch system for Intel Arc GPU performance fixes
3-model council (GLM-5.1, Minimax-M2.7, Kimi k2p5) analyzed Intel Arc GPU
performance issues and produced patches for llama.cpp:

Phase 1 - SYCL Sync: Enable graph execution by default (GGML_SYCL_DISABLE_GRAPH)
Phase 2 - SYCL Kernel: Fix VER_GEN12/13 thresholds, tune DMMV_X/MMV_Y
Phase 3 - Vulkan Intel: Arc 140T device-ID Xe2 override

Includes:
- Phased apply script (apply-phase.sh [1|2|3|all])
- Master apply script with --status/--reverse/--dry-run
- Per-phase READMEs with testing checklists
- Council deliberation logs (gitignored in logs/)

Verified: all patches apply/reverse cleanly via git apply.
Static verification: VER_GEN arithmetic and DMMV_X divisibility pass.
2026-04-15 14:53:40 +02:00

35 lines
1.6 KiB
Diff

diff --git a/ggml/src/ggml-vulkan/ggml-vulkan.cpp b/ggml/src/ggml-vulkan/ggml-vulkan.cpp
index b2a54bd..3469f6f 100644
--- a/ggml/src/ggml-vulkan/ggml-vulkan.cpp
+++ b/ggml/src/ggml-vulkan/ggml-vulkan.cpp
@@ -302,6 +302,14 @@ static vk_device_architecture get_device_architecture(const vk::PhysicalDevice&
return vk_device_architecture::OTHER;
}
+ // Arrow Lake H (Arc 140T) misreports minSubgroupSize=8 despite being Xe2.
+ // Device-ID override to force Xe2 classification.
+ // See: https://github.com/ggml-org/llama.cpp/issues/20776
+ const uint32_t devid = props.deviceID;
+ if (devid == 0x7D51 || devid == 0x7D45) {
+ return vk_device_architecture::INTEL_XE2;
+ }
+
vk::PhysicalDeviceProperties2 props2;
vk::PhysicalDeviceShaderCorePropertiesAMD shader_core_props_amd;
vk::PhysicalDeviceShaderIntegerDotProductPropertiesKHR integer_dot_props;
@@ -341,6 +349,14 @@ static vk_device_architecture get_device_architecture(const vk::PhysicalDevice&
return vk_device_architecture::OTHER;
}
+ // Arrow Lake H (Arc 140T) misreports minSubgroupSize=8 despite being Xe2.
+ // Device-ID override to force Xe2 classification.
+ // See: https://github.com/ggml-org/llama.cpp/issues/20776
+ const uint32_t devid = props.deviceID;
+ if (devid == 0x7D51 || devid == 0x7D45) {
+ return vk_device_architecture::INTEL_XE2;
+ }
+
vk::PhysicalDeviceProperties2 props2;
vk::PhysicalDeviceSubgroupSizeControlPropertiesEXT subgroup_size_control_props;