Skip to content

PTQ1_0 Vulkan fast path (#238) misses Xe3 iGPUs reporting minSubgroupSize == 8 (Intel Arc 140T / Panther Lake) #270

Description

@rriley-quorum

PR #238 added a dedicated integer-dot shader for PTQ1_0 on Vulkan. It only fires when the device classifies as INTEL_XE2 (minSubgroupSize == 16). My Arc 140T (Panther Lake, Xe3) reports minSubgroupSize == 8, so it classifies as INTEL_XE1 and falls through to the blanket eIntelProprietaryWindows opt-out. The fast shader never runs.

Environment

  • GPU: Intel Arc 140T (32GB), Panther Lake
  • Driver: 101.8860, DRIVER_ID_INTEL_PROPRIETARY_WINDOWS
  • vulkaninfo:
    minSubgroupSize = 8
    maxSubgroupSize = 32
    integerDotProduct4x8BitPackedSignedAccelerated = true
    shaderIntegerDotProduct = true
    
  • Build: prism-b10735 (842b188), Windows, MSVC 19.51, Vulkan SDK 1.4.357
  • Model: Ternary-Bonsai-2-27B-PTQ1_0.gguf

Repro

llama-cli -m Ternary-Bonsai-2-27B-PTQ1_0.gguf -ngl 99 -c 65536 -n 16384 --single-turn -p "..."
Result: 1.3 tok/s generation — matches the pre-#238 numbers that PR reported for Arc B390.

Root cause

ggml_vk_get_device_architecture() requires integerDotProduct4x8BitPackedSignedAccelerated for both INTEL_XE2 and INTEL_XE1 classification. ggml_vk_should_use_mmvq() only checks for INTEL_XE2 before allowing PTQ1_0 through. The shader needs the integer-dot flag, not the subgroup width, and INTEL_XE1 already guarantees that flag.

Fix

Add an INTEL_XE1 && device->integer_dot_product gate alongside the existing INTEL_XE2 check in ggml_vk_should_use_mmvq().

Result

Before: 1.3 tok/s
After: 8.8 tok/s (6.7x)

Branch with the patch: https://github.com/rriley-quorum/llama.cpp/tree/local/arc-140t-fixes (the vulkan: commit; ignore the sycl: commit, that's an unrelated local oneAPI-version workaround).

I'm happy to open a PR if this is a useful contribution.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions