From 9beb6aca6995989fb31bae18e725443e83ede12a Mon Sep 17 00:00:00 2001 From: "Piotr Wilkin (ilintar)" Date: Fri, 10 Jul 2026 17:22:15 +0200 Subject: [PATCH] fix: avoid f16 overflow in Z-Image quantized matmuls on ROCm (#1771) --- src/model/diffusion/z_image.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/model/diffusion/z_image.hpp b/src/model/diffusion/z_image.hpp index 362192f1..9fb333cb 100644 --- a/src/model/diffusion/z_image.hpp +++ b/src/model/diffusion/z_image.hpp @@ -150,6 +150,8 @@ namespace ZImage { if (sd_backend_is(ctx->backend, "ROCm")) { out_proj->set_scale(1.f / 16.f); + out_proj->set_force_prec_f32(true); + qkv_proj->set_force_prec_f32(true); } auto qkv = qkv_proj->forward(ctx, x); // [N, n_token, (num_heads + num_kv_heads*2)*head_dim] @@ -227,7 +229,7 @@ namespace ZImage { auto w2 = std::dynamic_pointer_cast(blocks["w2"]); auto w3 = std::dynamic_pointer_cast(blocks["w3"]); - if (sd_backend_is(ctx->backend, "Vulkan")) { + if (sd_backend_is(ctx->backend, "Vulkan") || sd_backend_is(ctx->backend, "ROCm")) { w2->set_force_prec_f32(true); }