llama.cpp b11516 修复 Hexagon IM2COL DMA 环形溢出
原标题:b11516
AI 摘要
llama.cpp 发布 b11516 版本,修复了 Hexagon 后端 IM2COL patch-embed DMA 环形缓冲区溢出问题。原实现按输出行推送 IC*KH 个 DMA 描述符但未检查 dma_queue_push() 返回值,当 IC*KH 超过 256 时环形队列满导致传输被丢弃,VTCM 暂存区残留陈旧数据(常为 NaN/inf)污染输出。修复方案是在队列满时淘汰最旧描述符并调用 dma_queue_flush() 等待,同时新增 IC*KH>256 的精确分块测试用例。
正文节选
<details open> hexagon: fix IM2COL patch-embed DMA ring overflow (#30189) * hexagon: fix IM2COL patch-embed DMA ring overflow The exact-tiling (stride == kernel, no pad/dilation) IM2COL DMA kernel issues IC*KH DDR->VTCM descriptors per output row without checking the return value of dma_queue_push(), and then pops IC*KH times. The per-thread DMA ring holds 256 entries and a push into a full ring returns false and drops the transfer, so for IC*KH > 255 the remaining rows of the VTCM staging bu