add q8_0 support

This commit is contained in:
Ruben Ortlam
2026-08-24 09:23:19 +02:00
parent 14745383c1
commit 33a4a5d637
3 changed files with 12 additions and 1 deletions
+1
View File
@@ -4802,6 +4802,7 @@ static void ggml_vk_load_shaders(vk_device& device, vk_pipeline requested) {
if (device->coopmat_int_support) {
CREATE_MMQ2(GGML_TYPE_Q4_0, pipeline_dequant_mul_mat_mat_q8_1[GGML_TYPE_Q4_0], matmul_q4_0_q8_1, mmq_wg_denoms, warptile_mmq_int, vk_mat_mat_push_constants, 3, );
CREATE_MMQ2(GGML_TYPE_Q8_0, pipeline_dequant_mul_mat_mat_q8_1[GGML_TYPE_Q8_0], matmul_q8_0_q8_1, mmq_wg_denoms, warptile_mmq_int, vk_mat_mat_push_constants, 3, );
}
GGML_ASSERT(device->subgroup_ballot);
@@ -44,6 +44,16 @@ void block_a_to_shmem(const uint buf_ib, const uint ib, const uint iqs) {
#if defined(DATA_A_Q8_0)
// 2-byte loads for Q8_0 blocks (34 bytes)
void block_a_to_shmem(const uint buf_ib, const uint ib, const uint iqs) {
const uint32_t vui = pack32(u16vec2(data_a_packed16[ib].qs[iqs * 2],
data_a_packed16[ib].qs[iqs * 2 + 1]));
buf_a_qs[buf_ib * shmem_stride + iqs] = vui;
if (iqs == 0) {
buf_a_d[buf_ib] = FLOAT_TYPE(data_a_packed16[ib].d);
}
}
#endif
#if defined(DATA_A_MXFP4)
@@ -629,7 +629,7 @@ void matmul_shaders(bool fp16, MatMulIdType matmul_id_type, bool coopmat, bool c
}
#endif
if (coopmat && tname == "q4_0") {
if (coopmat && (tname == "q4_0" || tname == "q8_0")) {
string_to_spv(shader_name + "_" + tname + "_q8_1", "mul_mmq_cm1.comp", merge_maps(merge_maps(base_dict, float_type_dict), {{data_a_key, "1"}, {"D_TYPE", "float"}, {"D_TYPE_VEC4", "vec4"}}), fp16, coopmat, coopmat2, f16acc);
}
}