llama.cpp b11228为Metal后端补齐GGML_OP_PAD左填充与循环填充
该版本让Metal与CPU、CUDA、Vulkan行为对齐,并移除一个因更慢、且会在启用后导致两个填充用例失败的f32_4 kernel。
AI解读:这次更新改的是llama.cpp在苹果Metal后端上的填充算子GGML_OP_PAD。此前Metal的实现与CPU、CUDA、Vulkan不一致,b11228把左填充和循环填充补上,让同一份GGML计算图在Mac、iPhone的GPU上跑出与其他后端相同的结果。
对齐的意义在于:需要填充的张量操作不再因为后端不同而出现差异,模型在Metal上的输出与其他后端可以保持一致,避免开发者为了绕开差异而写后端特判。
版本同时删掉了f32_4 kernel,原因标注是它本身更慢、选择已被禁用,而且一旦启用会有两个填充用例失败。这属于清理,不是性能优化,普通用户升级后不需要做额外配置。
llama.cpp发布b11228,改动集中在Metal后端的GGML_OP_PAD算子,由PR #29561 引入,作者标注为github-actions[bot] 发布的release说明。
发布说明称,这次改动让Metal与CPU、CUDA、Vulkan对齐:把源坐标按左填充量平移,在循环填充模式下用相同的wrap_around进行环绕,并通过nb00读取源数据,同时修复了一个经过置换的源的右填充问题。
改动附带了一个测试用例覆盖上述行为。
发布说明还提到,这次移除了f32_4 kernel:它的选择此前已因更慢而被禁用,而且一旦启用会有两个填充用例失败。
在循环填充变体上,作者按ggerganov的评审意见,把bool模板替换为FC_PAD函数常量,与FC_upscale_aa的做法一致,使填充kernel只编译一次、再按pipeline特化。
该release同时提供macOS/iOS、Linux、Android、Windows等平台的预编译包,覆盖CPU、Vulkan、CUDA 12/13、ROCm 10.0、OpenVINO、SYCL等后端;发布说明中macOS Apple Silicon的KleidiAI版本和openEuler相关条目标注为DISABLED。