Actually, I was talking specifically about configuration at build time. I
realize there are trade-offs here, and suspect we can find a common ground.
The problem with using the options Jeff described is that they require
knowledge on the part of the builder as to what environments have had their
include files/libraries installed on the file system of this particular
machine. And unfortunately, not every component is protected by these
"sentinel" variables, nor does it appear possible to do so in a "guaranteed
Note that I didn't say "installed on their machine". In most cases, these
alternative environments are not currently installed at all - they are stale
files, or were placed on the file system by someone that wanted to look at
their documentation, or whatever. The problem is that Open MPI blindly picks
them up and attempts to use them, with sometimes disastrous and frequently
Hence, the user can be "astonished" to find that an application that worked
perfectly yesterday suddenly segfaults today - because someone decided one
day, for example, to un-tar the bproc files in a public place where we pick
them up, and then someone else (perhaps a sys admin or the user themselves)
at some later time rebuilt Open MPI to bring in an update.
Now imagine being a software provider who gets the call about a problem with
Open MPI and has to figure out what the heck happened....
My suggested solution may not be the best, which is why I put it out there
for discussion. One alternative might be for us to instruct sys admins to
put MCA params in their default param file that force selection of the
proper components for each framework. Thus, someone with an lsf system would
enter: pls=lsf ras=lsf sds=lsf in their config file to ensure that only lsf
The negative to that approach is that we would have to warn everyone any
time that list changed (e.g., a new component for a new framework). Another
option to help that problem, of course, would be to set one mca param (say
something like "enviro=lsf") that we would use internal to Open MPI to set
the individual components correctly - i.e., we would hold the list of
relevant frameworks internally since (hopefully) we know what they should be
for a given environment.
Anyway, I'm glad people are looking at this and suggesting solutions. It is
a problem that seems to be biting us recently and may become a bigger issue
as the user community grows.
On 7/10/07 6:12 AM, "Bogdan Costescu"
> On Tue, 10 Jul 2007, Jeff Squyres wrote:
>> Do either of these work for you?
> Will report back in a bit, I'm now in the middle of an OS upgrade on
> the cluster.
> But my question was more like: is this a configuration that should
> theoretically work ? Or in other words, are there known dependencies
> on rsh that would make a rsh-less build not work or work with reduced
> functionality ?
>> Most batch systems today set a sentinel environment variable that we
>> check for.
> I think that we talk about slightly different things - my impression
> was that the OP was asking about detection at config time, while your
> statements make perfect sense to me if they are relative to detection
> at run-time. If the OP was indeed asking about run-time detection,
> then I apologize for the time you wasted on reading and replying to my
>> That's what the compile-time vs. run-time detection and selection is
>> supposed to be for.
> Yes, I understand that, it's the same type of mechanism as in LAM/MPI
> which it's not that foreign to me ;-)