Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] autoconf warnings: openib BTL
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2014-03-13 08:53:11


On Mar 13, 2014, at 4:59 AM, Mike Dubman <miked_at_[hidden]> 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
jsquyres_at_[hidden]
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/