New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compiling with pardiso on ubuntu #106
Comments
wherever you're building from, gist the |
Thanks for the response! https://gist.github.com/JackDevine/2668bc07b63a7458e76b1da0dfa6c743 |
Okay nope the top-level |
Thanks, I have made a gist for the https://gist.github.com/JackDevine/e9638cc9836f559e0955f0900c5ce861 Where do you think is the best place to go for help on the Ipopt side? |
Some combination of here, the Ipopt mailing list, or https://github.com/coin-or/Ipopt. Response times are probably slower places other than here, but you'll have people other than just from JuliaOpt see it.
drop the |
I removed the flag and updated the gist. Thanks for all of your help so far. |
same lines of the log, now it's |
Didn't give an error. I still have to go through the rest of the installation process to check if things are fully working though. |
Now when I run
|
can you paste or gist the whole thing? I can't really tell what it's trying to link there. Presumably your libpardiso should have |
|
That's odd. I'd check |
Yes, it seems that somehow the symbols are missing:
If I use
Then the configure, julia> Pkg.build("Ipopt")
INFO: Building Ipopt
WARNING: imported binding for srcdir overwritten in module __anon__
julia> Pkg.test("Ipopt")
INFO: Testing Ipopt
/home/devja964/julia/bin/julia: symbol lookup error: /home/devja964/.julia/v0.6/Ipopt/deps/usr/lib/libipopt.so: undefined symbol: pardisoinit_
============================================================================[ ERROR: Ipopt ]============================================================================
failed process: Process(`/home/devja964/julia/bin/julia -Cnative -J/home/devja964/julia/lib/julia/sys.so --compile=yes --depwarn=yes --check-bounds=yes --code-coverage=none --color=yes --compilecache=yes /home/devja964/.julia/v0.6/Ipopt/test/runtests.jl`, ProcessExited(127)) [127]
========================================================================================================================================================================
ERROR: Ipopt had test errors Then if I try solving a model with the mumps linear solver, everything is fine, but if I try pardiso, then
So I agree that this is the point where I ask the pardiso authors for support. Thank you so much for all of your help so far, I really appreciate it. |
If it builds as C++ but doesn't load in julia, maybe you need the pardiso library to be pre-emptively dlopen'ed at the julia level, and/or added on the LD_LIBRARY_PATH |
I am not completely sure that I understand. I have added julia> Libdl.dlopen("/lib/libpardiso500-GNU461-X86-64")
Ptr{Void} @0x0000000002773220 |
and if you do that before, and in the same process (so not via Pkg.test), as you try to use Ipopt.jl with the pardiso linear_solver setting, does it help any? |
julia> Libdl.dlopen("/lib/libpardiso500-GNU461-X86-64")
Ptr{Void} @0x0000000002ece010
julia> Pkg.build("Ipopt")
INFO: Building Ipopt
WARNING: imported binding for srcdir overwritten in module __anon__
julia> using JuMP, Ipopt
INFO: Recompiling stale cache file /home/devja964/.julia/lib/v0.6/Ipopt.ji for module Ipopt.
julia> m = Model(solver=IpoptSolver(linear_solver="pardiso"))
Feasibility problem with:
* 0 linear constraints
* 0 variables
Solver is Ipopt
julia> @variable(m,x[i=1:5])
5-element Array{JuMP.Variable,1}:
x[1]
x[2]
x[3]
x[4]
x[5]
julia> @constraint(m,[i=1:5],x[i]-0.1 == 0)
5-element Array{JuMP.ConstraintRef,1}:
x[1] = 0.1
x[2] = 0.1
x[3] = 0.1
x[4] = 0.1
x[5] = 0.1
julia> solve(m)
julia: symbol lookup error: /home/devja964/.julia/v0.6/Ipopt/deps/usr/lib/libipopt.so: undefined symbol: pardisoinit_ And then it exits Julia |
Hi all, I am pleased to say that I kind of sort of solved this problem by using the pardiso bundled with MKL. I used
to configure Ipopt. So basically, the issue that I raised is not resolved, but I can still use the pardiso solver through MKL. I am seeing some outrageous performance gains comparing mumps and pardiso in the models that I am solving. I have sent an email to the pardiso team and I am waiting to hear what they have to say. I also want to point out that @tkelman provided far more help than I could have reasonably asked of anyone, so I am very grateful. Since this is now an upstream issue with a simple workaround, I am happy for this issue to be closed. |
Hello Guys! I'm also having this kind of problem here.. To be sure that the problem is inside Julia I set the pardiso linear solver in the cpp example provided with Ipopt's code.. it works and prints the correct information saying that it is using Pardiso. On the Julia side, however, I get: Exception of type: OPTION_INVALID in file "IpAlgBuilder.cpp" at line 366: If a try to run a simple problem: using JuMP
using Ipopt
m = Model(solver=IpoptSolver(linear_solver="pardiso"))
@variable(m, x >= 0)
@objective(m, :Min, x)
solve(m) Moreover, Pardiso.jl works fine with and without MKL. Any clues? |
It is interesting that you managed to prove that this is a Julia issue. Have you tried using the Pardiso bundled with MKL like described in my last comment? It was quite a while ago, but I remember getting that to work fine. |
I tried your suggestion.. but didn't work.
Em seg, 22 de jul de 2019 19:08, Jack Devine <notifications@github.com>
escreveu:
… It is interesting that you managed to prove that this is a Julia issue.
Have you tried using the Pardiso bundled with MKL like described in my
last comment? It was quite a while ago, but I remember getting that to work
fine.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#106>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AEXMSVTV7IC2Z6I2KRNYJFLQAYVWXANCNFSM4EWEEMCA>
.
|
That is unfortunate. Since raising this issue I used the work around described above and then I wrote my own custom Julia solver for the problem that I was solving, which is what I use now. So unfortunately, I can't comment on whether my work around still works with the current version of Julia etc. Hopefully you can get this sorted out soon. |
Closing as stale. #236 provides instructions on how to use Pardiso on Ubuntu. |
I am trying to compile laplace_mpi.c but get: |
I am trying to build Ipopt with the pardiso solver by following the instructions on the README. I used the exact same code as the README, except I changed the configure line to be:
This results in a big long message which ends with
I have managed to get the library to work with Pardiso.jl, so it is not as though I downloaded a bad library/licence key.
I also opened a discourse thread about this a while ago, but this issue is separate, because now I am trying to custom install the Pardiso solver.
Not sure if this helps, but here is my Julia versioninfo:
And my gfortran version:
Any help would be greatly appreciated.
The text was updated successfully, but these errors were encountered: