Understanding and improving IK speed #245
Replies: 3 comments 16 replies
-
MPPI + L-BFGSMPPI takes around 10% of the IK time as it's a highly parallel solver and is only run for 4 iterations. MPPI is similar to CMA-ES and helps in quickly moving the initial seeds to regions of local minima. L-BFGS then converges to sub-mm accuracy in these regions of local-minima. CUDA SynchronizationMeasuring compute time without synchronizing cuda ops is wrong as the measured time will not wait for cuda ops to complete. This is similar to joining threads in multi-threaded programs. Profile using pytorch's profiler, an example is here: curobo/benchmark/curobo_profile.py Line 146 in 1e0b5a8 Solve TimeWhat's your system specs? We benchmark on RTX 6000 Ada and also RTX 4090. In addition when cuda_graph is enabled, cuRobo's ik_solver does not support changing the batch size. Do you have cuda_graph enabled? We have provided a script that will sample random joint configurations and do IK at different batch sizes. This could be used to tune cost terms as well. Add your robot configuration file path to benchmark for your robot: curobo/benchmark/ik_benchmark.py Line 128 in 1e0b5a8 |
Beta Was this translation helpful? Give feedback.
-
Hey @balakumar-s, I'm also trying to reproduce the cuRobo-Cfree results on my local computer that has a RTX 3050. I specify
|
Beta Was this translation helpful? Give feedback.
-
I am also seeing that solving time scales roughly linearly and I'm sorry if I misunderstand, but the numbers you are getting for the benchmark also seem to show that after a certain threshold (between 100 and 500 batch size), the total time to solve scales linearly with batch size? |
Beta Was this translation helpful? Give feedback.
-
I'm trying to get a deeper under understanding of the IK solver and how to make it as fast as possible for my use cases, namely workspace analysis and iteratively solving collision-free IK to nearby poses, all with a dual arm robot with many spheres.
I'm still in the exploration phase, but I have some specific questions:
sync_cuda_time
flag exists and seems to be true by default in several places, which feels wrong but honestly I'm not sure. I did a profile run and it seems to be dominating IK solve time?Thanks in advance, sorry this is long and lacking some details.
Beta Was this translation helpful? Give feedback.
All reactions