IIRC, the concern was with where the thread safety should reside. Some classes 
(e.g., opal_list) were littered with thread locks for every operation. So if 
someone implemented thread protection at a higher level (e.g., protecting the 
list while cycling thru it), then all these lower-level lock/unlock operations 
were just a waste of cycles.

However, some people felt that there were places where it helped to have the 
locking down below. So this was the compromise - use the version that fits your 
situation.

Personally, I'm not wild about it, but I can live with it. I'd prefer to see no 
lock/unlock calls in the classes themselves as they are too atomistic, and 
would have opted for providing a macro version of the function that included 
the appropriate lock/unlocks around the function.

Anyway, that was the thinking at the meeting last June.


On Oct 9, 2013, at 1:40 AM, George Bosilca <bosi...@icl.utk.edu> wrote:

> My concern is that increasing the number of interfaces will not make the code 
> thread safe, as in most cases thread safety is not only a matter of using a 
> _mt version of the basic class object but a matter of a careful manipulation 
> of higher level concepts.
> 
> We can hardly use the lack of the _MT function as a reason for not having 
> thread safety in the code. We did have the thread safety a while back without 
> the support of _MT version of all the basic classes. 
> 
> So I really wonder what is the rationale behind such an intrusive change of 
> the codebase?
> 
>   George.
> 
> On Oct 8, 2013, at 18:14 , Ralph Castain <r...@open-mpi.org> wrote:
> 
>> Hi folks
>> 
>> This was one item from the last devel meeting that can be done independent 
>> of other things:
>> 
>>              • resolution: all opal and orte (and possibly ompi) classes 
>> need to have a thread safe and thread-free interface
>>                      • _st suffix: single thread (i.e., not thread safe 
>> variant)
>>                      • _mt suffix: multi thread (i.e., thread safe variant)
>>                              • for functions that have both st/mt, they will 
>> *both* have suffixes
>>                              • other functions (that do not have st/mt 
>> versions) will be naked names
>>                      • need to rename all classes that have locking enabled 
>> already (e.g., opal_free_list)
>>                      • so today, we go rename all the functions (e.g., 
>> opal_free_list functions get _mt suffix) throughout the code base
>>                      • as someone needs the _st version, they go create it 
>> and use it as they want to
>>                      • Ralph will do the orte classes
>>                      • Aurelien will do this for the ompi classes
>> 
>> I believe some of these have been done - I will take care of the ORTE 
>> classes this week, so consider this a "heads up" for that change.
>> Ralph
>> 
>> _______________________________________________
>> devel mailing list
>> de...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel

Reply via email to