@@ -3,13 +3,6 @@ using LinearAlgebra
33using BenchmarkTools
44using Test
55
6- macro test_noalloc (ex)
7- esc (quote
8- $ ex
9- @test (@allocated ($ ex) == 0 )
10- end )
11- end
12-
136mul_add_wrappers = [
147 m -> m,
158 m -> Symmetric (m, :U ),
@@ -94,22 +87,18 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
9487 mul! (b,At,c,1.0 ,2.0 )
9588 @test b ≈ 5 A' c
9689
97- if ! (ArrayType <: SizedArray )
98- @test_noalloc mul! (c,A,b)
99- else
100- mul! (c,A,b)
101- @test_broken (@allocated (mul! (c,A,b)) == 0 )
102- end
90+ @test_noalloc_barrier mul! (c,A,b)
91+
10392 expected_transpose_allocs = 0
10493 bmark = @benchmark mul! ($ c,$ A,$ b,$ α,$ β) samples= 10 evals= 10
10594 @test minimum (bmark). allocs == 0
106- # @test_noalloc mul!(c, A, b, α, β) # records 32 bytes
95+ @test_noalloc_barrier mul! (c, A, b, α, β)
10796 bmark = @benchmark mul! ($ b,Transpose ($ A),$ c) samples= 10 evals= 10
10897 @test minimum (bmark). allocs <= expected_transpose_allocs
109- # @test_noalloc mul!(b, Transpose(A), c) # records 16 bytes
98+ @test_noalloc_barrier mul! (b, Transpose (A), c)
11099 bmark = @benchmark mul! ($ b,Transpose ($ A),$ c,$ α,$ β) samples= 10 evals= 10
111100 @test minimum (bmark). allocs <= expected_transpose_allocs
112- # @test_noalloc mul!(b, Transpose(A), c, α, β) # records 48 bytes
101+ @test_noalloc_barrier mul! (b, Transpose (A), c, α, β)
113102
114103 # outer product
115104 C = rand (Mat{N1,N2})
@@ -122,9 +111,9 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
122111 mul! (C,a,b' ,1. ,1. )
123112 @test C ≈ 3 a* b'
124113
125- b = @benchmark mul! ($ C,$ a,$ (b' )) samples= 10 evals= 10
126- @test minimum (b ). allocs <= expected_transpose_allocs
127- # @test_noalloc mul!(C, a, b') # records 16 bytes
114+ bmark = @benchmark mul! ($ C,$ a,$ (b' )) samples= 10 evals= 10
115+ @test minimum (bmark ). allocs <= expected_transpose_allocs
116+ @test_noalloc_barrier mul! (C, a, b' )
128117
129118 # A × B
130119 A = rand (Mat{N1,N2})
@@ -137,9 +126,9 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
137126 mul! (C,A,B,2.0 ,1.0 )
138127 @test C ≈ 4 A* B
139128
140- b = @benchmark mul! ($ C,$ A,$ B,$ α,$ β) samples= 10 evals= 10
141- @test minimum (b ). allocs == 0
142- # @test_noalloc mul!(C, A, B, α, β) # records 32 bytes
129+ bmark = @benchmark mul! ($ C,$ A,$ B,$ α,$ β) samples= 10 evals= 10
130+ @test minimum (bmark ). allocs == 0
131+ @test_noalloc_barrier mul! (C, A, B, α, β)
143132
144133 # A'B
145134 At = Transpose (A)
@@ -150,9 +139,9 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
150139 mul! (B,At,C,2.0 ,1.0 )
151140 @test B ≈ 4 A' C
152141
153- b = @benchmark mul! ($ B,Transpose ($ A),$ C,$ α,$ β) samples= 10 evals= 10
154- @test minimum (b ). allocs <= expected_transpose_allocs
155- # @test_noalloc mul!(B, Transpose(A), C, α, β) # records 48 bytes
142+ bmark = @benchmark mul! ($ B,Transpose ($ A),$ C,$ α,$ β) samples= 10 evals= 10
143+ @test minimum (bmark ). allocs <= expected_transpose_allocs
144+ @test_noalloc_barrier mul! (B, Transpose (A), C, α, β)
156145
157146 # A*B'
158147 Bt = Transpose (B)
@@ -163,9 +152,9 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
163152 mul! (C,A,Bt,2.0 ,1.0 )
164153 @test C ≈ 4 A* B'
165154
166- b = @benchmark mul! ($ C,$ A,Transpose ($ B),$ α,$ β) samples= 10 evals= 10
167- @test minimum (b ). allocs <= expected_transpose_allocs
168- # @test_noalloc mul!(C, A, Transpose(B), α, β) # records 48 bytes
155+ bmark = @benchmark mul! ($ C,$ A,Transpose ($ B),$ α,$ β) samples= 10 evals= 10
156+ @test minimum (bmark ). allocs <= expected_transpose_allocs
157+ @test_noalloc_barrier mul! (C, A, Transpose (B), α, β)
169158
170159 # A'B'
171160 B = rand (Mat{N1,N1})
@@ -177,17 +166,17 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
177166 mul! (C,Transpose (A),Transpose (B),2.0 ,1.0 )
178167 @test C ≈ 4 A' B'
179168
180- b = @benchmark mul! ($ C,Transpose ($ A),Transpose ($ B),$ α,$ β) samples= 10 evals= 10
181- @test minimum (b ). allocs <= 2 * expected_transpose_allocs
182- # @test_noalloc mul!(C, Transpose(A), Transpose(B), α, β) # records 64 bytes
169+ bmark = @benchmark mul! ($ C,Transpose ($ A),Transpose ($ B),$ α,$ β) samples= 10 evals= 10
170+ @test minimum (bmark ). allocs <= 2 * expected_transpose_allocs
171+ @test_noalloc_barrier mul! (C, Transpose (A), Transpose (B), α, β)
183172
184173 # Transpose Output
185174 C = rand (Mat{N1,N2})
186175 mul! (Transpose (C),Transpose (A),Transpose (B))
187176 @test C' ≈ A' B'
188- b = @benchmark mul! (Transpose ($ C),Transpose ($ A),Transpose ($ B),$ α,$ β) samples= 10 evals= 10
189- @test minimum (b ). allocs <= expected_transpose_allocs* 3
190- # @test_noalloc mul!(Transpose(C), Transpose(A), Transpose(B), α, β) # records 80 bytes
177+ bmark = @benchmark mul! (Transpose ($ C),Transpose ($ A),Transpose ($ B),$ α,$ β) samples= 10 evals= 10
178+ @test minimum (bmark ). allocs <= expected_transpose_allocs* 3
179+ @test_noalloc_barrier mul! (Transpose (C), Transpose (A), Transpose (B), α, β)
191180end
192181
193182# Test the three different
0 commit comments