llama.cpp b11970为Hexagon后端加入conv2d支持
该版本由hexagon后端PR #30995 引入卷积算子支持,覆盖常规conv2d与深度卷积路径,并顺带调整了softmax的编译开关。
AI解读:提交记录显示,改动包括隐藏GEMM实现、双缓冲暂存、HMX结果缩放以避免f16溢出,以及为CONV_2D_DW增加基础支持。
后期提交把卷积分支改为使用DMA、支持较大输入分块,并将内核选择移到主机侧求解器。
同一PR还更新了过时的编译开关,以便为mmproj启用SOFT_MAX。
发布页同时列出macOS、Linux、Windows、Android等平台的预编译包,其中包含骁龙平台的CPU、Adreno GPU与Hexagon NPU组合包。
llama.cpp发布b11970版本,该版本的主要变更是为Hexagon后端新增conv2d支持,来自合并的PR #30995。
conv2d在Hexagon后端的实现变化
提交信息显示,这项改动先加入conv2d算子,随后补充双缓冲暂存、直接从暂存缓冲区进行 64 宽激活块转置,并采用隐藏GEMM实现。
改动中删除了标量路径与相应内核,并统一了所有路径的conv2d内核参数。提交记录还提到对HMX结果在写入f16前做缩放、解包时恢复,以避免溢出,并修复HMX路径中的f16溢出问题。
后续提交将实现重构到新的算子融合机制上,重排DMA流水线与trace作用域,并移除循环内的向量溢出(spill)、删除HVX_WIDTH与HVX_TILED路径。
深度卷积与SOFT_MAX开关
该PR还为CONV_2D_DW增加基础支持,后续提交让所有路径使用DMA、支持较大输入分块、移除对权重张量的标量与HVX访问,改为同步DMA拷贝,并将所有内核选择移入主机侧求解器。
同一PR末尾的一项提交更新了过时的编译开关,以启用mmproj的SOFT_MAX。PR署名包含Max Krasnyansky与Pranav Dhinakar作为共同作者。
发布产物
发布页列出了b11970的多平台预编译包,包括macOS Apple Silicon与Intel、iOS XCFramework、Ubuntu x64/arm64/s390x、Windows x64/arm64,以及Android arm64。
其中Linux arm64与Android arm64提供骁龙平台的CPU、Adreno GPU、Hexagon NPU组合包,并附有对应的安装指南链接。发布页同时标注macOS上启用KleidiAI的arm64包与openEuler包为DISABLED。