Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I initially wanted to improve compatibility with dask (hence the branch name), and permit things like lazy/distributed fitting, but there were too many obstacles, starting with the fancy indexing used for masking and not supported by dask.
This instead adds parallel capabilities to most fitting methods thanks to numba's parallel accelerator.
For a couple of fitting functions I had to use
np.linalg.solve
in place ofnp.linalg.inv
for the parallel version to work. More details here.Using
pinv
instead ofinv
appears to work as well. I attempted to do that for_recresid
, for which the inversion isn't easy to bypass, but parallel code ends up running much slower than the sequential, despite high cpu resources use (I can't explain why...). I have therefore reverted parallelism for_recresid
androc_stable_fit
One new gallery example on parallel fitting
Can you have a quick look @jonasViehweger ?