AISpot

llama.cpp 修復 Hexagon DMA 大步長傳輸截斷問題

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

llama.cpp 修復了 Hexagon NPU 後端 2D DMA 傳輸中步長被截斷的缺陷。在 v75 及以上硬體上,DMA 描述符只用 24 位存 row_size 和 stride;當步長達到 16MB 或更大時會被截斷,導致地址錯誤。修復後,這類情況改為逐行傳輸,並新增兩個源步長超過 16MB 的 CONT 測試。同版本還重構了 fallback 路徑,以去掉重複程式碼。

原標題:b12030
閱讀原文

評分40 / 35(平均 37,門檻 60)
狀態未入選

原文

hexagon : fix DMA transfers with strides > 24 bits ( #31442 ) hexagon : fix DMA transfers with strides > 24 bits On v75+ the 2D DMA descriptor stores row_size and strides in 24 bits. dma_queue_push sent oversized strides to fallback_2d, which only splits nrows, so strides of 16 MB or more were truncated - wrong addresses. Fix will fall back to one transfer per row in that case. Also added two CONT tests with source strides over 16 MB. hex-dma: refactor the fallback paths to remove duplication Co-authored-by: Max Krasnyansky [email protected] Website: https://llama.app Attestations: https://github.com/ggml-org/llama.cpp/attestations/62279802 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 26.04 s390x (CPU) Ubuntu 26.04 s390x (zDNN) 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 評分45

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 的做法一致。

llama.cpp releasesAI 評分42

llama.cpp 更新:Hexagon NPU 的 IM2COL 改為分塊多執行緒 HVX 並行

llama.cpp 發布新建置 b11976,重點改進了 Hexagon NPU 後端的 IM2COL:按輸出列分塊,並用 HVX 做多執行緒並行;同時修復 padding 處理,並對常見情形做了迴圈展開。該改動由高通 Max Krasnyansky 共同署名,提交資訊註明由 Claude Opus 5.5 協助。

llama.cpp releasesAI 評分43

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 選項,用於簡化需要該設定的裝置上的命令列。