-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
[MPPI]: Replace xtensor with Eigen Experiment #4237
Comments
Can you back up that claim or provide any other detail? |
Because my hardware does not support xsimd acceleration, and xtensor does not support gcc-7, while other programs rely on gcc-7, so I want to know whether the performance will be weakened by using Eigen instead of xtensor for the tensor of 2000x50. |
That's not sufficient to prevent us from looking into it as a potential course of action. |
For a 2000*60 array, run following code, it outputs: Code: constexpr int rows = 2000; int main()
} |
That would seem to evidence that Eigen is faster than xtensor, not slower by a factor of over 7x! That would point to the fact that we should consider using Eigen instead of xtensor - which is why its mentioned in the MPPI ticket as something that we should seriously look to evaluate instead of using xtensor for an acceleration boost. I don't understand your ticket's claim then that xtensor is slower and shouldn't be analyzed? |
The xtensor should be analyzed. I just want to try to replace the xtensor in MPPI with eigen, and I do not know whether the original control frequency can be maintained. |
That is not what your initial ticket title implies, but OK - maybe just a misunderstanding. Yes, I definitely support some help in trying to migrate MPPI to Eigen to see if its an improvement.
No one knows to be able to tell you for certain. However, metrics I see make me think that its a worthwhile direction to explore and that it might actually make it run faster. Are you interested in spending some time working on this yourself? |
Thanks for your advice and help, I will try to migrate MPPI to Eigen. |
OK. I renamed the ticket to be in line with our discussion. I'd recommend outright ignoring the critics to get started and focus on the core Optimizer/Noise Generator/utils. I think that should make it clear from benchmarking whether its faster or not than xtensor without going through the more laborious task of migrating the critics (which some are easy, some are not). Also, don't fret if immediately the performance isn't as good; there may be steps we can take to improve things. There were several cycles of optimizations and testing on xtensor to get the performance we have now and I would expect the same from Eigen. However, the benchmark on Eigen views makes me think we can save some compute time. Do you have a general sense of the priority of this task or when you expect to make some progress? I'd be happy to answer any questions or see how I can help if you work on this on a Nav2 fork that is public. |
Hi~, I have initially migrated MPPI to Eigen in Nav1 and conducted a rough comparison experiment. Specifically, Eigen::Array is used instead of xt::xtensor. |
Can you share the source? I’d like to spend a day or two playing around to make sure I find the same behavior and see if I can tweak it at all to improve things. Did you look at using Eigen’s tensor library instead of Array? The tensor views are supposedly much faster from open source benchmarking I’ve seen |
source: https://github.com/guoxxiong/mppi_local_planner |
The tensor views have the ability to process information without direct copies, which array I believe lacks. There may be some efficiency gains using Eigen tensor views that arrays don't have. For example, I'm seeing some I think it is worth trying to use Eigen Tensor & views over creating everything as a looping function on arrays. That could give you that edge in run-time speed |
Yes, when I increased the array to 2000 * 56, |
I wonder if |
I think its worth testing with Eigen Tensors themselves instead of trying to work around them with Arrays https://eigen.tuxfamily.org/dox/unsupported/eigen_tensors.html |
@guoxxiong any thoughts / have some cycles to look into it? |
@SteveMacenski ,I used |
Great! Can you share some metrics and and potential paths forward? 😄 This would be a great contribution to Nav2 / the community to speed things up! |
No description provided.
The text was updated successfully, but these errors were encountered: