Whoops, hit send to quickly. I’ve created a ticket for it. Here it is: https://trac.mpich.org/projects/mpich/ticket/2013 I’m a bit surprised that Hydra/mpiexec is able to detect “eth0”, while mpich is not able to resolve it. We might be doing something weird there to make sure our check is consistent on both sides. Either way, if Hydra doesn’t have the right headers to resolve interfaces, it should be able to disable that option. Thanks for pointing this out. — Pavan On 2/4/14, 3:52 PM, "Jan Bierbaum" <[email protected]> wrote:
Hi!
Although I'm not sure whether this should be considered a bug or just an annoyance, I thought it would be a good idea to bring it up here because it took me quiet some time to figure out the underlying problem.
For those not interested in the details: My suggestion is to disable '-iface' completely when MPICH is configured with '--enable-strict'. When the option is used in such a situation, some descriptive error message should be displayed.
Now, for the full story: I routinely pass the '--enable-strict' option to configure. According to 'configure --help' this option is supposed to "Turn on strict compilation testing" which sounds like a good thing when you are working with unfamiliar code.
Recently I also started to play around with the '-iface' option of mpiexec and to my surprise MPICH just produced a rather useless error message:
Fatal error in MPI_Init: Other MPI error"
A debug build of MPICH 3.0.4 was more informative:
Fatal error in MPI_Init: Other MPI error, error stack: MPIR_Init_thread(433)..............: MPID_Init(176).....................: channel initialization failed MPIDI_CH3_Init(70).................: MPID_nem_init(286).................: MPID_nem_tcp_init(108).............: MPID_nem_tcp_get_business_card(354): MPID_nem_tcp_init(246).............: The network interface, "eth0", specified in MPICH_NETWORK_IFACE was not found.
To make a long story short, '--enable-strict' apparently passes '-ansi' to the compiler. The compiler then defines the internal macro '__STRICT_ANSI__'. On my machine with gcc (Debian 4.7.2-5) 4.7.2 this will eventually cause 'net/if.h' to hide the definition of 'struct ifreq' and 'struct ifconf'.
'configure' detects that these structures are missing and creates an MPICH build that uses an empty, always-failing version of 'MPIDI_Get_IP_for_iface'. This failure, in turn, results in the aforementioned rather useless error message.
IMHO there should either be some mechanism to enable strict code checking without passing the '-ansi' option or '-iface' should be disabled cleanly when '--enable-strict' is used. At least some explanatory error message would be nice ;-)
Regards, Jan _______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss