@@ -364,11 +364,11 @@ void matmul_shaders(bool fp16, MatMulIdType matmul_id_type, bool coopmat, bool c
364
364
};
365
365
366
366
// Shaders with f16 B_TYPE
367
- string_to_spv (shader_name + " _f32_f16" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" f16" )}, {" DATA_A_F32" , " 1" }, {" B_TYPE" , " float16_t" }, {" D_TYPE" , " float" }, }), fp16, coopmat, coopmat2, f16acc);
368
- string_to_spv (shader_name + " _f32_f16_aligned" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" f16" )}, {" DATA_A_F32" , " 1" }, {" LOAD_VEC_A" , load_vec}, {" LOAD_VEC_B" , load_vec}, {" B_TYPE" , aligned_b_type_f16}, {" D_TYPE" , " float" }, {" ALIGNED" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
367
+ string_to_spv (shader_name + " _f32_f16" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" f16" )}, {" DATA_A_F32" , " 1" }, {" B_TYPE" , " float16_t" }, {" D_TYPE" , " float" }, }), fp16, coopmat, coopmat2, f16acc);
368
+ string_to_spv (shader_name + " _f32_f16_aligned" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" f16" )}, {" DATA_A_F32" , " 1" }, {" LOAD_VEC_A" , load_vec}, {" LOAD_VEC_B" , load_vec}, {" B_TYPE" , aligned_b_type_f16}, {" B_TYPE32 " , aligned_b_type_f32}, { " D_TYPE" , " float" }, {" ALIGNED" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
369
369
370
- string_to_spv (shader_name + " _f16_aligned" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" f16" )}, {" DATA_A_F16" , " 1" }, {" LOAD_VEC_A" , load_vec}, {" LOAD_VEC_B" , load_vec}, {" B_TYPE" , aligned_b_type_f16}, {" D_TYPE" , " float" }, {" ALIGNED" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
371
- string_to_spv (shader_name + " _f16" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" f16" )}, {" DATA_A_F16" , " 1" }, {" B_TYPE" , " float16_t" }, {" D_TYPE" , " float" }}), fp16, coopmat, coopmat2, f16acc);
370
+ string_to_spv (shader_name + " _f16_aligned" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" f16" )}, {" DATA_A_F16" , " 1" }, {" LOAD_VEC_A" , load_vec}, {" LOAD_VEC_B" , load_vec}, {" B_TYPE" , aligned_b_type_f16}, { " B_TYPE32 " , aligned_b_type_f32 }, {" D_TYPE" , " float" }, {" ALIGNED" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
371
+ string_to_spv (shader_name + " _f16" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" f16" )}, {" DATA_A_F16" , " 1" }, {" B_TYPE" , " float16_t" }, {" D_TYPE" , " float" }}), fp16, coopmat, coopmat2, f16acc);
372
372
373
373
// bf16
374
374
{
@@ -384,8 +384,8 @@ void matmul_shaders(bool fp16, MatMulIdType matmul_id_type, bool coopmat, bool c
384
384
if (!(coopmat || coopmat2))
385
385
#endif
386
386
{
387
- string_to_spv (shader_name + " _bf16_aligned" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" bf16" )}, {" TO_FLOAT_TYPE" , to_float_type}, {" DATA_A_BF16" , " 1" }, {" LOAD_VEC_A" , load_vec_a}, {" LOAD_VEC_B" , " 4" }, {" B_TYPE" , coopmat2 ? " bfloat16_t" : " u16vec4" }, {" D_TYPE" , " float" }, {" B_IS_FLOAT" , " 1" }, {" ALIGNED" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
388
- string_to_spv (shader_name + " _bf16" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" bf16" )}, {" TO_FLOAT_TYPE" , to_float_type}, {" DATA_A_BF16" , " 1" }, {" LOAD_VEC_A" , load_vec_a_unaligned}, {" B_TYPE" , coopmat2 ? " bfloat16_t" : " uint16_t" }, {" D_TYPE" , " float" }, {" B_IS_FLOAT" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
387
+ string_to_spv (shader_name + " _bf16_aligned" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" bf16" )}, {" TO_FLOAT_TYPE" , to_float_type}, {" DATA_A_BF16" , " 1" }, {" LOAD_VEC_A" , load_vec_a}, {" LOAD_VEC_B" , " 4" }, {" B_TYPE" , coopmat2 ? " bfloat16_t" : " u16vec4" }, {" B_TYPE32 " , " vec4 " }, { " D_TYPE" , " float" }, {" B_IS_FLOAT" , " 1 " }, { " DATA_B_BF16 " , " 1" }, {" ALIGNED" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
388
+ string_to_spv (shader_name + " _bf16" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (" bf16" )}, {" TO_FLOAT_TYPE" , to_float_type}, {" DATA_A_BF16" , " 1" }, {" LOAD_VEC_A" , load_vec_a_unaligned}, {" B_TYPE" , coopmat2 ? " bfloat16_t" : " uint16_t" }, {" D_TYPE" , " float" }, {" B_IS_FLOAT" , " 1 " }, { " DATA_B_BF16 " , " 1" }}), fp16, coopmat, coopmat2, f16acc);
389
389
}
390
390
}
391
391
@@ -408,13 +408,13 @@ void matmul_shaders(bool fp16, MatMulIdType matmul_id_type, bool coopmat, bool c
408
408
409
409
// don't generate f32 variants for coopmat2
410
410
if (!coopmat2) {
411
- string_to_spv (shader_name + " _" + tname + " _f32" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (tname)}, {data_a_key, " 1" }, {" LOAD_VEC_A" , load_vec_a_unaligned}, {" B_TYPE" , " float" }, {" D_TYPE" , " float" }}), fp16, coopmat, coopmat2, f16acc);
412
- string_to_spv (shader_name + " _" + tname + " _f32_aligned" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (tname)}, {data_a_key, " 1" }, {" LOAD_VEC_A" , load_vec_a}, {" LOAD_VEC_B" , load_vec}, {" B_TYPE" , aligned_b_type_f32}, {" D_TYPE" , " float" }, {" ALIGNED" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
411
+ string_to_spv (shader_name + " _" + tname + " _f32" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (tname)}, {data_a_key, " 1" }, {" LOAD_VEC_A" , load_vec_a_unaligned}, {" B_TYPE" , " float" }, {" D_TYPE" , " float" }}), fp16, coopmat, coopmat2, f16acc);
412
+ string_to_spv (shader_name + " _" + tname + " _f32_aligned" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (tname)}, {data_a_key, " 1" }, {" LOAD_VEC_A" , load_vec_a}, {" LOAD_VEC_B" , load_vec}, {" B_TYPE" , aligned_b_type_f32}, {" B_TYPE32 " , aligned_b_type_f32}, { " D_TYPE" , " float" }, {" ALIGNED" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
413
413
}
414
414
415
415
if (tname != " f16" && tname != " f32" ) {
416
- string_to_spv (shader_name + " _" + tname + " _f16" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (tname)}, {data_a_key, " 1" }, {" LOAD_VEC_A" , load_vec_a_unaligned}, {" B_TYPE" , " float16_t" }, {" D_TYPE" , " float" }}), fp16, coopmat, coopmat2, f16acc);
417
- string_to_spv (shader_name + " _" + tname + " _f16_aligned" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (tname)}, {data_a_key, " 1" }, {" LOAD_VEC_A" , load_vec_a}, {" LOAD_VEC_B" , load_vec}, {" B_TYPE" , aligned_b_type_f16}, {" D_TYPE" , " float" }, {" ALIGNED" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
416
+ string_to_spv (shader_name + " _" + tname + " _f16" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (tname)}, {data_a_key, " 1" }, {" LOAD_VEC_A" , load_vec_a_unaligned}, {" B_TYPE" , " float16_t" }, {" D_TYPE" , " float" }}), fp16, coopmat, coopmat2, f16acc);
417
+ string_to_spv (shader_name + " _" + tname + " _f16_aligned" , source_name, merge_maps (base_dict, {{" FLOAT_TYPE" , FLOAT_TYPE (tname)}, {data_a_key, " 1" }, {" LOAD_VEC_A" , load_vec_a}, {" LOAD_VEC_B" , load_vec}, {" B_TYPE" , aligned_b_type_f16}, {" B_TYPE32 " , aligned_b_type_f32}, { " D_TYPE" , " float" }, {" ALIGNED" , " 1" }}), fp16, coopmat, coopmat2, f16acc);
418
418
}
419
419
420
420
#if defined(GGML_VULKAN_INTEGER_DOT_GLSLC_SUPPORT)
0 commit comments