Hi all -

It's been a week or so since I horribly broke configure, so I thought it was time for another stab at it. This time, the motivation was the high resolution timers. The timers are different on pretty much every platform, and have some weird intersections (for example, on all IA64 Linux machines except the Altix, you have to use assembly to get the counters. On the Altix, you use SGI's interface so you don't have quite as much per-cpu jitter. This seems to scream for two different components). We want at most one component to ever be built - anything more and any rational scheme for doing inline functions into the components will fail.

A framework can now (via a file configure.options in the mca/ [framework]/ directory) set options about how the framework should be configured. Currently, the only option is STOP_AT_FIRST, which will cause configure to only successfully configure at most one component for the framework type. Any other option is taken to mean the default "try to configure all components" system that has always been in place. The way this works is that all the no configure components are configured in the order specified by autogen.sh, then all the m4 configure components are configured in the order specified by autogen.sh. As soon as one of them succeeds, no more components are configured. For now, configure.stub components can not be used with STOP_AT_FIRST (but can be with the default, usual system, yadda, yadda).

Now, you're probably asking yourself "what order does autogen.sh specify?", and the answer would be "alphabetical". That not necessarily being useful for stopping at the first useable component, you can now specify a "listing priority" in configure.params for a component which is, you guessed it, an integer that gives a sorting ranking for the given components, higher numbers are earlier in the list. Components default to a priority of 0, and the sort is stable (so components with the same priority stay in alphabetical order).

This is probably not useful for anything outside of OPAL, but seems to be fairly useful for all three OPAL frameworks. I haven't had a chance to write up the documentation in the design doc just yet (coming soon, I promise!) and the timer framework isn't quite ready to commit yet, so there isn't a good example. I should have at least the base of the timer framework and the x86 linux component committed tomorrow evening, so there will be an example then of what I'm talking about.

Anyway, I'm 99.99% sure that I didn't break anything. Let me know what I missed...

Brian


--
  Brian Barrett
  Open MPI developer
  http://www.open-mpi.org/


Reply via email to