I am trying to solve a LP problem with 4391 constraints 4428 variables (2223 integers) and 14233 nonzeros. The GPU is an ASUS NVIDIA 5090 OC with default settings and an AMD 9950X3D CPU running on an Arch based distro - CachyOS. When I change the --method parameter from 0 to 1 to 2 all the resulting instances are using the same level of CPU/GPU resources. Specifically, the GPU is running at ~90% capacity at ~130W and the CPU has the equivalent of 2 threads running at 100% consistently. In contrast, I can see that other non-NVIDIA solvers run the LP problem on the CPU exclusively. I am a new user of cuOpt and my research led me to think that the PDLP solver (–method 1) ran ‘mostly’ on the GPU while the LP solver (–method 2) ran exclusively on the CPU. Unfortunately, while all --method options for the solver appear to find solutions to add to the solution population per the logs, none of the --method options are able to solve the problem in over a 12 hour span after consuming more than 300GB of memory and swap space. Other CPU-only non-NVIDIA solvers I have used are also unable to solve the problem in that time frame either, as a comparison, but run times for smaller programs were roughly the same or even slightly faster for the CPU-only non-NVIDIA solvers using 1 thread at 100% consistently versus all the cuOpt NVIDIA solver --methods using the GPU at ~90% capacity and ~130W including using 2 threads on the CPU running at 100% consistently. When I compare the size of my problem and hardware to the size of problems and hardware used to solve massive problems while using cuOpt in some of the literature I found online, I thought that a solution would be achievable in a reasonable amount of time. Thus my concern that something isn’t quite right about my set-up or the way I am running the problem so that it is solvable like those reported elsewhere. Is the GPU/CPU behavior I described normal for all the --method options? Does the scale of the model seem consistent with the time it takes to solve a problem like this given the hardware I am using and the resources I am consuming? Is there a way to force the GPU or CPU to use more energy or threads to speed up arriving at a solution for the LP problem as I have more GPU headroom and CPU threads that are idle? Is there a way to print out or access the solutions that were saved to the solution population as a way to salvage time and energy in those instances where the computer resources required to outright solve the problem are inadequate? Thank-you in advance for your time and advise.
Since your problem contains integer, as well as continuous, variables, we usually refer to it as a mixed-integer program (MIP). We distinguish mixed-integer programs from linear programs (those that contain only continuous variables).
The method setting you are using only has an effect on linear programs. If, as in your case, the problem passed to cuOpt, is a mixed integer program, method does not change the algorithm used for solving. So the behavior you are describing is normal and expected.
The amount of time it takes to solve a MIP can vary dramatically, even if the problem size is fixed. So it is difficult to know, without knowing more about your problem, if it can be solved within a 12 hour time frame. If you can share the logs of the solve and a MPS file of the problem we might be able to help more.
You can use a solution callback to access intermediate solutions as they are produced by cuOpt. Please see the online documentation for more details.