llama.cpp 為 Hexagon NPU 增加 UPSCALE 運算元支援
llama.cpp 建置 b11982 在 Hexagon NPU 後端加入 UPSCALE 運算元,使驍龍平台上的影像放大可由 NPU 執行。相關 kernel 針對 nearest 2x、4x 與 bilinear 4x 做了最佳化,並支援非連續行與維度合併;同時改用 vgather 取代標量搬運,並把 kernel 選擇邏輯統一放到 host 端。新增的 permuted UPSCALE 測試覆蓋 qwen3-vl 影像轉文字場景。
原標題:b11982
閱讀原文
| 評分 | 45 / 45(平均 45,門檻 60) |
| 狀態 | 未入選 |
|---|
原文
hexagon: support for UPSCALE op ( #31331 )
hex-upscale: basic upscale ops (not fully vectorized)
hex-upscale: optimize nearest 2x, 4x and bilinear 4x
hex-upscale: add support for non-contig rows and dims collapsing
hex-upscale: use vgather instead of scalar staging
hex-upscale: move all kernel select logic to the host, review comments and cleanups
tests: add permuted UPSCALE test to cover qwen3-vl image->text scenarios
Website:
https://llama.app
Attestations:
https://github.com/ggml-org/llama.cpp/attestations/61278709
macOS/iOS:
macOS Apple Silicon (arm64)
macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED
macOS Intel (x64)
iOS XCFramework
Linux:
Ubuntu x64 (CPU)
Ubuntu arm64 (CPU)
Ubuntu s390x (CPU)
Ubuntu 26.04 s390x (CPU)
Ubuntu 26.04 s390x (zDNN)
Ubuntu x64 (Vulkan)
Ubuntu arm64 (Vulkan)
Ubuntu x64 (CUDA 12) - CUDA 12.8 libraries
Ubuntu x64 (CUDA 13) - CUDA 13.4 libraries
Ubuntu arm64 (CUDA 13) - CUDA 13.4 libraries
Ubuntu x64 (ROCm 10.0)
Ubuntu x64 (OpenVINO)
Ubuntu x64 (SYCL FP32)
Ubuntu x64 (SYCL FP16)
Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - setup guide
Android:
Android arm64 (CPU)
Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - setup guide
Windows:
Windows x64 (CPU)
Windows arm64 (CPU)
Windows arm64 (OpenCL Adreno)
Windows x64 (CUDA 12) - CUDA 12.4 DLLs
Windows x64 (CUDA 13) - CUDA 13.4 DLLs
Windows arm64 (CUDA 13) - CUDA 13.4 DLLs
Windows x64 (Vulkan)
Windows arm64 (Vulkan)
Windows x64 (OpenVINO)
Windows x64 (SYCL)
Windows x64 (ROCm 10.0)
openEuler:
DISABLED
openEuler x86 (310p)
openEuler x86 (910b, ACL Graph)
openEuler aarch64 (310p)
openEuler aarch64 (910b, ACL Graph)
UI:
UI
相關報導
llama.cpp releasesAI 評分50
llama.cpp 建置 b11717 為高通 Hexagon NPU 後端加入 Hadamard 變換的 MUL_MAT 與 GET_ROWS,覆蓋 flat 與 tiled 兩種佈局的 Q1_0、Q2_0 量化,並新增 hex-hadamard 運算元。同一提交還減少了 q8_1 量化器與 vec_dot_q1 的資料包數量。
llama.cpp releasesAI 評分45
llama.cpp 發布 b11489,為 Hexagon NPU 的 Q6_K 權重反量化帶來加速,做法是再增加 2 倍迴圈展開,改動由 OpenCode 協助完成。該版本繼續提供 macOS/iOS、Linux、Android、Windows 多平台預編譯包,Snapdragon 版本可分別使用 CPU、Adreno GPU 與 Hexagon NPU,Windows arm64 另有 OpenCL Adreno 建置;
llama.cpp releasesAI 評分45
llama.cpp 新建置 b11981 最佳化了高通 Hexagon NPU 上轉置 CONCAT 的 DDR 頻寬利用率:把行塊大小翻倍、scratchpad 改為雙緩衝、src1 行分塊處理,並補齊 src1 的 VTCM stride 以分散 gather lane;類似的 vgather 最佳化也應用到 SSM_CONV 和 GDN。
llama.cpp releasesAI 評分48
llama.cpp 新建置 b11433 在高通 Hexagon NPU 後端加入 pool 運算元支援,包含 pool_1d 與 pool_2d。同一批提交重寫了 DMA 流水線、加入池化分塊(pool chunking)、移除並向量化全部標量路徑,並最佳化 HTP 池化邊界、簡化分塊求解器與清理冗餘檢查。
llama.cpp releasesAI 評分41
llama.cpp 建置 b11849 為高通 Hexagon NPU 新增 SGN(符號函式)運算元並擴充套件到 f16,同時改用符號位來最佳化該運算元實現。同一批提交還把維度摺疊(dims collapsing)移到 host 側求解器中執行,並放寬摺疊條件的判斷,使其適用更多情形。