Skip to content
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

Make the ManifoldUpdate much more efficient #134

Merged
merged 2 commits into from
Mar 17, 2022

Conversation

nathanaelbosch
Copy link
Owner

@nathanaelbosch nathanaelbosch commented Mar 17, 2022

Previously, each IEKF iteration allocated a bunch of new matrices, which hurt the performance: A solve with a ManifoldUpdate callback took ~15ms for a system that is solved in ~1.5ms without callback.

Now the number of fresh allocations is greatly reduced and the solve with callback takes only ~2.7ms.

This could still be improved, e.g. by using some of the already existing cache matrices or by requiring that the residual function is in-place, or even that it has to have a specific output shape.

EDIT: The issue with having the same dimensionality with the residual function as the ODE itself is that the measurement covariance becomes singular. Right now I'm not sure how to best solve this.

@nathanaelbosch nathanaelbosch marked this pull request as ready for review March 17, 2022 09:43
@codecov-commenter
Copy link

Codecov Report

Merging #134 (7326bcf) into main (5a1c666) will decrease coverage by 0.61%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #134      +/-   ##
==========================================
- Coverage   91.50%   90.89%   -0.62%     
==========================================
  Files          24       24              
  Lines         942      955      +13     
==========================================
+ Hits          862      868       +6     
- Misses         80       87       +7     
Impacted Files Coverage Δ
src/callbacks.jl 97.05% <100.00%> (+1.82%) ⬆️
src/filtering/update.jl 74.07% <0.00%> (-25.93%) ⬇️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5a1c666...7326bcf. Read the comment docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants