Skip to content

Multiobjective optimization#358

Open
maric-a-b wants to merge 23 commits intoKernelTuner:masterfrom
maric-a-b:multiobjective_optimization
Open

Multiobjective optimization#358
maric-a-b wants to merge 23 commits intoKernelTuner:masterfrom
maric-a-b:multiobjective_optimization

Conversation

@maric-a-b
Copy link
Copy Markdown

This PR adds general support for multiple objectives and the NSGA-II and NSGA-III algorithms from the pymoo library to KT.

It requires that the minimal supported python version be bumped to 3.9 → 3.10.

There are a few breaking changes this PR introduces:

  • internally objective and objective_higher_is_better are both lists
  • break the internal cache format because an "__error__" key was introduces to indicate that a result is invalid instead of using the objective

The PR will a draft until I've rebased and conflicts have been resolved.

@sonarqubecloud
Copy link
Copy Markdown

@maric-a-b maric-a-b marked this pull request as ready for review April 6, 2026 15:42
@maric-a-b
Copy link
Copy Markdown
Author

I've integrated my changes with master.

All tests that don't depend on CUDA, HIP, OpenCL are passing, others are unknown.

I've tried to be thorough when looking for the places that assume that objective is a string and changed them appropriately, but I can't be certain that there isn't come corner of the codebase that depends on this assumption that I overlooked, so if you find any, please do tell.

There is an open question on if and how strategies should signal to KT that they support multiple objectives. It is possible to do nothing and make every strategy deal with it on its own, which requires no work from KT but adds a little more friction to using custom strategies. The other option is to add a field to every strat that indicates the supported number of objectives. And there are probably other options, but those are the most obvious solutions to me.

Happy to get any feedback and hope this change can be integrated so KT becomes more versatile and experimentation with multi-objective strategies becomes much easier.

Changes one test case because it depends on the objective key being in
the result to check for validity, this is not the case anymore with the
"__error__" change, so had to be adapted.
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 6, 2026

@maric-a-b
Copy link
Copy Markdown
Author

Tests also pass for CUDA and OpenCL, but I'm unable to test HIP right now.

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.

1 participant