will it local
THE gotcha: llama.cpp's OpenCL backend lists Adreno X1-85 (Snapdragon X Elite) as SUPPORTED (llama.cpp docs/backend/OPENCL.md) but it's new, quant support is limited (f32/f16/Q4_0/Q6_K in early kernels), and independent measurement says GPU offload is a LOSS: arXiv 2606.11257 measured Adreno X1-85 OpenCL offload 1.7x SLOWER end-to-end than the X Elite's 12-core CPU and 1.6x more energy — 'hardware ceiling, not immature software stack' Windows-on-Snapdragon llama.cpp is CPU-first: Qualcomm's own docs run gpt-oss-20b Q4_0 via CPU with GPU optional; the NPU (Hexagon, 45 TOPS) is NOT accessible from llama.cpp (no QNN integration) — you pay for an NPU you can't use here Memory: LPDDR5X-8448 dual-channel (128-bit) = 135.2 GB/s (TechPowerUp CPU DB) — best-in-class iGPU bandwidth, but Adreno X1-85 is only 4.6 TFLOPs FP32, small GPU relative to that bandwidth Vulkan backend on Windows-on-ARM is s
Shared-memory device — speed scales with RAM bandwidth (135.2 GB/s shared RAM), usable for inference ≈ 13.5 GB of 16 GB system RAM
→explore the full catalogupgrade paths with live prices · what fits on each machinecomputed band 6.6-21.0 tok/s for 8B Q4_K_M (roofline, 135.2 GB/s shared RAM); community: None tok/s gpt-oss-20b Q4_0 (https://docs.qualcomm.com/doc/80-62010-1/topic/run-llama-cpp.html)
Effective decode window: 0.25–0.80 of 135.2 GB/s nominal → ~34–108 GB/s effective (llama.cpp decode, Q4_K_M basis; arch window, community-calibrated; nominal is config-arithmetic shared-RAM bandwidth)
→ 13b-q4 offload-partial 14.6 GB vs 13.5 GB usable — partial CPU offload, expect large speed loss
→ 3b-q4 full 2.8 GB needed of 13.5 GB usable — headroom for context
→ 4b-q4 full 3.7 GB needed of 13.5 GB usable — headroom for context
→ 8b-q4 full 6.1 GB needed of 13.5 GB usable — headroom for context
→ None tok/s · gpt-oss-20b Q4_0 llama.cpp Windows on Snapdragon (CPU baseline; GPU path documented but slower) · source
Nominal bandwidth: 135.2 GB/s shared memory — see the effective decode window above
→ qwen3:0.6b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 0.6B · 0.6GB · needs ~1GB (4k ctx)
→ qwen3:1.7b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 1.7B · 1.4GB · needs ~1.8GB (4k ctx)
→ qwen3:4b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 4B · 2.6GB · needs ~3.2GB (4k ctx)
→ llama3.2:1b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 1B · 1.3GB · needs ~1.4GB (4k ctx)
→ llama3.2:3b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 3B · 2.0GB · needs ~2.4GB (4k ctx)
→ gemma3:1b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 1B · 1.0GB · needs ~1.1GB (4k ctx)
→ phi4:mini on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) mini 3.8B · 2.5GB · needs ~3GB (4k ctx)
→ moondream:2b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 2B · 1.7GB · needs ~3.7GB (4k ctx)
→ whisper:tiny on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) tiny · 0.1GB · needs ~2.1GB (4k ctx)
→ whisper on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) base · 0.3GB · needs ~2.3GB (4k ctx)
→ whisper:small on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) small · 0.9GB · needs ~2.9GB (4k ctx)
→ whisper:medium on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) medium · 3.1GB · needs ~5.1GB (4k ctx)
→ kokoro:82m on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 82M · 0.3GB · needs ~2.3GB (4k ctx)
→ gemma3:4b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 4B · 3.3GB · needs ~3.8GB (4k ctx)
→ deepseek-r1:7b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) distill 7B · 4.7GB · needs ~4.9GB (4k ctx)
→ mistral:7b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 7B · 4.1GB · needs ~4.6GB (4k ctx)
→ llava:7b on Raspberry Pi 5 + AI Kit (Hailo-8L) ($110) 7B · 4.7GB · needs ~6.7GB (4k ctx)
→ qwen3:8b on Tesla P100 (16GB, used) ($135) 8B · 5.2GB · needs ~5.8GB (4k ctx)
→ qwen2.5vl:7b on Tesla P100 (16GB, used) ($135) 7B · 5.6GB · needs ~5.8GB (4k ctx)
→ llama3.1:8b on Tesla P100 (16GB, used) ($135) 8B · 4.9GB · needs ~5.4GB (4k ctx)
→ deepseek-r1:8b on Tesla P100 (16GB, used) ($135) distill 8B · 4.9GB · needs ~5.4GB (4k ctx)
→ whisper:large-v3 on Tesla P100 (16GB, used) ($135) large-v3 · 6.2GB · needs ~8.2GB (4k ctx)
→ mistral-nemo:12b on Tesla P100 (16GB, used) ($135) 12B · 7.1GB · needs ~7.7GB (4k ctx)
→ sdxl on Tesla P100 (16GB, used) ($135) SDXL base · 6.9GB · needs ~8.9GB (4k ctx)
→ llava:13b on Tesla P100 (16GB, used) ($135) 13B · 8.0GB · needs ~11.1GB (4k ctx)
→ gemma3:12b on Tesla P100 (16GB, used) ($135) 12B · 8.1GB · needs ~9.6GB (4k ctx)
→ qwen3:14b on Tesla P100 (16GB, used) ($135) 14B · 9.3GB · needs ~9.9GB (4k ctx)
→ deepseek-r1:14b on Tesla P100 (16GB, used) ($135) distill 14B · 9.0GB · needs ~9.8GB (4k ctx)
→ phi4:14b on Tesla P100 (16GB, used) ($135) 14B · 9.1GB · needs ~9.9GB (4k ctx)
→ gpt-oss:20b 20B MoE — 14.2 of 13.5 GB usable — barely over; real with q8 KV cache (halves KV) or shorter context
→ devstral:24b 24B — 15.2 GB vs 13.5 GB usable — partial CPU offload, expect large speed loss
⚠ THE gotcha: llama.cpp's OpenCL backend lists Adreno X1-85 (Snapdragon X Elite) as SUPPORTED (llama.cpp docs/backend/OPENCL.md) but it's new, quant support is limited (f32/f16/Q4_0/Q6_K in early kernels), and independent measurement says GPU offload is a LOSS: arXiv 2606.11257 measured Adreno X1-85 OpenCL offload 1.7x SLOWER end-to-end than the X Elite's 12-core CPU and 1.6x more energy — 'hardware ceiling, not immature software stack'
⚠ Windows-on-Snapdragon llama.cpp is CPU-first: Qualcomm's own docs run gpt-oss-20b Q4_0 via CPU with GPU optional; the NPU (Hexagon, 45 TOPS) is NOT accessible from llama.cpp (no QNN integration) — you pay for an NPU you can't use here
⚠ Memory: LPDDR5X-8448 dual-channel (128-bit) = 135.2 GB/s (TechPowerUp CPU DB) — best-in-class iGPU bandwidth, but Adreno X1-85 is only 4.6 TFLOPs FP32, small GPU relative to that bandwidth
⚠ Vulkan backend on Windows-on-ARM is spotty (driver maturity varies by OEM); OpenCL needs Clang 19 + Qualcomm's toolchain per llama.cpp OPENCL.md Windows 11 Arm64 build steps
⚠ RAM is soldered LPDDR5X, typically 16 or 32 GB — never upgradeable
—