Opened 14 years ago
Last modified 12 years ago
#1233 accepted defect
[TolIpopt] Error de enlace de libipopt39 en linux
Reported by: | Víctor de Buen Remiro | Owned by: | Jorge |
---|---|---|---|
Priority: | highest | Milestone: | TOL Packages |
Component: | Math | Version: | head |
Severity: | blocker | Keywords: | TolIpopt |
Cc: | Humberto Carralero, Pedro Gea |
Description (last modified by )
Al intentar correr el test de depuración de TolIpopt en linux me encuentro con que ni siquiera enlaza dinámicamente:
/usr/local/tol-gcc-release/bin/tolcon: symbol lookup error: /home/toldevel/tol-devel/OfficialTolArchiveNetwork/IpoptCore /Linux_x86_32/libipopt39.so: undefined symbol: MPI_Init
En esta página hablan de problemas similares pero yo no entiendo nada
Change History (7)
comment:1 Changed 14 years ago by
Description: | modified (diff) |
---|
comment:2 Changed 14 years ago by
Description: | modified (diff) |
---|
comment:3 Changed 14 years ago by
Status: | new → accepted |
---|
comment:4 Changed 13 years ago by
comment:5 Changed 13 years ago by
Parece ser un tema relacionado con el uso RTLD_GLOBAL, hay algo relacionado en http://www.mail-archive.com/libtool@gnu.org/msg08942.html
comment:6 Changed 12 years ago by
Cc: | Humberto Carralero Pedro Gea added |
---|
Este error puede afectar a la inicialización de una estimación basada en BysMcmc, para evitar que salte este error podemos indicar a BysMcmc que use Ipopt como último recurso en la búsqueda de los valores iniciales. Desde MMS esto se hace así:
Real est::GetStrategy(?)::SetSetting( "bsr.iniVal.try.givenByUser", 1 ); Real est::GetStrategy(?)::SetSetting( "bsr.iniVal.try.cnstrMLE", 2 ); Real est::GetStrategy(?)::SetSetting( "bsr.iniVal.try.zero", 3 ); Real est::GetStrategy(?)::SetSetting( "bsr.iniVal.try.findFeasible", 4 ); Real est::GetStrategy(?)::SetSetting( "bsr.iniVal.try.cnstrMinNorm", 5 );
comment:7 Changed 12 years ago by
Me temo que TolIpopt
es completamente necesario precisamente en muchos casos de modelos estimados con BysMcmc
, pues el usuario a menudo no conoce una solución factible mínimamente razonable, y eso es lo que se consigue poniendo bsr.iniVal.try.cnstrMinNorm:=1
De hecho fue el motivo principal por el que hicimos una API a IPOPT, así que no me parece nada razonable que no se use. Si hay un problema en una instalación concreta habrá que buscar el motivo y resolverlo. Huir del problema no va a solucionarlo. Una posibilidad sería entrar en el TRAC de IPOPT a poner un ticket a ver si alguien nos ayuda.
He probado en key28. Antes he recompilado TOL y TOLTCL para generar libtol.so. En ese entorno he podido cargar IpoptCore invocando
como se puede ver en la salida