llama.cpp发布b12342:CUDA新增 2–24 行MMQ int8内核
该版本为 2 至 24 个src1列的量化矩阵乘法加入新int8 MMA内核,用于投机解码验证等场景,支持Q8_0、Q3_K等 8 种量化格式,运行于Ampere及之后的NVIDIA GPU。
AI解读:llama.cpp发布b12342,主要变更是CUDA后端新增“few-row MMQ”内核,针对 2 至 24 个src1列的量化矩阵乘法。
该内核使用int8 MMA,提交说明给出的适用场景是投机解码的验证步骤(verify passes)。
支持的量化格式包括Q8_0、Q3_K、Q4_K、Q5_K、Q6_K、IQ3_S、IQ4_NL、IQ4_XS,硬件限Ampere及之后的NVIDIA GPU。
提交记录还包含CUDA-only保护、测试中传入weights标志、two-context构建、HIP/MUSA更明确的中止处理,以及调度顺序为MMVQ、few-row、MMQ。
版本同时提供macOS、Linux、Windows、Android等平台的预编译包与CUDA 12/13运行库,部分构建项标注为DISABLED。
来源只给出实现与支持范围,未提供速度提升幅度或基准数据,因此无法据此判断实际加速效果。
llama.cpp发布b12342版本。据版本说明,CUDA后端新增一个用于 2 至 24 个src1列的int8 MMA内核,即“few-row MMQ”,提交说明举例的用途是投机解码的验证步骤。
新内核覆盖的量化格式与硬件
版本说明称,该内核支持Q8_0、Q3_K、Q4_K、Q5_K、Q6_K、IQ3_S、IQ4_NL和IQ4_XS量化格式,运行于Ampere及之后的NVIDIA GPU。
说明将该优化限定在 2 至 24 个src1列这一范围内,属于此前MMQ路径覆盖不到的窄行场景。
- 支持量化类型:Q8_0、Q3_K、Q4_K、Q5_K、Q6_K、IQ3_S、IQ4_NL、IQ4_XS
- 硬件范围:Ampere及之后的NVIDIA GPU
- 列数范围:2–24 个src1列
提交中的其他改动
提交记录列出的附带修改包括:为few-row MMQ增加仅限CUDA的保护、在test_mul_mat中加入weights标志、量化时DS4求和改为使用量化后的值(与 #31247 一致)。
记录还提到HIP/MUSA路径给出更清晰的中止信息、test_mul_mat采用two-context构建,以及调度顺序为MMVQ、few-row、MMQ。
- few-row量化:DS4求和取自量化后的值,与 #31247 一致
- test_mul_mat:增加weights标志,改为two-context构建
- 调度顺序:MMVQ → few-row → MMQ
- HIP/MUSA:中止信息更明确
发布产物说明
该版本按平台发布预编译包,涵盖macOS Apple Silicon与Intel、iOS XCFramework、Ubuntu(CPU、Vulkan、CUDA 12/13、ROCm 10.0、OpenVINO、SYCL)、Windows(CPU、CUDA、Vulkan、OpenVINO、SYCL、ROCm)、Android arm64以及Snapdragon的CPU/Adreno GPU/Hexagon NPU构建。
页面中macOS arm64的KleidiAI版本和openEuler构建标注为DISABLED。
- CUDA构建提供 12.8 与 13.5 两套x64包及对应运行库
- Windows侧CUDA为 12.4 与 13.5
- ROCm包标注版本为 10.0