@@ -59,6 +59,7 @@ function MOI.initialize(d::NLPEvaluator, requested_features::Vector{Symbol})
5959 max_chunk = max (max_chunk, size (c. expression. seed_matrix, 2 ))
6060 push! (main_expressions, c. expression. nodes)
6161 end
62+ max_chunk = min (max_chunk, MAX_CHUNK)
6263 d. subexpression_order, individual_order = _order_subexpressions (
6364 main_expressions,
6465 [expr. nodes for expr in d. data. expressions],
@@ -110,21 +111,22 @@ function MOI.initialize(d::NLPEvaluator, requested_features::Vector{Symbol})
110111 subexpression_edgelist[k] = edgelist
111112 end
112113 end
114+ shared_partials_storage_ϵ = zeros (max_chunk * max_expr_length)
113115 if d. data. objective != = nothing
114116 objective = _FunctionStorage (
115117 _SubexpressionStorage (
116118 something (d. data. objective),
117119 d. data. expressions[k],
118120 d. subexpression_linearity,
119121 moi_index_to_consecutive_index,
120- zeros (max_chunk * length (d. data. expressions[k]. nodes)),
121- )
122+ shared_partials_storage_ϵ,
123+ d. want_hess,
124+ ),
122125 N,
123126 coloring_storage,
124127 d. want_hess,
125128 d. subexpressions,
126129 individual_order[1 ],
127- d. subexpression_linearity,
128130 subexpression_edgelist,
129131 subexpression_variables,
130132 )
@@ -135,29 +137,30 @@ function MOI.initialize(d::NLPEvaluator, requested_features::Vector{Symbol})
135137 push! (
136138 d. constraints,
137139 _FunctionStorage (
138- main_expressions[idx],
139- constraint. expression. values,
140+ _SubexpressionStorage (
141+ main_expressions[idx],
142+ d. subexpression_linearity,
143+ moi_index_to_consecutive_index,
144+ shared_partials_storage_ϵ,
145+ d. want_hess,
146+ ),
140147 N,
141148 coloring_storage,
142149 d. want_hess,
143150 d. subexpressions,
144151 individual_order[idx],
145- d. subexpression_linearity,
146152 subexpression_edgelist,
147153 subexpression_variables,
148- moi_index_to_consecutive_index,
149154 ),
150155 )
151156 max_expr_length = max (max_expr_length, length (d. constraints[end ]. nodes))
152157 max_chunk = max (max_chunk, size (d. constraints[end ]. seed_matrix, 2 ))
153158 end
154- max_chunk = min (max_chunk, MAX_CHUNK)
155159 max_expr_with_sub_length = max (max_expr_with_sub_length, max_expr_length)
156160 if d. want_hess || want_hess_storage
157161 d. input_ϵ = zeros (max_chunk * N)
158162 d. output_ϵ = zeros (max_chunk * N)
159163 #
160- d. partials_storage_ϵ = zeros (max_chunk * max_expr_length)
161164 d. storage_ϵ = zeros (max_chunk * max_expr_with_sub_length)
162165 #
163166 len = max_chunk * length (d. subexpressions)
0 commit comments