From 30362159d6ca0a5a43222cf17e0a0049dc35f693 Mon Sep 17 00:00:00 2001 From: Tamme Claus Date: Tue, 4 Nov 2025 11:40:46 +0100 Subject: [PATCH 1/2] add zero dim matmat/matvec-mul tests --- test/testsuite/linalg.jl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/testsuite/linalg.jl b/test/testsuite/linalg.jl index b042d9408..30fd285fb 100644 --- a/test/testsuite/linalg.jl +++ b/test/testsuite/linalg.jl @@ -420,6 +420,16 @@ end @test compare(mul!, AT, rand(T, 2,2), rand(T, 2,1), f(rand(T, 2))) end end + + @testset "$T gemv zero-dim" for T in eltypes + y, A, x = rand(T, 4), rand(T, 4, 0), rand(T, 0) + + @test compare(*, AT, A, x) + @test compare(mul!, AT, y, A, x) + + y = rand(T, 4) + @test compare(mul!, AT, y, A, x, Ref(T(4)), Ref(T(5))) + end end @testsuite "linalg/mul!/matrix-matrix" (AT, eltypes)->begin @@ -434,6 +444,16 @@ end @test compare(mul!, AT, C, f(A), g(B), Ref(T(4)), Ref(T(5))) @test typeof(AT(rand(T, 3, 3)) * AT(rand(T, 3, 3))) <: AbstractMatrix end + + @testset "$T gemm zero-dim" for T in eltypes + A, B, C = rand(T, 4, 0), rand(T, 0, 4), rand(T, 4, 4) + + @test compare(*, AT, A, B) + @test compare(mul!, AT, C, A, B) + + C = rand(T, 4, 4) + @test compare(mul!, AT, C, A, B, Ref(T(4)), Ref(T(5))) + end end @testsuite "linalg/norm" (AT, eltypes)->begin From 7dcff5032602557a44c18cdad319e6ca3a3773d5 Mon Sep 17 00:00:00 2001 From: Tamme Claus Date: Tue, 4 Nov 2025 13:21:42 +0100 Subject: [PATCH 2/2] fix zero-dim generic matmatmul --- src/host/linalg.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/host/linalg.jl b/src/host/linalg.jl index bc910be4e..859382349 100644 --- a/src/host/linalg.jl +++ b/src/host/linalg.jl @@ -373,7 +373,7 @@ function generic_matmatmul!(C::AbstractArray{R}, A::AbstractArray{T}, B::Abstrac throw(DimensionMismatch("result C has dimensions $(size(C)), needs $((size(A,1),size(B,2)))")) end if isempty(A) || isempty(B) - return fill!(C, zero(R)) + return rmul!(C, add.beta) end @kernel function matmatmul_kernel!(C, A, B)