llama.cpp 的 Hexagon 後端新增 LIGHTNING_INDEXER 運算元支援
llama.cpp 為 Hexagon(高通 NPU)後端加入 LIGHTNING_INDEXER 運算元的初始支援:prefill 走流水線化的 HMX 路徑,decode 採用 q8_0 gather transpose 加雙塊計算。隨後的提交補齊 K 的 f32 與 q4_0 支援,移除 HMX q4_0 K 預處理中的標量 VTCM 讀取與向量溢位,並統一 kparams 對齊、支援維度摺疊。
原標題:b12099
閱讀原文
| 評分 | 38 / 42(平均 40,門檻 60) |
|---|---|
| 狀態 | 未入選 |
原文
相關報導
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 Hexagon 後端為二進位制運算元擴充套件標量 DMA 廣播支援
llama.cpp 發布 b11580 建置,Hexagon 後端為二進位制運算元擴充套件了標量 DMA 廣播支援,並刪除全部非 DMA 路徑,同時新增對非連續 stride 的處理。REPEAT 與 COMPLEX 核心這次也改用 DMA,hex-add-id 為 src2 索引加法補上 DMA;hex-geglu-erf 新增僅 F32 的門控,該運算元不支援 F16。
llama.cpp 為 Hexagon NPU 增加 q2_k 與 q3_k 量化支援
llama.cpp 合併 PR #29717,為 Hexagon 後端新增 q2_k 和 q3_k 兩種量化型別支援,並統一了 src1_row_size 的分配方式。該改動由高通工程師 Max Krasnyansky 參與提交,面向在驍龍 Hexagon NPU 上執行本地推理的使用者,相關建置覆蓋 Linux arm64 與 Android arm64 的 Snapdragon CPU、Adreno GPU、Hexagon NPU 組合。
llama.cpp 為 Hexagon NPU 新增 conv2d 支援
llama.cpp 建置 b11970 為高通 Hexagon NPU 後端加入 conv2d 與深度卷積(CONV_2D_DW)運算元支援,並更新 softmax 門控以啟用 mmproj 多模態投影。改動採用隱式 GEMM、雙緩衝 DMA 暫存與流水線重構,移除了標量和 HVX 分塊路徑,並在存入 f16 前對 HMX 結果縮放以避免溢位。
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 的做法一致。