On Mar 13, 2014, at 4:59 AM, Mike Dubman <mi...@dev.mellanox.co.il> wrote:
> >>>Right? If so, I don't see why you need the AC_TRY_RUN -- if RDMACM is > >>>easily detectable as to which way it is compiled (because it has, for > >>>example, different fields), then AC_CHECK_DECLS should be enough, right? > > RDMACM API has different implementation requirements for its providers: tcp, > af_ib (different structs/fields should be used/passed. different APIs/hooks > should be called for bring-up). Yes, this was said before. Which is why I don't understand why AC_CHECK_DECLS isn't enough -- it's a compile-time check, right? Let me get this straight: 1. AF_IB may or may not be present. 2. If AF_IB is present, it may or may not work (i.e., support for AF_IB may or may not work in the kernel). 3. If AF_IB is present, you can only compile with the AF_IB fields and methods. 4. If AF_IB is not present, you can only compile with the non-AF_IB fields and methods. I think #2 is not relevant for configure -- only #1, #3, and #4 are relevant. So you should have code something like this: #if HAVE_DECL_AF_IB ret = do_the_stuff_with_af_ib(...); if (OMPI_SUCCESS != ret) { opal_show_help(...AF_IB doesn't work...); return ret; } #else ret = do_the_stuff_without_af_ib(...); if (OMPI_SUCCESS != ret) { opal_show_help(...non-AF_IB doesn't work...); return ret; } #endif To be clear: whether AF_IB works or not is a determination to make on the machines on which you *run* -- NOT on the machine on which you *build*. This is one of the key reasons that OMPI prefers run-time detection for run-time characteristics over configure-time detection for run-time characteristics (because you may run OMPI on different machines than where you built OMPI). > Currently, the RDMACM provider can be selected at compile time only and > mpirun becomes incompatible to other RDMACM providers. What does mpirun have to do with this? We're talking about the openib BTL, right? > AC_TRY_RUN is a protection that selected provider will be able to > run,otherwise no fallback to other provider will be available for user at > runtime. I can't parse this statement...? -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/