jump-dev / Ipopt.jl

A Julia interface to the Ipopt nonlinear solver
https://github.com/coin-or/ipopt
Other
152 stars 58 forks source link

Can a newer version of Ipopt be distributed for windows? #27

Closed davidanthoff closed 9 years ago

davidanthoff commented 9 years ago

I currently have a JuMP problem that solves on juliabox, but not on my local (windows) machine. The only difference between the two setups that I was able to find is the version of Ipopt: juliabox is on 3.11.7, whereas my local machine is on 3.11.0 (no custom install, just what Ipop.jl brings in the box).

Could the bundled Ipopt version for windows be updated?

Also, if someone from the Ipopt.jl or JuMP team wants to try this out, I'd be happy to give you access to the bitbucket repo with the replication code. Thanks!

@tkelman, @mlubin

davidanthoff commented 9 years ago

Oh, and I should say, the problem on my windows machine is that I get a maximum number of iterations exceeded.

tkelman commented 9 years ago

Yeah I have the latest release up on my personal project on the opensuse build service that you can download with WinRPM via

using WinRPM
push!(WinRPM.sources, "http://download.opensuse.org/repositories/home:/kelman:/mingw-coinor/openSUSE_13.1")
WinRPM.update()
WinRPM.install("Ipopt")

I've been waiting for the next release of https://github.com/ampl/mp so we can include the command-line AMPL executable as well before submitting to the official default repository.

davidanthoff commented 9 years ago

I executed all of these commands but when I run my problem it is still using Ipopt 3.11.0. Is there anything else I need to do? Your WinRPM commands actually don't replace the Ipopt binaries in the Ipopt.jl package directory, or do they?

tkelman commented 9 years ago

No, you'd need to adjust the deps/build.jl file and rerun Pkg.build("Ipopt"), or change the library path in deps/deps.jl (and don't rerun Pkg.build("Ipopt")). See the tk/winrpm branch for the former.

davidanthoff commented 9 years ago

I checked out the tk/winrpm branch for the Ipopt package, and then did a Pkg.build("Ipopt"). I get the following output/error:

julia> Pkg.build("Ipopt")
INFO: Building WinRPM
INFO: Downloading http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1//repodata/repomd.xml
INFO: Downloading http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1//repodata/repomd.xml
INFO: Building Ipopt
INFO: Downloading http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1//repodata/repomd.xml
INFO: Downloading http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1//repodata/repomd.xml
INFO: Downloading http://download.opensuse.org/repositories/home:/kelman:/mingw-coinor/openSUSE_13.1/repodata/repomd.xml
INFO: Updating WinRPM package list
INFO: Downloading http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1//repodata/repomd.xml
INFO: Downloading http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1//repodata/repomd.xml
INFO: Downloading http://download.opensuse.org/repositories/home:/kelman:/mingw-coinor/openSUSE_13.1/repodata/repomd.xml
INFO: Nothing to do
====================================================[ ERROR: Ipopt ]====================================================

Provider PackageManager failed to satisfy dependency libipopt
while loading C:\Users\anthoff\.julia\v0.3\Ipopt\deps\build.jl, in expression starting on line 75

========================================================================================================================

====================================================[ BUILD ERRORS ]====================================================

WARNING: Ipopt had build errors.

 - packages with build errors remain installed in C:\Users\anthoff\.julia\v0.3
 - build the package(s) and all dependencies with `Pkg.build("Ipopt")`
 - build a single package by running its `deps/build.jl` script

========================================================================================================================

julia>
tkelman commented 9 years ago

If dlopen(include(Pkg.dir("Ipopt","deps","deps.jl"))) doesn't work, and you got a "Updated Julia's gcc dlls" message earlier in the same session, this is the same issue as the ZMQ problem, should go away after restarting Julia.

davidanthoff commented 9 years ago

The dlopen doesn't work, there is actually no deps.jl around to include. I quit julia and restarted it and then tried Pkg.build("Ipopt") but I just get the same error.

tkelman commented 9 years ago

Hm, strange, this isn't what I thought it was then, sorry. What does BinDeps.debug("Ipopt") say? What branches are Ipopt, WinRPM, and BinDeps on? Does versioninfo(true) show any other local modifications to them?

davidanthoff commented 9 years ago

I can't see anything unusual for either, but here we go:

julia> BinDeps.debug("Ipopt")
INFO: Reading build script...
INFO: Downloading http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_13.1//repodata/repomd.xml
INFO: Downloading http://download.opensuse.org/repositories/windows:/mingw:/win64/openSUSE_13.1//repodata/repomd.xml
INFO: Downloading http://download.opensuse.org/repositories/home:/kelman:/mingw-coinor/openSUSE_13.1/repodata/repomd.xml
INFO: Downloading http://download.opensuse.org/repositories/home:/kelman:/mingw-coinor/openSUSE_13.1/repodata/repomd.xml
The package declares 1 dependencies.
 - Library "libipopt"
    - Providers:
      - Simple Build Process (can't provide)
      - RPM package Ipopt

julia>

and

julia> versioninfo(true)
Julia Version 0.3.5
Commit a05f87b* (2015-01-08 22:33 UTC)
Platform Info:
  System: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
  WORD_SIZE: 64
           Microsoft Windows [Version 6.3.9600]
  uname: MINGW32_NT-6.2 1.0.12(0.46/3/2) 2012-07-05 14:56 i686 unknown
Memory: 15.907882690429688 GB (4401.21484375 MB free)
Uptime: 1.2082867739204e6 sec
Load Avg:  0.0  0.0  0.0
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz:
       speed         user       nice        sys       idle        irq ticks
#1  3392 MHz   73254671          0   99151375  1035881093    9993312 ticks
#2  3392 MHz   67566953          0  101539906  1039180078   25754937 ticks
#3  3392 MHz   99317890          0   85587750  1023381312     885578 ticks
#4  3392 MHz  107238921          0   52658656  1048389375    1013250 ticks
#5  3392 MHz   76548312          0   78731203  1053007421     629937 ticks
#6  3392 MHz   58626875          0   62308984  1087351078     814187 ticks
#7  3392 MHz   87815156          0   82275750  1038196031     624171 ticks
#8  3392 MHz   61690046          0   47926390  1098670500     577359 ticks

  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas
  LIBM: libopenlibm
  LLVM: libLLVM-3.3
Environment:
  HOME = C:\Users\anthoff
  HOMEDRIVE = C:
  HOMEPATH = \Users\anthoff
  LIBPATH = C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral;C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral;
  PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.RB;.RBW;.CPL
  TERM = cygwin

Package Directory: C:\Users\anthoff\.julia\v0.3
20 required packages:
 - ArrayViews                    0.4.8
 - Autoreload                    0.2.0
 - Compat                        0.2.12
 - DataFrames                    0.6.1
 - DataFramesMeta                0.0.1
 - Datetime                      0.1.7
 - Distributions                 0.6.3+             fixmodeforgamma
 - GLPKMathProgInterface         0.1.13
 - Gadfly                        0.3.11
 - IJulia                        0.1.16+            rebasedsetup
 - Ipopt                         0.1.12+            tk/winrpm
 - Jewel                         1.0.4
 - JuMP                          0.8.0
 - NLsolve                       0.3.0
 - NamedArrays                   0.4.1
 - ProfileView                   0.0.9
 - PyPlot                        1.5.1
 - RDatasets                     0.1.1
 - Taro                          0.1.2
 - Winston                       0.11.7
61 additional packages:
 - BinDeps                       0.3.7
 - Borg                          0.0.0-             master (unregistered)
 - Cairo                         0.2.24
 - Calculus                      0.1.5
 - Codecs                        0.1.3
 - Color                         0.4.1
 - Compose                       0.3.11
 - Contour                       0.0.6
 - DataArrays                    0.2.11
 - DataStructures                0.3.5
 - Dates                         0.3.2
 - Distances                     0.2.0
 - DualNumbers                   0.1.2
 - FactCheck                     0.2.5
 - FixedPointNumbers             0.0.6
 - GLPK                          0.2.14
 - GZip                          0.2.13
 - Graphics                      0.1.0
 - Graphs                        0.5.2
 - Grid                          0.3.7
 - Hexagons                      0.0.2
 - IAMF                          0.0.0-             master
 - ImageView                     0.1.11
 - Images                        0.4.31
 - ImmutableArrays               0.0.6
 - IniFile                       0.2.4
 - Iterators                     0.1.7
 - JSON                          0.4.1
 - JavaCall                      0.2.0
 - JuDP                          0.0.0-             master (unregistered)
 - JuliaParser                   0.6.2
 - KernelDensity                 0.1.0
 - Knitro                        0.0.0-             master
 - LNR                           0.0.1
 - LaTeXStrings                  0.1.2
 - Lazy                          0.8.3
 - LibExpat                      0.0.6
 - Loess                         0.0.3
 - MathProgBase                  0.3.9
 - Memoize                       0.0.0
 - NaNMath                       0.0.2
 - Nettle                        0.1.8
 - Optim                         0.4.0
 - PDMats                        0.3.1
 - PyCall                        0.7.3
 - REPLCompletions               0.0.3
 - Reexport                      0.0.2
 - Requires                      0.1.1
 - ReverseDiffSparse             0.2.2
 - SHA                           0.0.3
 - SIUnits                       0.0.2
 - Showoff                       0.0.3
 - SortingAlgorithms             0.0.2
 - StatsBase                     0.6.12
 - TexExtensions                 0.0.2
 - Tk                            0.2.17
 - URIParser                     0.0.4
 - WinCall                       0.0.0-             master (unregistered)
 - WinRPM                        0.1.6
 - ZMQ                           0.1.16
 - Zlib                          0.1.7

julia>
tkelman commented 9 years ago

Don't know why BinDeps isn't registering that the "RPM package Ipopt" can provide libipopt, I'd have to walk through BinDeps' dependency code which is never fun. Manually doing using WinRPM; WinRPM.install("Ipopt") might work but that should really be happening automatically here...

davidanthoff commented 9 years ago

I tried this on a different machine now, and there it works... Very strange...

tkelman commented 9 years ago

Is the problematic machine using a source build of Julia or something?

davidanthoff commented 9 years ago

I deleted the package directory on that machine and added the packages fresh, now everything works.

I'll keep this issue open until your winrpm branch is merged into master?

Thanks, as always, for helping out!

tkelman commented 9 years ago

If you have some large-ish problems that solve correctly with both, it would be useful to compare the performance between the two. I'm hoping there shouldn't be significant differences but haven't done much testing so far.

davidanthoff commented 9 years ago

The one model I have right now does not solve on 3.11.0 (at least not with the default iteration limit), but does solve in about 150 iterations on 3.12.1. Happy to give you access to that repo if you want to try and play around, just send me an email with your bitbucket account name and I'll let you know the details. The model is not large, though...

tkelman commented 9 years ago

closed by #29