llama.cpp将Volta sm70路由到Turing MMVQ参数表,V100解码提速约 3%
llama.cpp发布b11335,CUDA后端把sm_70(Volta)纳入已有的Turing MMVQ nwarps调优表,K-quant单批解码的nwarps从 4 改为 2。作者在一张Tesla V100上实测tg128提升约 3.17%,困惑度不变。
llama.cpp发布b11335,CUDA后端的改动为“cuda : route sm70 to the Turing MMVQ nwarps table”(#29753)。
改动内容:Volta(sm_70)自身没有MMVQ参数表,此前会落到GENERIC分支,K-quant单批解码(ncols_dst == 1)在那里以nwarps=4 启动。提交者认为sm_70与TURING共享同一套调优,K-quant的vec_dot在该路径上偏好nwarps=2,于是在设备和主机的表选择器里都把sm_70路由到已有的MMVQ_PARAMETERS_TURING表。
实测条件为一张Tesla V100 32GB PCIe(PG500-216,驱动 580.178.04,CUDA 12.0.140),模型Qwen3.8-27B Q4_K_M,tg128,采用交错的A/B对比、6 个ABBA块并配对计算每块差值:+1.091 t/s,即 +3.17%(t = +49.0,六个每块差值均为正);困惑度逐位相同(两个构建均为 6.3697 +/- 0.04066,wiki.test.raw)。
补丁构建中,K-quant的mul_mat_vec_q kernel以nwarps=2 启动(cubin EIATTR_MAX_THREADS),而Q4_0/Q8_0仍为nwarps=4。作者称在 9 月master基线上做同样测量得到 +3.84%(t = 85)。
该调优来自面向V100的分支anyei/llamacpp-v100(MIT),commit b912d1b1e,其中带有专门的MMVQ_PARAMETERS_VOLTA表;cubin级对比确认,对此次受影响的K-quant单批路径而言,把sm_70路由到现有TURING表效果等同,因此采用这一最小的两行改法。原始补丁作者为anyei,共同作者为tkittich和Johannes Gäßler。