This mostly makes sense. But let me probe a little more. Can a
component return NULL if it looks at its priority and the priority is
less than or equal to 0? For example, currently the hierarch component
returns NULL when its priority is equal or less than 0. This means that
as a user when I set the priority to 0 I am indicating that I do not
want the hierarch component selected at all.
Or, is the priority only used to specify relative behavior. So, it is
not to be used to completely deselect a component. To deselect, you
would need to use the ^component format.
That is where I am confused.
Josh Hursey wrote:
> Yeah (Sorry I didn't reply earlier).
> Each component is asked for at least two items of information:
> priority (int), and module (struct *).
> The priority can range from [INT_MIN | INT_MAX] with the highest
> priority selected, even if that priority is negative.
> If the component does not want to be selected then it should return
> NULL for the module value. This indicates to the selection logic that
> no matter what the priority is set to the component should not be a
> candidate for selection.
> So a component is selectable if it returns a non-NULL value for the
> module struct, and is not selectable if it returns NULL. The priority
> only indicates relative rank between all available components.
> Does that make sense? I should probably add this comment to the
> mca_base_select function to preserve it. I'll make a bug for it so it
> doesn't get lost.
> -- Josh
> On May 23, 2008, at 7:14 AM, Jeff Squyres wrote:
>> We may not have this uniform throughout the code base -- this is one
>> of the things we wanted to talk about in the Bay area meeting. I
>> believe that the allowable range for priorities should be [0, 100],
>> and that if you don't want to be selected, you should return NULL (or
>> use some other mechanism to indicate that you didn't want to be
>> selected). That was the original intent of the MCA selection
>> mechanisms, at least.
>> Josh -- is this consistent with what you found when you consolidated a
>> lot of this stuff?
>> On May 22, 2008, at 11:30 AM, Rolf vandeVaart wrote:
>>> I know there was some recent discussion about priority of components,
>>> but I wanted to double check. I am trying to understand what
>>> priority =
>>> 0 means.
>>> My assumption is the following:
>>> priority >= 0 means the component is selectable
>>> priority < 0 means the component is not selectable
>>> I ask this because in some of the collective code it looks like a
>>> priority = 0 means not selectable. Not a big deal, but I am
>>> trying to
>>> fix a memory leak and I need to get this piece right. And I assume
>>> priority < 0 will give one the same behavior as ^component but the
>>> paths within Open MPI would be different.
>>> devel mailing list
>> Jeff Squyres
>> Cisco Systems
>> devel mailing list
> devel mailing list