AISpot

llama.cpp 為 Hexagon NPU 新增 conv2d 支援

llama.cpp releases版本更新地端推論開源

llama.cpp 建置 b11970 為高通 Hexagon NPU 後端加入 conv2d 與深度卷積(CONV_2D_DW)運算元支援,並更新 softmax 門控以啟用 mmproj 多模態投影。改動採用隱式 GEMM、雙緩衝 DMA 暫存與流水線重構,移除了標量和 HVX 分塊路徑,並在存入 f16 前對 HMX 結果縮放以避免溢位。

原標題:b11970
閱讀原文

評分48 / 48(平均 48,門檻 60)
狀態未入選

原文

hexagon: add conv2d support ( #30995 ) hexagon: add conv2d op hex-conv2d: add double-buffered staging hex-conv2d: full 64-wide activation block transpose straight from staged buffer hex-conv2d: implicit gemm hex-conv2d: remove scalar path and kernel hex-conv2d: unify conv2d kernel params for all paths hex-conv2d: scale HMX result before f16 storage and then restore during unpacking to prevent overflow hex-conv2d: fix f16 overflow in HMX paths hex-conv2d: refactor to rebase to new op fusion machinery hex-conv2d: restructure DMA pipelines and trace scopes hex-conv2d: removed the HVX_WIDTH and HVX_TILED paths hex-conv2d: remove in-loop vector spills hex-conv2d: refactor kparams, vtcm-layout and dma-pipeline to match the other ops hex-conv2d: add basic support for CONV_2D_DW Co-Authored-By: Pranav Dhinakar [email protected] hex-conv_2d_dw: use DMA in all paths hex-conv_2d_dw: support for chunking larger inputs hex-conv_2d_dw: remove scalar/hvx access for w tensor (replaced with sync dma copy) hex-conv-2d: fix warnings hex-conv2d-dw: vectorize all paths hex-conv-2d-dw: tree-based reductions and unrolling to optimize hex-conv-2d-dw: uninline compute loops from dma loops hex-conv-2d-dw: move all kernel selection into the host solver and simplify/specialize kernel dispatch hex-softmax: update obsolete gates to enable SOFT_MAX for mmproj Co-authored-by: Max Krasnyansky [email protected] Co-authored-by: Pranav Dhinakar [email protected] Website: https://llama.app Attestations: https://github.com/ggml-org/llama.cpp/attestations/61015256 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 評分45

llama.cpp Hexagon 後端為二進位制運算元擴充套件標量 DMA 廣播支援

llama.cpp 發布 b11580 建置,Hexagon 後端為二進位制運算元擴充套件了標量 DMA 廣播支援,並刪除全部非 DMA 路徑,同時新增對非連續 stride 的處理。REPEAT 與 COMPLEX 核心這次也改用 DMA,hex-add-id 為 src2 索引加法補上 DMA;hex-geglu-erf 新增僅 F32 的門控,該運算元不支援 F16。

llama.cpp releasesAI 評分56

llama.cpp 為 Hexagon NPU 加入 Q1_0 與 Q2_0 量化支援

llama.cpp 建置 b11716 為高通 Hexagon NPU 新增 Q1_0、Q2_0 兩種低位元量化的支援,其中 Q1_0 權重已可在 2D HMX MUL_MAT 路徑中啟用。同一批提交還改寫了分塊(tiling)實現、去掉迴圈內除法、最佳化 Q1_0 佈局以降低解包與 vrmpy 開銷,並修正 MUL_MAT_NX 對正方形分塊的假設,因為 Q1/Q2 使用非正方形分塊。

llama.cpp releasesAI 評分45

llama.cpp 修復 Hexagon IM2COL DMA 環形佇列溢位

llama.cpp 建置 b11516 修復了 Hexagon NPU 上 IM2COL patch-embed 的 DMA 環形佇列溢位問題:當 IC*KH 超過 255 時,每執行緒 256 項的 DMA 環寫滿後新描述符被靜默丟棄,導致 VTCM 暫存緩衝的剩餘行未寫入,陳舊資料(常為 NaN/inf)汙染輸出。修復方式是在環滿時淘汰最舊描述符並呼叫 dma_queue_flush() 等待,與同檔案 blocked kernel 的做法一致。

llama.cpp releasesAI 評分43

llama.cpp 更新 Hexagon 後端,預設動態緩衝升至 512MB

llama.cpp b11490 把 Hexagon 後端的預設動態緩衝從 128MB 提升到 512MB,原因是 128MB 在大 MoE 模型上會導致效能退化。hex-bufs 新增 alloc_buffer_n 支援,並可將大張量拆分到獨立緩衝區;環境變數 GGML_HEXAGON_MBUF 改為接受 dyn、static、total 三個值。hex-run 還新增 --no-embd-offload 選項,用於簡化需要該設定的裝置上的命令列。