From dda559f9a0908a0b281faa0a9d0bf48a1776d2bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateus=20Ara=C3=BAjo?= Date: Wed, 26 Mar 2025 17:57:55 +0100 Subject: [PATCH 1/2] fix dispatch to herk --- src/matmul.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/matmul.jl b/src/matmul.jl index 6eb9e9df..bf41697e 100644 --- a/src/matmul.jl +++ b/src/matmul.jl @@ -743,7 +743,7 @@ Base.@constprop :aggressive function herk_wrapper!(C::Union{StridedMatrix{T}, St # Result array does not need to be initialized as long as beta==0 # C = Matrix{T}(undef, mA, mA) - if iszero(β) || issymmetric(C) + if iszero(β) || ishermitian(C) alpha, beta = promote(α, β, zero(T)) if (alpha isa Union{Bool,T} && beta isa Union{Bool,T} && From 543f938179f4d2c9c78627c480e8134f21a861c1 Mon Sep 17 00:00:00 2001 From: araujoms Date: Fri, 28 Mar 2025 10:26:38 +0100 Subject: [PATCH 2/2] fix typo in syrk_wrapper! --- src/matmul.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/matmul.jl b/src/matmul.jl index bf41697e..bf3699be 100644 --- a/src/matmul.jl +++ b/src/matmul.jl @@ -692,7 +692,7 @@ end # the aggressive constprop pushes tA and tB into gemm_wrapper!, which is needed for wrap calls within it # to be concretely inferred Base.@constprop :aggressive function syrk_wrapper!(C::StridedMatrix{T}, tA::AbstractChar, A::StridedVecOrMat{T}, - alpha::Number, beta::Number) where {T<:BlasFloat} + α::Number, β::Number) where {T<:BlasFloat} nC = checksquare(C) tA_uc = uppercase(tA) # potentially convert a WrapperChar to a Char if tA_uc == 'T' @@ -708,8 +708,8 @@ Base.@constprop :aggressive function syrk_wrapper!(C::StridedMatrix{T}, tA::Abst # BLAS.syrk! only updates symmetric C # alternatively, make non-zero β a show-stopper for BLAS.syrk! - if iszero(beta) || issymmetric(C) - α, β = promote(alpha, beta, zero(T)) + if iszero(β) || issymmetric(C) + alpha, beta = promote(α, β, zero(T)) if (alpha isa Union{Bool,T} && beta isa Union{Bool,T} && stride(A, 1) == stride(C, 1) == 1 && @@ -717,7 +717,7 @@ Base.@constprop :aggressive function syrk_wrapper!(C::StridedMatrix{T}, tA::Abst return copytri!(BLAS.syrk!('U', tA, alpha, A, beta, C), 'U') end end - return gemm_wrapper!(C, tA, tAt, A, A, alpha, beta) + return gemm_wrapper!(C, tA, tAt, A, A, α, β) end # legacy method syrk_wrapper!(C::StridedMatrix{T}, tA::AbstractChar, A::StridedVecOrMat{T}, _add::MulAddMul = MulAddMul()) where {T<:BlasFloat} =