Trying to solve nonlinear JuMP models with MadNLP.Optimizer(linear_solver=CUDSSSolver).
I have added MadNLP, MadNLPGPU, CUDSS, and CUDSS_jll.
While activating project, I keep getting warning for circular dependencies.
And the error “CUDSSSolver not defined” whenever I initialize a model or optimize.
I was able to run it with LapackGPUsolvers. What’s the correct procedure to run JuMP models with MadNLPGPU cuDSS,solver and how to solve the cirular dependencies?
My current approach is:
using JuMP, MadNLP, CUDA, MadNLPGPU
mod = Model(() ->MadNLP.Optimizer(linear_solver=CUDSSSolver))
The problem of cirlculant dependencies is related to an extension of Atomix.jl and it impacts all the GPU ecosystem.
I didn’t investigated if we can solve it with a specific bound of some packages.
For solving JuMP problems on GPU, you need to convert them in ExaModels such that we can perform the AD on GPU:
I converted a JuMP model ( AC-OPF model solves easily with most optimizers) to ExaModels and ran it with LapackGPU and cuDSS.
Firstly, as per MadNLP github I should be using CUDSSSolver, but I get
set_optimizer(mod, () → ExaModels.MadNLPOptimizer(CUDSSSolver))
ERROR: UndefVarError: CUDSSSolver not defined in Main
Instead just ‘CUDSS’ works but then I get:
resutl = madnlp(em)
EXIT: Internal Error.
ERROR: Scalar indexing is disallowed.
Invocation of setindex! resulted in scalar indexing of a GPU array.
This is typically caused by calling an iterating implementation of a method.
Such implementations do not execute on the GPU, but very slowly on the CPU,
and therefore should be avoided.
This error happens with LapackGPUSolver as well.
Also which packages to I need to access CuCholeskySolver, GLUSolver and RFSolver?