You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This package makes heavy use of polyalgorithms. This provides a lot of
flexibility and performance, but one downside is that it hinders
inferrability. The lack of inferrability does not seem to cause serious
performance issues, but it does stand in the way of being able to
precompile the package via direct-chain-of-inference. (See #643 for
issues that prevent usage of PrecompileTools.jl, which otherwise would
be an easy solution because it circumvents the need for high-quality
inference.)
The goal of this PR is to make at least a subset of the `solve` pipeline
(specifically, the part I'm using!) inferrable. It targets the following
usage:
```julia
solver, starts = solver_startsolutions(S, sols; start_parameters, target_parameters, ishomogeneous=false)
Ssolve = solve(solver, starts; show_progress=false)
```
where `S` is a `CompiledSystem`. The eventual goal is that if users
write their code this way, the entire pipeline can inferred and thus
precompiled.
To get closer to this goal, this PR adds:
- the `ishomogeneous` keyword to bypass a non-inferrable branch in
`parameter_homotopy`
- several `Base.@constprop :aggressive` annotations to help the compiler
optimize branches that depend on keyword arguments
0 commit comments