From e8afdfa23a2dbc1e9ea885e73dfd3e138855056e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Tue, 24 Mar 2026 10:19:37 +0100 Subject: [PATCH 1/3] Add option for lazy cache --- src/instantiate.jl | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/instantiate.jl b/src/instantiate.jl index 34c43c0383..0d8423aeb0 100644 --- a/src/instantiate.jl +++ b/src/instantiate.jl @@ -124,6 +124,8 @@ function _instantiate_and_check(optimizer_constructor::OptimizerWithAttributes) return optimizer end +struct IfIncrementalInterfaceNotSupported{T} end + """ instantiate( optimizer_constructor, @@ -163,6 +165,7 @@ function instantiate( (@nospecialize optimizer_constructor); with_bridge_type::Union{Nothing,Type} = nothing, with_cache_type::Union{Nothing,Type} = nothing, + cache_only_if_incremental_interface_not_supported = false, ) if with_bridge_type !== nothing && with_cache_type !== nothing if with_bridge_type != with_cache_type @@ -175,20 +178,19 @@ function instantiate( end end optimizer = _instantiate_and_check(optimizer_constructor) - if with_bridge_type === nothing - if with_cache_type === nothing - return optimizer - end + if !isnothing(with_bridge_type) && isnothing(with_cache_type) + with_cache_type = T + cache_only_if_incremental_interface_not_supported = true + end + if cache_only_if_incremental_interface_not_supported && !supports_incremental_interface(optimizer) + with_cache_type = nothing cache = default_cache(optimizer, with_cache_type) - return Utilities.CachingOptimizer(cache, optimizer) - else - if with_cache_type !== nothing || - !supports_incremental_interface(optimizer) - cache = default_cache(optimizer, with_bridge_type) - optimizer = Utilities.CachingOptimizer(cache, optimizer) - end - return Bridges.full_bridge_optimizer(optimizer, with_bridge_type) + optimizer = Utilities.CachingOptimizer(cache, optimizer) + end + if !isnothing(with_bridge_type) + optimizer = Bridges.full_bridge_optimizer(optimizer, with_bridge_type) end + return optimizer end """ From 39201c19e202b4ab2af47b4bd402f3833e16ea2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Tue, 24 Mar 2026 10:24:56 +0100 Subject: [PATCH 2/3] Fixes --- src/instantiate.jl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/instantiate.jl b/src/instantiate.jl index 0d8423aeb0..5cb397b8b3 100644 --- a/src/instantiate.jl +++ b/src/instantiate.jl @@ -124,8 +124,6 @@ function _instantiate_and_check(optimizer_constructor::OptimizerWithAttributes) return optimizer end -struct IfIncrementalInterfaceNotSupported{T} end - """ instantiate( optimizer_constructor, @@ -179,10 +177,11 @@ function instantiate( end optimizer = _instantiate_and_check(optimizer_constructor) if !isnothing(with_bridge_type) && isnothing(with_cache_type) - with_cache_type = T + with_cache_type = with_bridge_type cache_only_if_incremental_interface_not_supported = true end - if cache_only_if_incremental_interface_not_supported && !supports_incremental_interface(optimizer) + if cache_only_if_incremental_interface_not_supported && + !supports_incremental_interface(optimizer) with_cache_type = nothing cache = default_cache(optimizer, with_cache_type) optimizer = Utilities.CachingOptimizer(cache, optimizer) From 8eb1e2a400bdc3f9f2d51bb129a2ab613a3982d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Tue, 24 Mar 2026 10:45:31 +0100 Subject: [PATCH 3/3] Fix --- src/instantiate.jl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/instantiate.jl b/src/instantiate.jl index 5cb397b8b3..8c0ae93d48 100644 --- a/src/instantiate.jl +++ b/src/instantiate.jl @@ -181,8 +181,10 @@ function instantiate( cache_only_if_incremental_interface_not_supported = true end if cache_only_if_incremental_interface_not_supported && - !supports_incremental_interface(optimizer) - with_cache_type = nothing + supports_incremental_interface(optimizer) + with_cache_type = nothing + end + if !isnothing(with_cache_type) cache = default_cache(optimizer, with_cache_type) optimizer = Utilities.CachingOptimizer(cache, optimizer) end