1- ReverseDiffAD (nvar, f) = ADNLPModels. ADModelBackend (
2- nvar,
3- f,
4- gradient_backend = ADNLPModels. ReverseDiffADGradient,
5- hprod_backend = ADNLPModels. ReverseDiffADHvprod,
6- jprod_backend = ADNLPModels. ReverseDiffADJprod,
7- jtprod_backend = ADNLPModels. ReverseDiffADJtprod,
8- jacobian_backend = ADNLPModels. ReverseDiffADJacobian,
9- hessian_backend = ADNLPModels. ReverseDiffADHessian,
10- )
11-
12- function test_getter_setter (nlp)
13- @test get_adbackend (nlp) == nlp. adbackend
14- if typeof (nlp) <: ADNLPModel
15- new_nlp = ADNLPModel (nlp, ReverseDiffAD (nlp. meta. nvar, nlp. f))
16- elseif typeof (nlp) <: ADNLSModel
17- function F (x; nequ = nlp. nls_meta. nequ)
18- Fx = similar (x, nequ)
19- nlp. F! (Fx, x)
20- return Fx
21- end
22- new_nlp = ADNLSModel (nlp, ReverseDiffAD (nlp. meta. nvar, x -> sum (F (x) .^ 2 )))
23- end
24- @test typeof (get_adbackend (new_nlp). gradient_backend) <: ADNLPModels.ReverseDiffADGradient
25- @test typeof (get_adbackend (new_nlp). hprod_backend) <: ADNLPModels.ReverseDiffADHvprod
26- @test typeof (get_adbackend (new_nlp). hessian_backend) <: ADNLPModels.ReverseDiffADHessian
27- if typeof (nlp) <: ADNLPModel
28- newer_nlp = ADNLPModel (
29- new_nlp,
30- gradient_backend = ADNLPModels. ForwardDiffADGradient,
31- jtprod_backend = ADNLPModels. GenericForwardDiffADJtprod (),
32- )
33- elseif typeof (nlp) <: ADNLSModel
34- newer_nlp = ADNLSModel (
35- new_nlp,
36- gradient_backend = ADNLPModels. ForwardDiffADGradient,
37- jtprod_backend = ADNLPModels. GenericForwardDiffADJtprod (),
38- )
39- end
40-
41- @test typeof (get_adbackend (newer_nlp). gradient_backend) <: ADNLPModels.ForwardDiffADGradient
42- @test typeof (get_adbackend (newer_nlp). hprod_backend) <: ADNLPModels.ReverseDiffADHvprod
43- @test typeof (get_adbackend (newer_nlp). jtprod_backend) <: ADNLPModels.GenericForwardDiffADJtprod
44- @test typeof (get_adbackend (newer_nlp). hessian_backend) <: ADNLPModels.ReverseDiffADHessian
45- end
46-
471function test_allocations (nlp:: ADNLPModel )
482 x = nlp. meta. x0
493 y = zeros (eltype (nlp. meta. x0), nlp. meta. ncon)
@@ -58,7 +12,8 @@ function test_allocations(nlp::ADNLSModel)
5812 y = zeros (eltype (nlp. meta. x0), nlp. meta. ncon)
5913 g = zeros (eltype (nlp. meta. x0), nlp. meta. nvar)
6014 Fx = zeros (eltype (nlp. meta. x0), nlp. nls_meta. nequ)
61- @test_opt target_modules= (ADNLPModels,) obj (nlp, x)
62- @test_opt target_modules= (ADNLPModels,) cons! (nlp, x, y)
63- @test_opt target_modules= (ADNLPModels,) grad! (nlp, x, g, Fx)
15+ @test_opt target_modules= (ADNLPModels,) function_filter= (@nospecialize (f) -> f != ForwardDiff. gradient!) obj (nlp, x)
16+ @test_opt target_modules= (ADNLPModels,) function_filter= (@nospecialize (f) -> f != ForwardDiff. gradient!) cons! (nlp, x, y)
17+ @test_opt target_modules= (ADNLPModels,) function_filter= (@nospecialize (f) -> f != ForwardDiff. gradient!) grad! (nlp, x, g, Fx)
18+ @test_opt target_modules= (ADNLPModels,) function_filter= (@nospecialize (f) -> f != ForwardDiff. gradient!) residual! (nlp, x, Fx)
6419end
0 commit comments