Opened 15 years ago
Last modified 13 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 15 years ago by
| Description: | modified (diff) |
|---|
comment:2 Changed 15 years ago by
| Description: | modified (diff) |
|---|
comment:3 Changed 15 years ago by
| Status: | new → accepted |
|---|
comment:4 Changed 14 years ago by
comment:5 Changed 14 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 13 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 13 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