Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion ggml/src/ggml-vulkan/ggml-vulkan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9573,12 +9573,17 @@ static bool ggml_vk_should_use_mmvq(const vk_device& device, uint32_t m, uint32_
return true;
}
case VK_VENDOR_ID_INTEL:
if (device->architecture == vk_device_architecture::INTEL_XE2) {
if (device->architecture == vk_device_architecture::INTEL_XE2 ||
(device->architecture == vk_device_architecture::INTEL_XE1 && device->integer_dot_product && src0_type == GGML_TYPE_PTQ1_0)) {
// PTQ1_0 is listed here because it has a dedicated integer-dot mat-vec shader
// (mul_mat_vecq_ptq1_0.comp); without it the blanket Intel-Windows opt-out below
// keeps PTQ1_0 on the dequant path. Measured on Arc B390 (Bonsai 2 27B, tg128):
// 1.62 -> 13.16 t/s. PQ2_0 is deliberately NOT listed - measured 11.56 -> 11.63 t/s,
// i.e. no gain over its dequant mat-vec, so it stays on the existing path.
// INTEL_XE1-classified iGPUs (e.g. Intel Arc 140T, Arrow Lake-H, Xe-LPG+) also
// qualify for PTQ1_0 when integer_dot_product is set, since that classification
// already guarantees the accelerated 4x8 integer dot product the shader needs.
// Measured on Arc 140T (Bonsai 2 27B, tg): 1.3 -> 8.8 t/s.
if (src0_type == GGML_TYPE_Q2_0 || src0_type == GGML_TYPE_Q2_K || src0_type == GGML_TYPE_Q3_K || src0_type == GGML_TYPE_Q6_K ||
src0_type == GGML_TYPE_PTQ1_0) {
return true;
Expand Down