<div dir="ltr"><div><div>I know it could look provocative, but if this is a large share of your workload, you could consider using Linux and compiling  IPOPT there.. that's as simple as putting the HSL libs in the right place, call the Ipopt configure script (with `--prefix=/usr` in ubuntu to then make your compiled Ipopt systemwise available) and then just install Julia/JuMP or R...<br></div>(I keep some slightly more detailed notes here: <a href="https://ffsm-project.org/wiki/en/dev/development#ipopt">https://ffsm-project.org/wiki/en/dev/development#ipopt</a>)<br><br></div>Antonello<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 5 June 2017 at 19:15, Don Boyd <span dir="ltr"><<a href="mailto:donboyd5@gmail.com" target="_blank">donboyd5@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>Hi all,</div><div><br></div><div>I am spinning my wheels so much that I must ask for help. I know little about configure...make... and think I am messing things up with experimentation re path, compiler setting, compiler flags, etc. I don't really understand these things very well.</div><div><br></div><div>Goal: use HSL linear solvers with Ipopt, and call Ipopt from R or Julia (just one will do), on Windows 10 64-bit machine (AMD 8-core FX-8350, 32gb RAM)</div><div><br></div><div>I am hoping you can recommend one or two approaches to accomplish this. Details follow.</div><div><br></div><div>I have academic license to HSL source. Have been unsuccessful at dozens and dozens of attempts to either (1) compile HSL with Ipopt , or (2) compile HSL as libhsl.dll (along with libmetis.dll, which libhsl.dll needs) to use with Ipopt.</div><div><br></div><div>Either of two alternative approaches would be great for me:</div><div><br></div><div>1. R:  Compile libhsl.dll (and libmetis.dll I think) in a manner that works with my existing Ipoptr package interface. (I have had success using Ipoptr with the pardiso dll, so I think this should work).</div><div><br></div><div>Considerations: (a) in 2015 I compiled Ipoptr with Ipopt 3.12 successfully after dozens of attempts but have never been able to recompile since, (b) I used (i) the Rtools 3.3 toolchain and (ii) R's Rblas.dll and Rlapack.dll. I am assuming if I compile an HSL dll to load, I should build it with the same (?) toolchain, and Rblas and Rlapack.</div><div><br></div><div>2. Julia: Compile libhsl.dll and libmetis.dll. (I have had success using Ipopt.jl with the pardiso dll so I think this should work.) I assume I do not have to compile with the Rtools toolchain or with Rblas.dll and Rlapack.dll, but could. Also, I assume I would not have to compile Ipopt, as Julia installs it so nicely in Ipopt.jl (that would be an enormous relief).</div><div><br></div><div>#2 might be best, as (a) Julia will be fast, and (b) it would force me to learn more Julia.</div><div><br></div><div>(Another option that would be fine is (3) full compilation of HSL with Ipopt, for use with Ipoptr in R, or for use with Ipopt.jl in Julia, but that seems harder since I fail at all attempts to compile Ipopt by itself.)</div><div><br></div><div><br></div><div>My attempts:</div><div><br></div><div>I am not sure what information to provide because I have failed at probably 50 or more variations. </div><div><br></div><div>Let me describe my most recent failure to build libhsl.dll, since building that might be the most desirable outcome. I can provide any follow-up information that is needed.</div><div><br></div><div>1. Computer environment:</div><div><br></div><div>1.1 Compilers:</div><div>Rtools 3.3, freshly re installed today, as administrator, from <a href="https://cran.rstudio.com/bin/windows/Rtools/Rtools34.exe" target="_blank">https://cran.rstudio.com/<wbr>bin/windows/Rtools/Rtools34.<wbr>exe</a>, located in C:\Rtools\mingw_64</div><div><br></div><div>I have deleted all other compilers from my system to avoid confusion. (Deleted separate MinGW installation, and separate TDM installation.)</div><div><br></div><div>1.2  Bash and its environment</div><div>- msys.bat and the MinGW tools, reinstalled today, as administrator: installed mingw32-base, msys-base, and mingw-developer-toolkit. Did not install compilers.</div><div>- edited fstab file to include 1 and only 1 substantive line:</div><div>      C:/Rtools/mingw_64<span class="m_-2278444773170897035gmail-Apple-tab-span" style="white-space:pre-wrap">                       </span>/mingw</div><div><br></div><div>1.3 Path</div><div><br></div><div>Path=C:\Ipopt2017\Pardiso\<wbr>libpardiso500-WIN-X86-64;C:\<wbr>Program Files\RStudio\bin\pandoc;C:\<wbr>ProgramData\Oracle\Java\<wbr>javapath;C:\PROGRA~1\R\R-34~1.<wbr>0\bin\x64;C:\Program Files\R\R-3.4.0\bin;C:\<wbr>WINDOWS;C:\WINDOWS\System32\<wbr>Wbem;C:\WINDOWS\System32\<wbr>WindowsPowerShell\v1.0\;C:\<wbr>Program Files (x86)\ATI Technologies\ATI.ACE\Core-<wbr>Static;C:\Program Files\EmEditor;C:\Strawberry\<wbr>c\bin;C:\Strawberry\perl\site\<wbr>bin;C:\Strawberry\perl\bin;%<wbr>SystemRoot%\system32;%<wbr>SystemRoot%;%SystemRoot%\<wbr>System32\Wbem;%SYSTEMROOT%\<wbr>System32\WindowsPowerShell\v1.<wbr>0\;C:\ProgramData\chocolatey\<wbr>bin;C:\Program Files\Java\jdk1.7.0_79\bin;C:\<wbr>Program Files\MiKTeX 2.9\miktex\bin\x64\;C:\Program Files\TortoiseSVN\bin;C:\<wbr>Program Files\Mosek\8\tools\platform\<wbr>win64x86\bin;c:\mingw\msys\1.<wbr>0\bin<br></div><div><br></div><div>2. Sources:<br></div><div><br></div><div>2.1 HSL routines</div><div>- downloaded coinhsl-2014.01.10.<wbr>zip</div><div>- extracted to its own directory per the HSL README (renamed it to coinhsl but don't think rename needed)</div><div><br></div><div>2.2 Metis</div><div>- downloaded Metis 4.0.4 from <a href="http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/OLD/metis-4.0.3.tar.gz" target="_blank">http://glaros.dtc.umn.edu/<wbr>gkhome/fetch/sw/metis/OLD/<wbr>metis-4.0.3.tar.gz</a> and put in its own subdirectory of coinhsl, named metis-4.0.3</div><div><br></div><div>3. Build environment</div><div>Created subdirectory ../coinhsl/build/x64 as location for the build</div><div><br></div><div>3. Configuration</div><div>3.0 Opened Msys script shell as administrator</div><div><br></div><div>3.1 Preliminaries:</div><div><div>where make gives:</div><div>C:\MinGW\msys\1.0\bin\make.exe</div></div><div>(Not sure if I should want it to find the Rtools make instead)</div><div><br></div><div>3.2 Results of gcc -v</div><div>$ gcc -v<br></div><div><div><div>Using built-in specs.</div><div>COLLECT_GCC=C:\Rtools\mingw_<wbr>64\bin\gcc.exe</div><div>COLLECT_LTO_WRAPPER=C:/Rtools/<wbr>mingw_64/bin/../libexec/gcc/<wbr>x86_64-w64-mingw32/4.9.3/lto-<wbr>wrapper.exe</div><div>Target: x86_64-w64-mingw32</div><div>Configured with: ../../../src/gcc-4.9.3/<wbr>configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/home/Jeroen/<wbr>mingw-gcc-4.9.3/x86_64-493-<wbr>posix-seh-rt_v3-s/mingw64 --with-gxx-include-dir=/<wbr>mingw64/x86_64-w64-mingw32/<wbr>include/c++ --enable-static --disable-shared --disable-multilib --enable-languages=c,c++,<wbr>fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-<wbr>runtime-libs --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/home/Jeroen/mingw-<wbr>gcc-4.9.3/prerequisites/x86_<wbr>64-w64-mingw32-static --with-mpfr=/home/Jeroen/<wbr>mingw-gcc-4.9.3/prerequisites/<wbr>x86_64-w64-mingw32-static --with-mpc=/home/Jeroen/mingw-<wbr>gcc-4.9.3/prerequisites/x86_<wbr>64-w64-mingw32-static --with-isl=/home/Jeroen/mingw-<wbr>gcc-4.9.3/prerequisites/x86_<wbr>64-w64-mingw32-static --with-cloog=/home/Jeroen/<wbr>mingw-gcc-4.9.3/prerequisites/<wbr>x86_64-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='x86_64-<wbr>posix-seh, Built by MinGW-W64 project' --with-bugurl=<a href="http://sourceforge.net/projects/mingw-w64" target="_blank">http://<wbr>sourceforge.net/projects/<wbr>mingw-w64</a> CFLAGS='-O2 -pipe -I/home/Jeroen/mingw-gcc-4.9.<wbr>3/x86_64-493-posix-seh-rt_v3-<wbr>s/mingw64/opt/include -I/home/Jeroen/mingw-gcc-4.9.<wbr>3/prerequisites/x86_64-zlib-<wbr>static/include -I/home/Jeroen/mingw-gcc-4.9.<wbr>3/prerequisites/x86_64-w64-<wbr>mingw32-static/include' CXXFLAGS='-O2 -pipe -I/home/Jeroen/mingw-gcc-4.9.<wbr>3/x86_64-493-posix-seh-rt_v3-<wbr>s/mingw64/opt/include -I/home/Jeroen/mingw-gcc-4.9.<wbr>3/prerequisites/x86_64-zlib-<wbr>static/include -I/home/Jeroen/mingw-gcc-4.9.<wbr>3/prerequisites/x86_64-w64-<wbr>mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/home/Jeroen/mingw-gcc-4.9.<wbr>3/x86_64-493-posix-seh-rt_v3-<wbr>s/mingw64/opt/lib -L/home/Jeroen/mingw-gcc-4.9.<wbr>3/prerequisites/x86_64-zlib-<wbr>static/lib -L/home/Jeroen/mingw-gcc-4.9.<wbr>3/prerequisites/x86_64-w64-<wbr>mingw32-static/lib '</div><div>Thread model: posix</div><div>gcc version 4.9.3 (x86_64-posix-seh, Built by MinGW-W64 project)</div></div><div><br></div><div><br></div><div>3.3 Simple configuration from within ../coinhsl/build/x64<br></div></div><div>Configured with:</div><div>../../configure --enable-shared --with-blas="-LC:/PROGRA~1/R/<wbr>R-34~1.0/bin/x64 -lRblas"<br></div><div><br></div><div>To my inexpert eyes, it looks successful: config.log had exit 0. But there seemed to be problems finding some lapack functions but I don't really understand it or know what to look for.</div><div><br></div><div>4. Make</div><div>4.1 The make seemed to start out right but then it had a lot of undefined references related to fortran code and functions that I gather are part of lapack. Here are the first few lines in the make process that seem to indicate problems:</div><div><br></div><div><div>libtool: link: if test "x`/bin/sed 1q .libs/libcoinhsl.def`" = xEXPORTS; then cp .libs/libcoinhsl.def .libs/libcoinhsl-0.dll.def; else echo EXPORTS > .libs/libcoinhsl-0.dll.def; cat .libs/libcoinhsl.def >> .libs/libcoinhsl-0.dll.def; fi</div><div>libtool: link:  gfortran -shared .libs/libcoinhsl-0.dll.def  common/.libs/deps90.o common/.libs/deps.o common/.libs/dump.o mc19/.libs/mc19d.o ma27/.libs/ma27d.o ma28/.libs/ma28d.o ma57/.libs/ma57d.o hsl_ma77/.libs/hsl_ma77d.o hsl_ma77/C/.libs/hsl_ma77d_<wbr>ciface.o hsl_ma86/.libs/hsl_ma86d.o hsl_ma86/C/.libs/hsl_ma86d_<wbr>ciface.o hsl_mc68/C/.libs/hsl_mc68i_<wbr>ciface.o hsl_ma97/.libs/hsl_ma97d.o hsl_ma97/C/.libs/hsl_ma97d_<wbr>ciface.o loadmetis/.libs/loadmetis.o    -O2   -o .libs/libcoinhsl-0.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libcoinhsl.dll.a</div><div>common/.libs/deps90.o: In function `update':</div><div>c:\Ipopt2017\hslnew\coinhsl\<wbr>build\x64/../../common/deps90.<wbr>f90:2402: undefined reference to `dgemm_'</div><div>common/.libs/deps90.o: In function `update2':</div><div>c:\Ipopt2017\hslnew\coinhsl\<wbr>build\x64/../../common/deps90.<wbr>f90:2456: undefined reference to `dcopy_'</div><div>c:\Ipopt2017\hslnew\coinhsl\<wbr>build\x64/../../common/deps90.<wbr>f90:2463: undefined reference to `dgemm_'</div></div><div><br></div><div>4.2 And here are the last few lines of the make process:</div><div><div>c:\Ipopt2017\hslnew\coinhsl\<wbr>build\x64/../../hsl_ma97/hsl_<wbr>ma97d.f90:5900: undefined reference to `dtrsm_'</div><div>hsl_ma97/.libs/hsl_ma97d.o: In function `__hsl_ma97_double_MOD_ma97_<wbr>solve_fredholm_double':</div><div>c:\Ipopt2017\hslnew\coinhsl\<wbr>build\x64/../../hsl_ma97/hsl_<wbr>ma97d.f90:4487: undefined reference to `dnrm2_'</div><div>collect2.exe: error: ld returned 1 exit status</div><div>make[1]: *** [<a href="http://libcoinhsl.la" target="_blank">libcoinhsl.la</a>] Error 1</div><div>make[1]: Leaving directory `/c/Ipopt2017/hslnew/coinhsl/<wbr>build/x64'</div><div>make: *** [all] Error 2</div></div><div><br></div><div><br></div><div>So that's about it. I can provide config.log, etc., if at all useful. All other things I have tried have resulted in errors, too, but often different kinds of errors. I would much appreciate advice.</div><div><br></div><div>Again, I would be very happy to have this work under Julia or under R, in Windows 64-bit - an HSL dll would be ideal, but full compilation of HSL with Ipopt also would be fine.</div><div><br></div><div>Thank you very much in advance.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Don Boyd</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></font></span></div>
<br>______________________________<wbr>_________________<br>
Ipopt mailing list<br>
<a href="mailto:Ipopt@list.coin-or.org">Ipopt@list.coin-or.org</a><br>
<a href="https://list.coin-or.org/mailman/listinfo/ipopt" rel="noreferrer" target="_blank">https://list.coin-or.org/<wbr>mailman/listinfo/ipopt</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><span><span>Antonello Lobianco<br>AgroParisTech, Laboratoire d'Economie Forestière<br>14 Rue Girardet - 54000 Nancy, France<br>Tel: +33.383396865<br>Email, university: <a href="mailto:antonello.lobianco@nancy.inra.fr" target="_blank">antonello.lobianco@inra.fr</a><br>Email, personal: <a href="mailto:antonello@lobianco.org" target="_blank">antonello@lobianco.org</a><br><a href="http://antonello.lobianco.org/" target="_blank">http://antonello.lobianco.org</a></span></span></div></div></div></div></div></div>
</div>