[Ipopt] Can PARDISO 4.0 work with ipopt in windows?

Teeter, Chuck cteeter at Suncor.com
Thu Feb 18 15:13:46 EST 2010


York,
 
I use Visual Studio 2008 to build IPOPT 3.8.  In my case, I build IPOPT as a static library and link it with PARDISO.  If you are using Visual Studio, you must make sure that the file "IpPardisoSolverInterface.cpp" is included in your project file, or it will not be compiled even if you've changed it.  I've noticed that some IPOPT source files have not been included in the Visual Studio project file, and I've had to manually add some on occasion.
 
If you are building PARDISO as a DLL, you have to perform a few additional steps.
 
1.  When you build the IPOPT DLL, you will need to link it with the import library named "libpardiso400_INTEL_IA32.lib".  This is done so that when the IPOPT DLL is loaded by your executable, it can find the PARDISO functions it needs at runtime in "libpardiso400_INTEL_IA32.dll".  The process of building the IPOPT DLL should also produce a .lib file of the same name as the DLL.
 
2.  When you build your executable, you must link your code to the .lib file that was produced when building IPOPT.  This way, your executable can find the IPOPT functions it needs in the accompanying DLL at runtime.
 
3.  The file libiomp5md.dll is a runtime library (not to be confused with the import libraries mentioned above), and needs to be in the same directory as your executable.  This DLL is used to support the Intel MKL code that is used by PARDISO.  It may also be located somewhere else, provided that your system can find it, ie, it needs to be in a directory defined by the PATH environment variable.
 
4.  Do not rename "libpardiso400_INTEL_IA32.dll", or it will not be properly located at runtime.  If you link IPOPT with libpardiso400_INTEL_IA32.lib, it expects to use a runtime DLL of the same name.
 
5.  You probably do not need the PARDISO_Template.zip file - I didn't need it.
 
6.  At run time, your executable, the IPOPT DLL, and file libiomp5md.dll must all reside in the same directory or be located in a directory defined by the PATH environment variable.

________________________________

From: York Tang [mailto:hkyork at gmail.com] 
Sent: Thursday, February 18, 2010 12:02 PM
To: Teeter, Chuck
Cc: ipopt at list.coin-or.org
Subject: Re: [Ipopt] Can PARDISO 4.0 work with ipopt in windows?


Dear Teeter,

I have tried your step, but still crash when the solver start (do not print any msg from the process)

Here is what i have done.

1. First i download the( INTEL, 32-bit, icc/ifort 10.1 Windows) (with MKL BLAS) Version of PARDISO.
It has 4 files(libpardiso400_INTEL_IA32.dll,libpardiso400_INTEL_IA32.lib,libiomp5md.dll,PARDISO_Template.zip)
2. I named the "libpardiso400_INTEL_IA32.dll" to "libpardiso.dll". Put it next to my exe. (my exe can detect the licence is wrong, if i input a invalid licence file)
3. And do all the thing that you mentioned. and replace the old Ipopt38.dll with the new one.

Where is my problem?
Also What i need to do with the libpardiso400_INTEL_IA32.lib,libiomp5md.dll,PARDISO_Template.zip? (if i just want to use the PARDISO with ipopt)
Thank you so much for your help!

York


2010/2/18 Teeter, Chuck <cteeter at suncor.com>


	York,
	
	PARDISO does indeed work with IPOPT.  I had an experience similar to
	yours, but this is how I fixed it:
	
	1.  At the top of the IPOPT source file IpPardisoSolverInterface.cpp,
	add the following preprocessor definition if it does not already exist:
	
	#ifndef HAVE_PARDISO_NEWINTERFACE
	#define HAVE_PARDISO_NEWINTERFACE 1
	#endif
	
	
	2.  In the same source file, remove the F77_FUNC() macro definition from
	ALL references to functions PARDISOINIT() and PARDISO().  For example,
	instead of the original function prototype:
	
	void F77_FUNC(pardisoinit,PARDISOINIT) (void* PT, const ipfint* MTYPE,
	                                                   const ipfint*
	SOLVER,
	                                                   ipfint* IPARM,
	                                                   double* DPARM,
	                                                   ipfint* ERROR );
	
	
	Use the following version instead:
	
	void PARDISOINIT(void* PT, const ipfint* MTYPE,
	                                                   const ipfint*
	SOLVER,
	                                                   ipfint* IPARM,
	                                                   double* DPARM,
	                                                   ipfint* ERROR );
	
	I commented out the original references and created the modified
	versions to be used instead.  Do the same for all function calls as
	well, and this should fix your problem after rebuilding IPOPT.
	
	One final point: If you haven't already done so, remember to define
	HAVE_PARDISO and HAVE_PARDISO_PARALLEL (if applicable) in the IPOPT
	source file IpoptConfig.h
	




	-----Original Message-----
	From: Olaf.Schenk at unibas.ch [mailto:Olaf.Schenk at unibas.ch]
	Sent: Thursday, February 18, 2010 2:27 AM
	To: York Tang
	Cc: ipopt at list.coin-or.org; Teeter, Chuck
	Subject: Re: [Ipopt] Can PARDISO 4.0 work with ipopt in windows?
	
	York,
	
	The PARDISO 4.0.0 DLL is working correctly with IPOPT. I am copying
	Chuck Teeter in this email since he is actually using IPOPT and PARDISO
	on Windows.
	
	Olaf
	
	 Tang <hkyork at gmail.com>:
	
	> Dear all,
	>
	> Recently i tried to download PARDISO dll from its website, after i
	> provided its license file , the program crashed.
	> Can PARDISO 4.0 work with ipopt in windows? the ipopt documentation
	> said no , but someone in the mail archive said yes.
	> Which one is correct? if yes, what i need to set, after i have the dll
	
	> and the license file.
	> thank you
	>
	> York
	>
	
	
	
	----------------------------------------------------------------
	This message was sent using IMP, the Internet Messaging Program.
	
	
	
	------------------------------------------------------------------------
	This email and its contents are private and confidential, for the sole use of the addressees. If you are not an intended recipient, copying, forwarding or other distribution of this email or its contents by any means is prohibited. If you believe that you received this email in error please notify the original sender immediately.
	
	Petro-Canada is a Suncor Energy business.
	
	------------------------
	
	Ce courriel et son contenu sont privés et confidentiels, et sont destinés à l'usage exclusif des destinataires. Si vous n'êtes pas le destinataire prévu, toute reproduction, transfert ou autre forme de diffusion de ce courriel ou de son contenu par quelque moyen que ce soit est interdit. Si vous croyez avoir reçu ce courriel par erreur, veuillez en aviser l'expéditeur original immédiatement.
	
	Petro-Canada est une entreprise de Suncor Énergie.
	
	


------------------------------------------------------------------------
This email and its contents are private and confidential, for the sole use of the addressees. If you are not an intended recipient, copying, forwarding or other distribution of this email or its contents by any means is prohibited. If you believe that you received this email in error please notify the original sender immediately. 

Petro-Canada is a Suncor Energy business.

------------------------

Ce courriel et son contenu sont privés et confidentiels, et sont destinés à l’usage exclusif des destinataires. Si vous n'êtes pas le destinataire prévu, toute reproduction, transfert ou autre forme de diffusion de ce courriel ou de son contenu par quelque moyen que ce soit est interdit. Si vous croyez avoir reçu ce courriel par erreur, veuillez en aviser l'expéditeur original immédiatement. 

Petro-Canada est une entreprise de Suncor Énergie.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.coin-or.org/pipermail/ipopt/attachments/20100218/bc7f8005/attachment-0001.html 


More information about the Ipopt mailing list