<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Folks,<br>
    <br>
    I'm in the process of porting our Ipopt build over to Intel's MKL
    Pardiso.&nbsp; I started getting crashes because the PT_ and IPARM_
    arrays weren't being initialised.&nbsp; I think there's an error in the
    code that sets up the solver if it's the MKL version (in
    IpPardisoSolverInterface.cpp)&nbsp; There's a call to PARDISOINIT_FUNC
    around lines 400 - 405, which is defined earlier in the file with
    the comment:<br>
    <pre><font face="Lucida Console">// The following is a fix to allow linking with Pardiso library under Windows</font></pre>
    In the Intel MKL version of PARDISO there isn't a 6-parameter
    PARDISO call that's described in the docs.&nbsp; It passes in the linker
    though, so it must be exposed by the MKL library (possibly by
    mistake?).&nbsp; If you call it though it takes out everything.&nbsp; In the
    Intel version the initialisation is just performed as part of the
    first PARDISO call (typically PHASE = 11).<br>
    <br>
    This can be fixed by wrapping the the call to PARDISOINIT_FUNC in a
    #ifdef HAVE_PARDISO_MKL check and initialising the PT_ and IPARM_
    arrays:&nbsp; <br>
    <br>
    <small><small><font face="Lucida Console">&nbsp;&nbsp;&nbsp; // Call Pardiso's
          initialization routine<br>
          &nbsp;&nbsp;&nbsp; IPARM_[0] = 0;&nbsp; // Tell it to fill IPARM with default
          values(?)<br>
          #ifdef HAVE_PARDISO_MKL&nbsp; //MKL check<br>
          &nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 64; i++)<br>
          &nbsp;&nbsp;&nbsp; {<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPARM_[i] = 0;<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PT_[i] = 0;<br>
          &nbsp;&nbsp;&nbsp; }<br>
          #else<br>
          #ifndef HAVE_PARDISO_OLDINTERFACE<br>
          &nbsp;&nbsp;&nbsp; ipfint ERROR = 0;<br>
          &nbsp;&nbsp;&nbsp; ipfint SOLVER = 0; // initialize only direct solver<br>
          <br>
          &nbsp;&nbsp;&nbsp; PARDISOINIT_FUNC(PT_, &amp;MTYPE_, &amp;SOLVER, IPARM_,
          DPARM_, &amp;ERROR);<br>
          #else<br>
          &nbsp;&nbsp;&nbsp; PARDISOINIT_FUNC(PT_, &amp;MTYPE_, IPARM_);<br>
          #endif<br>
          <br>
          #endif&nbsp; //end MKL check<br>
        </font></small></small><br>
    This runs happily on my machine in 32 and 64-bit.&nbsp; Do you want this
    as a patch (or have I messed something else up in the compile with
    defines, and this shouldn't be necessary?)<br>
    <br>
    Cheers,<br>
    <br>
    Damien <br>
    &nbsp;&nbsp; <br>
    <br>
    <br>
    <br>
    <br>
  </body>
</html>