AISpot

llama.cpp Vulkan 後端用 subgroup reductions 最佳化 RMS Norm

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

llama.cpp 新建置 b11905 為 Vulkan 後端加入基於 subgroup reductions 的 RMS Norm 最佳化,並把 AMD 廠商加入 subgroup 歸約快速路徑。非 subgroup 路徑補齊 128/256/512 三種 block size,統一 BLOCK_SIZE,加入 unroll,以及跳過第二次 subgroup 的快速路徑。

原標題:b11905
閱讀原文

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

原文

vulkan: rms norm optimization using subgroup reductions ( #29882 ) RMS Norm Subgroup reductions optimizaton Fix build error Improved optimization Make usage of BLOCK_SIZE consistent Add fast path to skip 2nd subgroupAdd Add AMD Vendor to subgroup reduction opt Add comment clarifying rms_dict and merge_maps behavior Add unroll Rebase Fixed syntax issue Add 128/256/512 block sizes to non-subgroup path Remove trailing whitespace Website: https://llama.app Attestations: https://github.com/ggml-org/llama.cpp/attestations/60062594 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 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 評分43

llama.cpp b11564:Vulkan 後端專門化 CM2 量化塊大小

llama.cpp 發布 b11564 建置,Vulkan 後端為 CM2 matmul 專門化量化塊大小,並改用三元表示式避免 switch 降低帶來的開銷,同時澄清了相關注釋。該版本照例附帶全平台建置,涵蓋 macOS/iOS、Linux、Windows、Android 與 openEuler,包括 CUDA 12/13、ROCm 10.0、Vulkan、SYCL、OpenVINO 等後端。

llama.cpp releasesAI 評分36

llama.cpp 修復 Vulkan 後端 RDNA4 矩陣向量調優

llama.cpp 發布 b11389 版本,修復了 Vulkan 後端在 RDNA4 架構上的矩陣向量運算調優問題(PR #29934)。該版本繼續提供覆蓋 macOS、Linux、Windows、Android 等平台的預編譯二進位制,包括 Vulkan、CUDA、ROCm、SYCL 等後端,其中 macOS Apple Silicon 的 KleidiAI 啟用版和 openEuler 建置被停用。

llama.cpp releasesAI 評分42

llama.cpp Vulkan 為 AMD 最佳化 f16/bf16 KV 複製

llama.cpp 建置 b11647 的 Vulkan 後端為 AMD 顯示卡最佳化了 f16/bf16 KV cache 的 strided 複製:先把 KV 一次性拷到 scratch,使跨記憶體通道的讀取分散,而不是集中在少數通道上。改動刪掉了專用的反量化 shader,改為複用已有的通用 copy pipeline——f16 分支只需要 strided copy,不需要 dequant;複製按源記憶體順序描述,讓跨步訪問落在順序寫入端。

llama.cpp releasesAI 評分43

llama.cpp 修復 Vulkan 小矩陣乘法分組錯誤

llama.cpp 合併 PR #30106,修復 Vulkan 後端小矩陣乘法的分組錯誤。原實現把 warp tile 寬度 WM 固定為 32(8 寬子組時為 8),不隨 tile 的 BLOCK_SIZE 和 WARP 變化:使用 16 寬子組(Mali)時,同一工作組的第二個子組會寫入下一個 tile 的列;使用 8 寬子組時,部分 _id tile 有行未計算。現在改為按子組推導 WM,保證每個子組一個 warp tile;