llama.cpp b12030修复Hexagon DMA大跨距传输截断问题
llama.cpp发布b12030版本,修复了Hexagon后端在v75+硬件上处理 16 MB及以上跨距时DMA地址被截断的问题,改为逐行传输回退,并新增两个跨距超 16 MB的CONT测试。
llama.cpp发布b12030版本,其中一项Hexagon后端修复(PR #31442)处理了DMA传输中跨距超过 24 位表示范围的问题。
提交说明称,在v75+硬件上,2D DMA描述符用 24 位存储row_size和stride。dma_queue_push会把过大的stride交给fallback_2d,而该回退路径只拆分nrows,因此 16 MB及以上的stride会被截断,导致地址错误。
修复方案是在这种情况下回退为每行一次传输,同时重构了Hexagon DMA的回退路径以减少重复代码。提交还新增了两个源跨距超过 16 MB的CONT测试。
该提交由Max Krasnyansky共同署名。发布页同时列出了各平台构建包,其中含Snapdragon的Linux arm64与Android arm64包,覆盖CPU、Adreno GPU和Hexagon NPU。