<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: 12pt">
<DIV>That’s large, getting towards huge. I’ve heard of Ipopt being used for 
problems with millions of variables and constraints, but the biggest problems 
I’ve tried personally are about an order of magnitude smaller than yours. What I 
mean by dense, and what’s slightly more important than just the number of 
variables and constraints, is the number of nonzero elements in the Jacobian and 
Hessian matrices. These can be very large matrices, but in some cases a sparser 
larger problem can be easier than a denser smaller problem.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Even if you use serial BLAS, an optimized implementation will be at least a 
few percent and possibly significantly faster, depending on your problem 
structure. Even a few percent will be noticeable for problems as large as yours. 
You should also look at the more detailed timing output by setting 
print_timing_statistics to yes (not sure why that option isn’t listed in the 
documentation...).</DIV>
<DIV>&nbsp;</DIV>
<DIV>My MKL installation looks a little different than yours, I seem to have 
only libraries without the source files. I don’t think Lapack95 or Blas95 are 
what you want for Ipopt. Here’s how I most recently configured Ipopt to use 
sequential MKL:</DIV>
<DIV>&nbsp;</DIV>
<DIV>../configure ADD_FFLAGS=-fopenmp \</DIV>
<DIV>&nbsp; 
--with-blas=”-L/opt/intel/composer_xe_2011_sp1.11.339/mkl/lib/intel64 \</DIV>
<DIV>&nbsp; -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core \</DIV>
<DIV>&nbsp; -Wl,--rpath,/opt/intel/composer_xe_2011_sp1.11.339/mkl/lib/intel64” 
\</DIV>
<DIV>&nbsp; 
--with-lapack=”-L/opt/intel/composer_xe_2011_sp1.11.339/mkl/lib/intel64 \</DIV>
<DIV>&nbsp; -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core \</DIV>
<DIV>&nbsp; 
-Wl,--rpath,/opt/intel/composer_xe_2011_sp1.11.339/mkl/lib/intel64”</DIV>
<DIV>&nbsp;</DIV>
<DIV>I was compiling Ipopt with GNU compilers. To use serial MKL, I replaced 
-lmkl_gnu_thread with -lmkl_sequential. MKL comes with a bunch of different 
libraries for different combinations of compiler naming convention, threading 
implementation, and whether integers in the BLAS/LAPACK interfaces should be 
64-bit (ilp64 meaning integer, long, and pointer are all 64-bits) or 32-bit 
(lp64 meaning only long and pointer are 64-bits, integer is 32). Ipopt needs 
lp64, except for a few very specific situations involving Matlab.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Last I heard, the Pardiso implementation in MKL is missing some algorithm 
features that are needed for use with Ipopt. Someone more familiar with MKL 
development than me can maybe let us know if there’s any reason to believe that 
has changed recently.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I've had very good experiences with WSMP (I used 
--with-wsmp=”-L$HOME/wsmp-Linux64-GNU/lib -lwsmp64 -lpthread”), but you’ll have 
to look into its license.</DIV>
<DIV>&nbsp;</DIV>
<DIV>-Tony</DIV>
<DIV>&nbsp;</DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">
<DIV style="FONT: 10pt tahoma">
<DIV><FONT size=3 face=Calibri></FONT>&nbsp;</DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=bakhtvar@gmail.com 
href="mailto:bakhtvar@gmail.com">Mostafa.B</A> </DIV>
<DIV><B>Sent:</B> Sunday, May 12, 2013 1:32 AM</DIV>
<DIV><B>To:</B> <A title=kelman@berkeley.edu 
href="mailto:kelman@berkeley.edu">Tony Kelman</A> </DIV>
<DIV><B>Cc:</B> <A title=ipopt@list.coin-or.org 
href="mailto:ipopt@list.coin-or.org">ipopt@list.coin-or.org</A> </DIV>
<DIV><B>Subject:</B> Re: [Ipopt] Multiple Cores</DIV></DIV></DIV>
<DIV>&nbsp;</DIV></DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">
<DIV dir=ltr>
<DIV>
<DIV>
<DIV>
<DIV>Tony,<BR><BR></DIV>I don't know what you meat by dense problem, but what I 
am dealing with at the moment is about 350000 variables, 500000 inequality 
constraints and 330000 equality constraints.<BR></DIV>even I am not sure whether 
it is considered a small, medimum, large or huge problem. (what is your 
idea?)<BR>&nbsp;<BR></DIV>I have been using ma57 and ma86 along with the Blas 
version available to download with IPopt (/ThirdParty/Blas/.get.Blas). <BR>what 
I have seen so far is that IPopt with ma57 often is not able to solve instances 
of this problem (I have multiple instances for the same model, with a few 
parameters changed) and it returns memory problem while I have 16GB 
ram.<BR><BR>Talking about IPopt with ma86; this can handle the problem but when 
I look into the resources&nbsp; used I can see that IPopt is taking almost 10GB 
ram in 95% of the solving time and only a single cpu core on 99% of the solving 
time. It usually takes anywhere between 4 to 24 hours to solve the problem, very 
dependent on the CPU speed and problem instance being solved. <BR><BR></DIV>
<DIV>Based on your suggestion I got Intel MKL (Intel C++ Studio) installed on my 
machine. If I am right the MKL includes optimized Blas, Lapack and 
Pardiso.<BR></DIV>
<DIV><BR>My question is that how can I install IPopt with the MKL libraries. I 
have seen the page you guided me to but to be honest I don't know where exactly 
to refer IPopt for these libraries.<BR><BR></DIV>
<DIV>I have searched blas, lapack and pardiso in my MKL installation folder and 
took screenshots of the files found.<BR><BR></DIV>
<DIV>sorry for being such a newbie in Linux-Ubuntu.<BR><BR></DIV>
<DIV>Regards<BR></DIV>
<DIV>-Mosy<BR></DIV></DIV>
<DIV class=gmail_extra>
<DIV>&nbsp;</DIV></DIV></DIV></DIV></DIV></BODY></HTML>