llama.cpp 更新:Hexagon NPU 的 IM2COL 改為分塊多執行緒 HVX 並行
llama.cpp 發布新建置 b11976,重點改進了 Hexagon NPU 後端的 IM2COL:按輸出列分塊,並用 HVX 做多執行緒並行;同時修復 padding 處理,並對常見情形做了迴圈展開。該改動由高通 Max Krasnyansky 共同署名,提交資訊註明由 Claude Opus 5.5 協助。
原標題:b11976
閱讀原文
| 評分 | 42 / 42(平均 42,門檻 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 發布 b11391 版本,CUDA 程式碼小幅調整
llama.cpp 發布 b11391 建置版本,唯一程式碼改動是將 CUDA 後端的 blocks_per_col 變數移到實際使用位置(PR #29939),由 Hugging Face 的 Adrien Gallouët 提交。
llama.cpp b11433 為 Hexagon NPU 加入池化運算元支援
llama.cpp 新建置 b11433 在高通 Hexagon NPU 後端加入 pool 運算元支援,包含 pool_1d 與 pool_2d。同一批提交重寫了 DMA 流水線、加入池化分塊(pool chunking)、移除並向量化全部標量路徑,並最佳化 HTP 池化邊界、簡化分塊求解器與清理冗餘檢查。
llama.cpp 提升 Hexagon NPU 轉置 CONCAT 頻寬利用率
llama.cpp 新建置 b11981 最佳化了高通 Hexagon NPU 上轉置 CONCAT 的 DDR 頻寬利用率:把行塊大小翻倍、scratchpad 改為雙緩衝、src1 行分塊處理,並補齊 src1 的 VTCM stride 以分散 gather lane;類似的 vgather 最佳化也應用到 SSM_CONV 和 GDN。
llama.cpp Hexagon NPU 支援 Q1_0/Q2_0 的 Hadamard 矩陣乘與取行
llama.cpp 建置 b11717 為高通 Hexagon NPU 後端加入 Hadamard 變換的 MUL_MAT 與 GET_ROWS,覆蓋 flat 與 tiled 兩種佈局的 Q1_0、Q2_0 量化,並新增 hex-hadamard 運算元。同一提交還減少了 q8_1 量化器與 vec_dot_q1 的資料包數量。