pyomo icon indicating copy to clipboard operation
pyomo copied to clipboard

Support NVIDIA cuOpt solver

Open zxnie opened this issue 7 months ago • 3 comments

Summary

Please consider support NVIDIA cuOpt as a backend solver. It's recently open sourced, with GPU acceleration. NVIDIA has been working with COINOR, so PuLP already can work with cuOpt.

Official repo: https://github.com/NVIDIA/cuopt

Rationale

cuOpt is open source and GPU accelerated, it could deliver better performance in a large scale than HiGHS (I have not compared them, so "could"). It can be the best open source solver for scale at the moment.

Description

Just like how we assign solvers now: solver = SolverFactory("cuopt")

I'm not really familiar how the solvers are called under the hood.

Additional information

The example with PuLP is here (in a branch to be merged) https://github.com/adi0106/cuopt-examples/tree/branch-25.05/PuLP_integration_example

Thanks!

zxnie avatar Jun 13 '25 20:06 zxnie

@zxnie there is already an open PR for this that is under review. See #3620. One of the biggest hurdles to merging the PR is figuring out how to test it.

blnicho avatar Jun 13 '25 20:06 blnicho

Thanks! I'll close this.

zxnie avatar Jun 14 '25 10:06 zxnie

I don't think the issue should be closed until the PR is merged. We can discuss adding CuOpt under this issue.

I should note, it is interesting that NVIDIA already claims Pyomo support of CuOpt: https://www.nvidia.com/en-us/ai-data-science/products/cuopt/. Technically this is already possible since you can use Pyomo to output an MPS and then use CuOpt to get a solution. (https://docs.nvidia.com/cuopt/user-guide/latest/cuopt-cli/quick-start.html)

kutlay avatar Jun 15 '25 20:06 kutlay