NVIDIA recently open-sourced their cuOpt solver suite. The source code is mostly C++, and it has a C API.
I’m looking into wrapping that in Julia and setting up a JuMP/MOI interface so we can use cuOpt through JuMP. I have never wrapped a C library before (I imagine it will take a combination of Clang, BinaryBuilder and a _jll), let alone one that needs a GPU to run.
If anyone has skills related to this and would be open to help me, I’d very much appreciate it
I have access to a GPU machine a pretty much anything but Docker, and I’m happy to do the heavy lifting, what I really need is guidance on the overall wrapping / building process.
I was at Stanford a few months ago and discussed with Chris Maes (lead developer of cuOpt).
Based on the current implementation and our discussion, I don’t really see the advantage compared to cu-pdlp or HiGHS with the support of it.
JuMP / MOI is also not GPU-oriented so I am not sure what you want to achieve at the end except maybe a proof-of-concept or testing the accuracy.
If you want to work on it, be aware that it is not a small task.
Another big thing to consider is the availability of CI testing. (I know we could sort something with JuliaGPU.) I have no plans to work on this for jump-dev unless NVIDIA come to the party somewhat with $ or hardware.