Skip to content

Commit d2a8af7

Browse files
committed
Check number of function evaluations and chunk sizes
1 parent cf9f4bb commit d2a8af7

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

test/GradientTest.jl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,24 @@ end
233233
for T in (LowerTriangular, UpperTriangular, Diagonal)
234234
@test ForwardDiff.gradient(sum, T(randn(n, n))) == T(ones(n, n))
235235
@test ForwardDiff.gradient(x -> dot(M, x), T(randn(n, n))) == T(M)
236+
237+
# Check number of function evaluations and chunk sizes
238+
fevals = Ref(0)
239+
npartials = Ref(0)
240+
y = ForwardDiff.gradient(T(randn(n, n))) do x
241+
fevals[] += 1
242+
npartials[] += ForwardDiff.npartials(eltype(x))
243+
return sum(x)
244+
end
245+
if npartials[] <= ForwardDiff.DEFAULT_CHUNK_THRESHOLD
246+
# Vector mode (single evaluation)
247+
@test fevals[] == 1
248+
@test npartials[] == sum(y)
249+
else
250+
# Chunk mode (multiple evaluations)
251+
@test fevals[] > 1
252+
@test sum(y) <= npartials[] < sum(y) + fevals[]
253+
end
236254
end
237255
end
238256
end

0 commit comments

Comments
 (0)