Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Flux = "0.13, 0.14, 0.15, 0.16"
ForwardDiff = "0.10, 1"
Ipopt = "1"
IterTools = "1.3"
JET = "0.11"
LinearAlgebra = "1.10"
Logging = "1.10"
LoggingExtras = "0.4, 1"
Expand Down Expand Up @@ -83,6 +84,7 @@ Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
Ipopt = "b6b21f68-93f8-5de0-b562-5493be1d77c9"
IterTools = "c8e1da08-722c-5040-9ed9-7db0dc04731e"
JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b"
Lux = "b2108857-7c20-44ae-9111-449ecde12c47"
MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54"
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
Expand All @@ -107,6 +109,6 @@ Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6"

[targets]
test = ["Aqua", "BenchmarkTools", "Boltz", "ComponentArrays", "DiffEqFlux", "Enzyme", "FiniteDiff", "Flux", "ForwardDiff",
"Ipopt", "IterTools", "Lux", "MLUtils", "ModelingToolkit", "Optim", "OptimizationLBFGSB", "OptimizationMOI", "OptimizationOptimJL", "OptimizationOptimisers",
"Ipopt", "IterTools", "JET", "Lux", "MLUtils", "ModelingToolkit", "Optim", "OptimizationLBFGSB", "OptimizationMOI", "OptimizationOptimJL", "OptimizationOptimisers",
"OrdinaryDiffEqTsit5", "Pkg", "Random", "ReverseDiff", "SafeTestsets", "SciMLSensitivity", "SparseArrays",
"Symbolics", "Test", "Tracker", "Zygote", "Mooncake"]
8 changes: 5 additions & 3 deletions lib/OptimizationBase/src/adtypes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -227,22 +227,24 @@ end
function filled_spad(adtype)
return if adtype.sparsity_detector isa ADTypes.NoSparsityDetector &&
adtype.coloring_algorithm isa ADTypes.NoColoringAlgorithm
adtype = AutoSparse(
AutoSparse(
adtype.dense_ad; sparsity_detector = TracerSparsityDetector(),
coloring_algorithm = GreedyColoringAlgorithm()
)
elseif adtype.sparsity_detector isa ADTypes.NoSparsityDetector &&
!(adtype.coloring_algorithm isa ADTypes.NoColoringAlgorithm)
adtype = AutoSparse(
AutoSparse(
adtype.dense_ad; sparsity_detector = TracerSparsityDetector(),
coloring_algorithm = adtype.coloring_algorithm
)
elseif !(adtype.sparsity_detector isa ADTypes.NoSparsityDetector) &&
adtype.coloring_algorithm isa ADTypes.NoColoringAlgorithm
adtype = AutoSparse(
AutoSparse(
adtype.dense_ad; sparsity_detector = adtype.sparsity_detector,
coloring_algorithm = GreedyColoringAlgorithm()
)
else
adtype
end
end

Expand Down
9 changes: 8 additions & 1 deletion lib/OptimizationBase/src/function.jl
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,15 @@ function instantiate_function(
strtind = isnothing(_strtind) ? 5 : _strtind + 5
open_nrmlbrkt_ind = findfirst('(', adtypestr)
open_squigllybrkt_ind = findfirst('{', adtypestr)
open_brkt_ind = isnothing(open_squigllybrkt_ind) ? open_nrmlbrkt_ind :
open_brkt_ind = if isnothing(open_nrmlbrkt_ind) && isnothing(open_squigllybrkt_ind)
length(adtypestr) + 1
elseif isnothing(open_squigllybrkt_ind)
open_nrmlbrkt_ind
elseif isnothing(open_nrmlbrkt_ind)
open_squigllybrkt_ind
else
min(open_nrmlbrkt_ind, open_squigllybrkt_ind)
end
adpkg = adtypestr[strtind:(open_brkt_ind - 1)]
throw(ArgumentError("The passed automatic differentiation backend choice is not available. Please load the corresponding AD package $adpkg."))
end
4 changes: 3 additions & 1 deletion lib/OptimizationBase/src/solve.jl
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,9 @@ function solve!(cache::SciMLBase.AbstractOptimizationCache)::SciMLBase.AbstractO
end

# needs to be defined for each cache
function __solve(cache::SciMLBase.AbstractOptimizationCache)::SciMLBase.AbstractOptimizationSolution end
function __solve(cache::SciMLBase.AbstractOptimizationCache)
throw(ArgumentError("__solve not implemented for cache type $(typeof(cache))"))
end
function __init(
prob::SciMLBase.OptimizationProblem, alg, args...;
kwargs...
Expand Down
7 changes: 6 additions & 1 deletion test/qa.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Optimization, Aqua
using Optimization, Aqua, JET
@testset "Aqua" begin
Aqua.find_persistent_tasks_deps(Optimization)
Aqua.test_ambiguities(Optimization, recursive = false)
Expand All @@ -20,3 +20,8 @@ using Optimization, Aqua
Aqua.test_unbound_args(Optimization)
Aqua.test_undefined_exports(Optimization)
end

@testset "JET static analysis" begin
rep = JET.report_package(Optimization; target_modules = (Optimization,))
@test length(JET.get_reports(rep)) == 0
end
Loading