llama.cpp b11627:停用 mul_mat_id_dup 測試並補充 mul_mat_id 說明
llama.cpp 發布建置 b11627,ggml 為 mul_mat_id 補充了說明,並停用 mul_mat_id_dup 相關測試(#30501)。該版本照例提供 macOS、Linux、Windows、Android、openEuler 等平台預編譯包,覆蓋 CPU 以及 CUDA 12/13、Vulkan、ROCm 10.0、SYCL、OpenVINO 等後端。
找到 20 筆
llama.cpp 發布建置 b11627,ggml 為 mul_mat_id 補充了說明,並停用 mul_mat_id_dup 相關測試(#30501)。該版本照例提供 macOS、Linux、Windows、Android、openEuler 等平台預編譯包,覆蓋 CPU 以及 CUDA 12/13、Vulkan、ROCm 10.0、SYCL、OpenVINO 等後端。
llama.cpp 建置 b11933 修復 Vulkan 後端:MUL_MAT 允許 src0 與 src1 在第三維(ne3)上不相等時進行廣播,這類矩陣乘不再回退到 CPU 並複製權重。此前 supports_op 會拒絕所有 ne3 不相等的 MUL_MAT,而 mul_mm、mul_mmq、mul_mat_vec 已通過 broadcast3 支援該廣播;回退還使 split 佈局隨 ubatch 的 stream 數量變化。
llama.cpp 發布 b11909 建置,Hexagon 後端針對 MUL_MAT_ID 加入行跳過最佳化。具體改動包括:把跳過行的清零改為向量化,把清零加入融合的 MM_ID_NX,並移除標量除法。這些改動主要影響驍龍 Hexagon NPU 上的 MoE 類推理;
llama.cpp 發布 b11609,修復 WebGPU 後端在 expert id 重複時 mul_mat_id 的計算錯誤,屬 CI 修復。該問題涉及 MoE 模型的專家路由,同版本照常給出各平台預編譯建置,覆蓋 macOS Apple Silicon(arm64)、Linux 的 CUDA 12/13 與 ROCm 10.0、Windows x64 CUDA/Vulkan、Android arm64,以及 Snapdragon 的 CPU、Adreno GPU 與 H…
llama.cpp 建置版本 b11569 修復了 Metal 後端 mul_mat_id 在 id 重複時輸出錯誤、丟行乃至溢位到下一個 expert 切片的問題。新實現先做一遍預掃描,為每個 expert 建立緊湊的 (token, slot) 條目列表,並借鑑 Vulkan 方案讓 map0 額外輸出 tile 描述符,kernel_mul_mm_id 按描述符處理單個 tile,重複 id 由此被隱式處理。
llama.cpp 發布 b11835 建置版本,主要變更是 SYCL 後端把 device 傳入 mul_mat_uses_onednn(#31014)。該版本同步提供 macOS Apple Silicon、Linux/Windows 的 CPU、Vulkan、CUDA 12/13、ROCm 10.0、OpenVINO、SYCL 等預編譯包,並包含 Android arm64 與 Snapdragon 的 CPU/Adreno GPU/Hexagon NPU 建置。
llama.cpp 發布建置 b11693,核心改動是修復 SYCL 後端在 mul_mat、split buffer 和 host pool 中的記憶體錯誤(PR #29889)。該版本同時更新了預編譯產物清單,覆蓋 macOS/iOS、Linux、Windows、Android,包含 CUDA 12/13、Vulkan、ROCm 10.0、OpenVINO 以及 SYCL FP32/FP16 等後端。
llama.cpp 合併 PR #30100,修復 Metal 後端 MUL_MAT+ADD 融合中殘差運算元的選擇錯誤:當 ADD 的兩個運算元都是矩陣乘法輸出(x = W1@u + W2@v)時,舊邏輯會選中自身從未寫入的輸出緩衝區,導致結果錯誤。Clef 決策模型因此在 Metal 上機率趨近均勻,billing 輸出 0.28,而 CPU 後端為 0.977,且同一檔案在 CPU 上結果正確,說明並非量化問題。
llama.cpp 合併 PR #29633,在 CUDA 後端針對小批次場景的 thin f16/bf16 mul_mat 改用 MMVF 指令,並調整了核心選擇邏輯。該改動由 NVIDIA 工程師提交,影響 Ubuntu 與 Windows 的 CUDA 12/13 建置,面向在 NVIDIA GPU 上執行本地推理的使用者。
llama.cpp 建置 b11620 修復了 OpenCL 後端 q8_0 dp4a 路徑下 MoE 矩陣乘法(MUL_MAT_ID)與 GEMM 的最小值處理錯誤,避免量化 MoE 模型在 GPU 上算出錯誤結果。同一批改動還讓 Adreno GPU 直接拒絕 PREC_F32 的 MUL_MAT_ID,不再走不支援的精度路徑。
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 的 HIP 後端把 64 行/128 執行緒的 MMQ tile 擴充套件到更多量化型別與 J 值組合,覆蓋 RDNA3.5(gfx115x);此前該配置只在 J≤32 時使用,更大的 tile 會佔滿 LDS,無法讓每個 CU 再容納一個工作組。在 gfx1151 上對 100 個 MUL_MAT 形狀做三輪測試,中位提升 2.1%、最佳 26.0%,5 個 MUL_MAT_ID 形狀中位提升 8.0%。J=96 因未獲益被明確排除,其餘條目保持不變。
llama.cpp 建置 b11730 調整 CUDA 後端 MMQ 的 Stream-K 排程:網格上限從按 SM 數量啟動改為實際 k-block 數量,並進一步按所有輸出 tile 的 K_vram 迭代總數(部分迭代向上取整)收緊。這能去掉小矩陣下無活可乾的多餘 CUDA 塊及其啟動與 fixup 開銷,有效取整 K 範圍與數值結果不變。代價是部分迭代可能改變 FP32 求和的分組方式,MUL_MAT 與 MUL_MAT_ID 後端測試已在 RTX 5090 上通過。
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 重構了 Intel XMX 矩陣引擎上的多列 mul_mat_vec_q,並新增融合 gate/up 核心:一次啟動即算出 up*act(gate),最多支援 16 列。多列路徑覆蓋 2 到 80 列啟用,面向投機解碼驗證(每步 2 到 8 個 token)與 9 到 80 token 的短 prompt 批次。
llama.cpp 的 CUDA 後端把稠密 FFN 的 gate 與 up 兩次矩陣乘合併為一次 mul_mat_q 呼叫,並在寫回階段直接計算 GLU,主要加速 prompt 處理。權重按每 8 行交錯裝載,使每個執行緒同時持有 up 值與對應的 gate 值,MMA 迴圈、warp 佈局與 vec_dot 保持原樣,寫回只輸出一半行。
llama.cpp 建置版本 b11895 修復了 Metal 後端在大型矩陣輸出偏移時出現的整數溢位,同時加寬了 batch 偏移與 MUL_MAT_ID 的 token 索引。改動由 Codex 輔助完成,屬於影響大模型在 Apple Silicon 上推理正確性的底層修復,本次建置仍按慣例提供 macOS、Linux、Windows、Android 等多平台二進位制包。
llama.cpp 發布 b11554,Vulkan 後端改進了 MoE 推理中 mul_mat_id 對重複專家 id 的處理:不再逐個迴圈,而是在預計算階段統一處理。原本受限的 hoist row ids 最佳化現在預設開啟,會生成緊湊的 tile 描述列表、按需發射多個 tile,從而收緊 workgroup 數量上界,尾部執行緒可直接提前退出。
llama.cpp 在 ggml-cpu 中撤銷 x86 上 FP16→FP32 的 F16C 內建轉換,恢復使用查詢表,只保留 FP32→FP16 走 F16C。此前 #30270 把兩種標量轉換都改為 F16C,但 Clang 20.1.8 會把該 intrinsic 編譯成 vpinsrw 合併進量化點積的活躍累加暫存器,導致迴圈序列化:估計每輪 19 週期對 4 週期,實測 Q8_0/Q4_0 的 MUL_MAT_ID 核心慢 45–65%。
llama.cpp 建置 b11854 為 Vulkan 後端加入 ggml src1 精度支援,並更新累加器精度選擇邏輯。改動通過縮放處理 fp32 溢位,並修復 copy-to-fp16 啟用中的溢位問題;同時補充 ggml 精度查詢輔助函式、在 mul_mat 中增加檢查與測試,並統一命名為 acc_prec。此次建置仍覆蓋 macOS、Linux、Windows、Android 的 Vulkan、CUDA、ROCm、SYCL、OpenVINO 等後端二進位制。