Skip to content

Commit e8afdfa

Browse files
committed
Add option for lazy cache
1 parent b5778d0 commit e8afdfa

1 file changed

Lines changed: 14 additions & 12 deletions

File tree

src/instantiate.jl

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ function _instantiate_and_check(optimizer_constructor::OptimizerWithAttributes)
124124
return optimizer
125125
end
126126

127+
struct IfIncrementalInterfaceNotSupported{T} end
128+
127129
"""
128130
instantiate(
129131
optimizer_constructor,
@@ -163,6 +165,7 @@ function instantiate(
163165
(@nospecialize optimizer_constructor);
164166
with_bridge_type::Union{Nothing,Type} = nothing,
165167
with_cache_type::Union{Nothing,Type} = nothing,
168+
cache_only_if_incremental_interface_not_supported = false,
166169
)
167170
if with_bridge_type !== nothing && with_cache_type !== nothing
168171
if with_bridge_type != with_cache_type
@@ -175,20 +178,19 @@ function instantiate(
175178
end
176179
end
177180
optimizer = _instantiate_and_check(optimizer_constructor)
178-
if with_bridge_type === nothing
179-
if with_cache_type === nothing
180-
return optimizer
181-
end
181+
if !isnothing(with_bridge_type) && isnothing(with_cache_type)
182+
with_cache_type = T
183+
cache_only_if_incremental_interface_not_supported = true
184+
end
185+
if cache_only_if_incremental_interface_not_supported && !supports_incremental_interface(optimizer)
186+
with_cache_type = nothing
182187
cache = default_cache(optimizer, with_cache_type)
183-
return Utilities.CachingOptimizer(cache, optimizer)
184-
else
185-
if with_cache_type !== nothing ||
186-
!supports_incremental_interface(optimizer)
187-
cache = default_cache(optimizer, with_bridge_type)
188-
optimizer = Utilities.CachingOptimizer(cache, optimizer)
189-
end
190-
return Bridges.full_bridge_optimizer(optimizer, with_bridge_type)
188+
optimizer = Utilities.CachingOptimizer(cache, optimizer)
189+
end
190+
if !isnothing(with_bridge_type)
191+
optimizer = Bridges.full_bridge_optimizer(optimizer, with_bridge_type)
191192
end
193+
return optimizer
192194
end
193195

194196
"""

0 commit comments

Comments
 (0)