@@ -3,13 +3,6 @@ using LinearAlgebra
3
3
using BenchmarkTools
4
4
using Test
5
5
6
- macro test_noalloc (ex)
7
- esc (quote
8
- $ ex
9
- @test (@allocated ($ ex) == 0 )
10
- end )
11
- end
12
-
13
6
mul_add_wrappers = [
14
7
m -> m,
15
8
m -> Symmetric (m, :U ),
@@ -94,22 +87,18 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
94
87
mul! (b,At,c,1.0 ,2.0 )
95
88
@test b ≈ 5 A' c
96
89
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
+
103
92
expected_transpose_allocs = 0
104
93
bmark = @benchmark mul! ($ c,$ A,$ b,$ α,$ β) samples= 10 evals= 10
105
94
@test minimum (bmark). allocs == 0
106
- # @test_noalloc mul!(c, A, b, α, β) # records 32 bytes
95
+ @test_noalloc_barrier mul! (c, A, b, α, β)
107
96
bmark = @benchmark mul! ($ b,Transpose ($ A),$ c) samples= 10 evals= 10
108
97
@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)
110
99
bmark = @benchmark mul! ($ b,Transpose ($ A),$ c,$ α,$ β) samples= 10 evals= 10
111
100
@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, α, β)
113
102
114
103
# outer product
115
104
C = rand (Mat{N1,N2})
@@ -122,9 +111,9 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
122
111
mul! (C,a,b' ,1. ,1. )
123
112
@test C ≈ 3 a* b'
124
113
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' )
128
117
129
118
# A × B
130
119
A = rand (Mat{N1,N2})
@@ -137,9 +126,9 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
137
126
mul! (C,A,B,2.0 ,1.0 )
138
127
@test C ≈ 4 A* B
139
128
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, α, β)
143
132
144
133
# A'B
145
134
At = Transpose (A)
@@ -150,9 +139,9 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
150
139
mul! (B,At,C,2.0 ,1.0 )
151
140
@test B ≈ 4 A' C
152
141
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, α, β)
156
145
157
146
# A*B'
158
147
Bt = Transpose (B)
@@ -163,9 +152,9 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
163
152
mul! (C,A,Bt,2.0 ,1.0 )
164
153
@test C ≈ 4 A* B'
165
154
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), α, β)
169
158
170
159
# A'B'
171
160
B = rand (Mat{N1,N1})
@@ -177,17 +166,17 @@ function test_multiply_add(N1,N2,ArrayType=MArray)
177
166
mul! (C,Transpose (A),Transpose (B),2.0 ,1.0 )
178
167
@test C ≈ 4 A' B'
179
168
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), α, β)
183
172
184
173
# Transpose Output
185
174
C = rand (Mat{N1,N2})
186
175
mul! (Transpose (C),Transpose (A),Transpose (B))
187
176
@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), α, β)
191
180
end
192
181
193
182
# Test the three different
0 commit comments