From 70b4ce509cb1f347d5d43257ff17ec285a13714c Mon Sep 17 00:00:00 2001 From: tmigot Date: Wed, 7 Sep 2022 14:59:15 -0400 Subject: [PATCH 1/4] pre-allocate multiplier in FeasibilityResidual to save allocs --- src/feasibility-residual.jl | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/feasibility-residual.jl b/src/feasibility-residual.jl index cdd123c..99a1563 100644 --- a/src/feasibility-residual.jl +++ b/src/feasibility-residual.jl @@ -30,6 +30,8 @@ mutable struct FeasibilityResidual{T, S, M <: AbstractNLPModel{T, S}} <: Abstrac nls_meta::NLSMeta{T, S} counters::NLSCounters nlp::M + + y # pre-allocated vector of length nequ end function NLPModels.show_header(io::IO, nls::FeasibilityResidual) @@ -64,7 +66,8 @@ function FeasibilityResidual( nnzj = 0, ) nls_meta = NLSMeta{T, S}(m, n, nnzj = nlp.meta.nnzj, nnzh = nlp.meta.nnzh, lin = nlp.meta.lin) - nls = FeasibilityResidual(meta, nls_meta, NLSCounters(), nlp) + y = zeros(T, nls_meta.nequ) + nls = FeasibilityResidual(meta, nls_meta, NLSCounters(), nlp, y) finalizer(nls -> finalize(nls.nlp), nls) return nls @@ -145,9 +148,9 @@ end function NLPModels.jth_hess_residual(nls::FeasibilityResidual, x::AbstractVector, i::Int) increment!(nls, :neval_jhess_residual) T = eltype(x) - y = zeros(T, nls.nls_meta.nequ) - y[i] = one(T) - return hess(nls.nlp, x, y, obj_weight = zero(T)) + nls.y .= zero(T) + nls.y[i] = one(T) + return hess(nls.nlp, x, nls.y, obj_weight = zero(T)) end function NLPModels.hprod_residual!( @@ -159,9 +162,9 @@ function NLPModels.hprod_residual!( ) increment!(nls, :neval_hprod_residual) T = eltype(x) - y = zeros(T, nls.nls_meta.nequ) - y[i] = one(T) - return hprod!(nls.nlp, x, y, v, Hiv, obj_weight = zero(T)) + nls.y .= zero(T) + nls.y[i] = one(T) + return hprod!(nls.nlp, x, nls.y, v, Hiv, obj_weight = zero(T)) end function NLPModels.hess( From 249abfeae1c8a89ca5906744c473cf5c34dda8a9 Mon Sep 17 00:00:00 2001 From: tmigot Date: Fri, 9 Sep 2022 10:23:35 -0400 Subject: [PATCH 2/4] Update src/feasibility-residual.jl Co-authored-by: Dominique --- src/feasibility-residual.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/feasibility-residual.jl b/src/feasibility-residual.jl index 99a1563..bfb07cc 100644 --- a/src/feasibility-residual.jl +++ b/src/feasibility-residual.jl @@ -31,7 +31,7 @@ mutable struct FeasibilityResidual{T, S, M <: AbstractNLPModel{T, S}} <: Abstrac counters::NLSCounters nlp::M - y # pre-allocated vector of length nequ + y::S # pre-allocated vector of length nequ end function NLPModels.show_header(io::IO, nls::FeasibilityResidual) From 2ffaab197c4cf8bd17fb7ee85c3ccbd75209a3a5 Mon Sep 17 00:00:00 2001 From: tmigot Date: Fri, 9 Sep 2022 10:23:43 -0400 Subject: [PATCH 3/4] Update src/feasibility-residual.jl Co-authored-by: Dominique --- src/feasibility-residual.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/feasibility-residual.jl b/src/feasibility-residual.jl index bfb07cc..6862d38 100644 --- a/src/feasibility-residual.jl +++ b/src/feasibility-residual.jl @@ -66,7 +66,7 @@ function FeasibilityResidual( nnzj = 0, ) nls_meta = NLSMeta{T, S}(m, n, nnzj = nlp.meta.nnzj, nnzh = nlp.meta.nnzh, lin = nlp.meta.lin) - y = zeros(T, nls_meta.nequ) + y = similar(x0, nls_meta.nequ) nls = FeasibilityResidual(meta, nls_meta, NLSCounters(), nlp, y) finalizer(nls -> finalize(nls.nlp), nls) From 7cd30c97ff1e52bfcf3a9d192c72e9ec7adb3f85 Mon Sep 17 00:00:00 2001 From: tmigot Date: Fri, 9 Sep 2022 11:18:30 -0400 Subject: [PATCH 4/4] fix `x0` --- src/feasibility-residual.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/feasibility-residual.jl b/src/feasibility-residual.jl index 6862d38..0a36284 100644 --- a/src/feasibility-residual.jl +++ b/src/feasibility-residual.jl @@ -66,7 +66,7 @@ function FeasibilityResidual( nnzj = 0, ) nls_meta = NLSMeta{T, S}(m, n, nnzj = nlp.meta.nnzj, nnzh = nlp.meta.nnzh, lin = nlp.meta.lin) - y = similar(x0, nls_meta.nequ) + y = similar(nlp.meta.x0, nls_meta.nequ) nls = FeasibilityResidual(meta, nls_meta, NLSCounters(), nlp, y) finalizer(nls -> finalize(nls.nlp), nls)