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 的做法一致。
原標題:b11516
閱讀原文
| 評分 | 45 / 45(平均 45,門檻 60) |
|---|---|
| 狀態 | 未入選 |
原文
相關報導
llama.cpp b11560 為 Hexagon NPU 新增 IM2COL_3D 支援
llama.cpp 建置 b11560 為 Hexagon NPU 後端新增 IM2COL_3D 支援,並把 hex-im2col 核心重寫為規範的 DMA 雙緩衝流水線,去掉除法運算與低效的 fp16 轉換,同時將 kernel_params 與 VTCM 佈局預計算移到 host 側、支援非連續檢視。該系列提交由 OpenCode 輔助完成,共同作者為高通的 Max Krasnyansky。
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 後端,預設動態緩衝升至 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 選項,用於簡化需要該設定的裝置上的命令列。
llama.cpp b11574 最佳化 Hexagon NPU 複製與拼接運算元
llama.cpp 發布 b11574 建置,重點最佳化 Hexagon NPU 後端的 CPY/CONCAT 與 gather-rows 運算元:按 DMA 描述符分塊搬執行、加入雙緩衝與迴圈展開,緩解短行場景受 DMA 延遲拖累的問題,並支援 3/4 維維度摺疊。該版本還把 mdev 下 vtcm_acquire 的同步狀態全部改為原子操作,修復多裝置配置中的隨機卡死,並新增只建置/安裝 Hexagon 後端的選項。
llama.cpp 發布 b11500,修復 hex-mmadd 融合偏置的讀寫對齊假設
llama.cpp 建置版本 b11500 發布,主要變更是 hex-mmadd 在融合 bias-add 時不再假設讀寫記憶體對齊(#30133)。