Only compute matrix_rank(exog) once in DiscreteModel.initialize #4805
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 was confused about why a script was taking >20% of total running
time inside DiscreteModel.initialize. It turns out that computing the
rank of exog can be pretty slow! It does seem vary a lot depending on
BLAS and threading settings, e.g. I get wildly different results for
OpenBLAS vs. MKL and OMP_NUM_THREADS=1 versus not. So part of the
issue is probably hitting pathological edge cases in BLAS libraries.
But there's definitely no reason to compute the rank twice in the
same function.