I think that technically, the component can do whatever it wants
(e.g., look at its priority, see 0, and decide to return NULL).
However, to be consistent, we should decide on a specific behavior and
make it uniform to all components.
I'd opt for the ^foo notation to disable a component.
On May 23, 2008, at 8:14 AM, Rolf Vandevaart wrote:
> 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
> returns NULL when its priority is equal or less than 0. This means
> 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
>>> 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
>>>> 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
> devel mailing list