-
Notifications
You must be signed in to change notification settings - Fork 13
Closed
Description
There seems to be two functions of the API allocating
-
obj
-
hess_coord
I used the following script to track allocations in QuadraticModels
using Pkg
Pkg.activate(".")
# stdlib
using LinearAlgebra, Printf, SparseArrays, Test
# our packages
using ADNLPModels,
LinearOperators,
NLPModels,
NLPModelsModifiers,
NLPModelsTest, # main version of NLPModelsTest
QPSReader,
QuadraticModels,
SparseMatricesCOO
function only_nonzeros(table)
for k in keys(table)
if table[k] == 0
pop!(table, k)
end
end
return table
end
# Definition of quadratic problems
qp_problems_Matrix = ["bndqp", "eqconqp"]
qp_problems_COO = ["uncqp", "ineqconqp"]
for qp in [qp_problems_Matrix; qp_problems_COO]
include(joinpath("problems", "$qp.jl"))
end
for problem in qp_problems_Matrix
@info "Checking allocs of dense problem $(problem)_QPSData"
nlp_qps = eval(Symbol(problem * "_QPSData"))()
print_nlp_allocations(nlp_qps, only_nonzeros(test_allocs_nlpmodels(nlp_qps)))
end
for problem in qp_problems_Matrix
@info "Checking allocs of dense problem $(problem)_QP_dense"
nlp_qm_dense = eval(Symbol(problem * "_QP_dense"))()
print_nlp_allocations(nlp_qm_dense, only_nonzeros(test_allocs_nlpmodels(nlp_qm_dense)))
end
for problem in qp_problems_Matrix
@info "Checking allocs of dense problem $(problem)_QP_sparse"
nlp_qm_sparse = eval(Symbol(problem * "_QP_sparse"))()
print_nlp_allocations(nlp_qm_sparse, only_nonzeros(test_allocs_nlpmodels(nlp_qm_sparse)))
end
for problem in qp_problems_Matrix
@info "Checking allocs of dense problem $(problem)_QP_symmetric"
nlp_qm_symmetric = eval(Symbol(problem * "_QP_symmetric"))()
print_nlp_allocations(nlp_qm_symmetric, only_nonzeros(test_allocs_nlpmodels(nlp_qm_symmetric)))
end
for problem in qp_problems_COO
@info "Checking allocs of COO problem $(problem)_QPSData"
nlp_qps = eval(Symbol(problem * "_QPSData"))()
print_nlp_allocations(nlp_qps, only_nonzeros(test_allocs_nlpmodels(nlp_qps)))
end
for problem in qp_problems_COO
@info "Checking allocs of COO problem $(problem)_QP"
nlp_qm_dense = eval(Symbol(problem * "_QP"))()
print_nlp_allocations(nlp_qm_dense, only_nonzeros(test_allocs_nlpmodels(nlp_qm_dense)))
end
for problem in NLPModelsTest.nlp_problems
@info "Testing allocs of quadratic approximation of problem $problem"
nlp = eval(Symbol(problem))()
x = nlp.meta.x0
nlp_qm = QuadraticModel(nlp, x)
print_nlp_allocations(nlp_qm, only_nonzeros(test_allocs_nlpmodels(nlp_qm)))
end
and the results
[ Info: Checking allocs of dense problem bndqp_QPSData
Problem name: Generic
obj: ████████████████████ 80.0
hess_coord!: ████████████████████ 80.0
[ Info: Checking allocs of dense problem eqconqp_QPSData
Problem name: Generic
obj: ████████████████████ 496.0
hess_coord!: ████████████████████ 496.0
hess_lag_coord!: ████████████████████ 496.0
[ Info: Checking allocs of dense problem bndqp_QP_dense
Problem name: bndqp_QP
obj: ████████████████████ 80.0
[ Info: Checking allocs of dense problem eqconqp_QP_dense
Problem name: eqconqp_QP
obj: ████████████████████ 496.0
[ Info: Checking allocs of dense problem bndqp_QP_sparse
Problem name: bndqp_QP
obj: ████████████████████ 80.0
[ Info: Checking allocs of dense problem eqconqp_QP_sparse
Problem name: eqconqp_QP
obj: ████████████████████ 496.0
[ Info: Checking allocs of dense problem bndqp_QP_symmetric
Problem name: bndqp_QP
obj: ████████████████████ 80.0
[ Info: Checking allocs of dense problem eqconqp_QP_symmetric
Problem name: eqconqp_QP
obj: ████████████████████ 496.0
[ Info: Checking allocs of COO problem uncqp_QPSData
Problem name: Generic
obj: ████████████████████ 80.0
hess_coord!: ████████████████████ 80.0
[ Info: Checking allocs of COO problem ineqconqp_QPSData
Problem name: Generic
obj: ████████████████████ 80.0
hess_coord!: ████████████████████ 80.0
hess_lag_coord!: ████████████████████ 80.0
[ Info: Checking allocs of COO problem uncqp_QP
Problem name: uncqp_QP
obj: ████████████████████ 80.0
hess_coord!: ████████████████████ 80.0
[ Info: Checking allocs of COO problem ineqconqp_QP
Problem name: ineqconqp_QP
obj: ████████████████████ 80.0
hess_coord!: ████████████████████ 80.0
hess_lag_coord!: ████████████████████ 80.0
[ Info: Testing allocs of quadratic approximation of problem BROWNDEN
Problem name: Generic
obj: ██████████████⋅⋅⋅⋅⋅⋅ 96.0
hess_coord!: ████████████████████ 144.0
[ Info: Testing allocs of quadratic approximation of problem HS5
Problem name: Generic
obj: ████████████████████ 80.0
hess_coord!: ████████████████████ 80.0
[ Info: Testing allocs of quadratic approximation of problem HS6
Problem name: Generic
obj: ████████████████████ 80.0
hess_coord!: ████████████████⋅⋅⋅⋅ 64.0
hess_lag_coord!: ████████████████⋅⋅⋅⋅ 64.0
[ Info: Testing allocs of quadratic approximation of problem HS10
Problem name: Generic
obj: ████████████████████ 80.0
hess_coord!: ████████████████████ 80.0
hess_lag_coord!: ████████████████████ 80.0
[ Info: Testing allocs of quadratic approximation of problem HS11
Problem name: Generic
obj: ████████████████████ 80.0
hess_coord!: ████████████████████ 80.0
hess_lag_coord!: ████████████████████ 80.0
[ Info: Testing allocs of quadratic approximation of problem HS13
Problem name: Generic
obj: ████████████████████ 80.0
hess_coord!: ████████████████████ 80.0
hess_lag_coord!: ████████████████████ 80.0
[ Info: Testing allocs of quadratic approximation of problem HS14
obj: ████████████████████ 80.0
hess_coord!: ████████████████████ 80.0
hess_lag_coord!: ████████████████████ 80.0
[ Info: Testing allocs of quadratic approximation of problem LINCON
Problem name: Generic
obj: ████████████████████ 176.0
hess_coord!: ████████████████████ 176.0
hess_lag_coord!: ████████████████████ 176.0
[ Info: Testing allocs of quadratic approximation of problem LINSV
Problem name: Generic
obj: ████████████████████ 80.0
hess_coord!: ████████████████⋅⋅⋅⋅ 64.0
hess_lag_coord!: ████████████████⋅⋅⋅⋅ 64.0
[ Info: Testing allocs of quadratic approximation of problem MGH01Feas
Problem name: Generic
obj: ████████████████████ 80.0
hess_coord!: ████████████████⋅⋅⋅⋅ 64.0
hess_lag_coord!: ████████████████⋅⋅⋅⋅ 64.0
Metadata
Metadata
Assignees
Labels
No labels