Skip to content

C3 performance issue (at least relevant to MIQP projection) #408

@ebianchi

Description

@ebianchi

The newer C3-repo-based implementation of the sampling C3 controller has a slower C3 solve than older dairlib-repo-based implementation, at least for the jacktoy demo using the MIQP projection. For this setup, the newer C3 Solve function takes ~5x longer. It is unclear if the performance difference impacts more sampling C3 demos and/or more C3 projection steps (e.g. C3+).

For an apples-to-apples comparison:

  • Old implementation can be run on the bibit/sc3_with_c3_repo_timing_debug branch (derived from sampling_based_c3_public)
    • Controller runs at ~10-23 Hz.
    • Parallelized C3 solve loop takes ~45-53 ms.
    • One call of test_c3_object->Solve(test_state) takes ~40-50ms.
  • New implementation can be run on the bibit/fix_3d_example branch (derived from push_anything_dev)
    • Controller runs at ~1-7 Hz.
    • Parallelized C3 solve loop takes ~230-350ms.
    • One call of test_c3_object->Solve(test_state) takes ~220-350ms.

These branches share the same C3 setup, including constraints and solver options.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions