-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
API design: prevent unneeded recompilation #28
Comments
I think we could start by raising a warning and then move to raise an error when we change to |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
From: #12 (comment)
The solver shouldn't recompile when only the initial conditions
y0
change. But this fact is hidden by the current API, which accepts both jitted and non-jitted functions. In the latter case, it is jitted insideSolver.__init__
, leading to a "different" function as far as numba is concerned, and triggering a recompilation of (some) parts of the Solver.Instead, we could:
Solver(numba.njit(func), ...)
A similar issue happens with functions which depend on parameters (
func(t, y, p)
). A closure (rhs(t, y)
) is generated insideSolver.__init__
, which is considered a different function even if the same parameters are used.We could provide a helper function to produce the closure outside
Solver.__init__
:Later, we could change the internal implementation, changing
func(t, y)
tofunc(t, y, p)
, and passing an arrayp
of parameters where needed.The text was updated successfully, but these errors were encountered: