No problem with me. Why don't we then modify this RFC to simply eliminate the 
--enable-opal-progress-thread option, and leave the rest as-is so we can enable 
the opal thread machinery without enabling MPI thread multiple?

I agree that having an ORTE-level thread makes the most sense, if it is needed.

On Mar 10, 2010, at 10:20 AM, George Bosilca wrote:

> There was way too much information on this thread that I was looking for ;) 
> And a lot of misunderstandings ...
> 
> If we want to allow ORTE to be on his own thread, then we should clearly 
> banish the progress_thread from this equation. I would prefer ORTE to be as 
> separated from the rest of the MPI library as possible, and therefore avoid 
> most of the locks and overheads on the MPI itself. Moving ORTE (as it only 
> use TCP sockets) on it's own poll is the best looking approach, and this can 
> be easily done once we upgrade out libevent to the 2.0.
> 
> To be honest the progress thread was not the smartest idea we had. It makes 
> the code more complex, and the added benefit is quite small. Again, once we 
> move to the libevent-2 we will cleanup the code, and have a more consistent 
> approach.
> 
>  george.
> 
> On Mar 8, 2010, at 10:11 , Ralph Castain wrote:
> 
>> 
>> On Mar 8, 2010, at 6:43 AM, Jeff Squyres wrote:
>> 
>>> On Mar 7, 2010, at 8:13 PM, Ralph Castain wrote:
>>> 
>>>>> How about calling it --enable-opal-event-progress-thread, or even 
>>>>> --enable-open-libevent-progress-thread?
>>>> 
>>>> Why not add another 100+ characters to the name while we are at it? :-/
>>>> 
>>> 
>>> :-)
>>> 
>>> I didn't really think the length mattered here, since it's a configure 
>>> argument.  There has been a *lot* of confusion over the name of this 
>>> particular switch over the past few years, so I'm suggesting that a longer, 
>>> more descriptive name might be a little better.  Just my $0.02...
>> 
>> I honestly don't think that is the source of the confusion. The revised name 
>> tells you exactly what that configure option does - it enables a thread at 
>> the opal layer that calls opal_progress. Period.
>> 
>> The confusion is over how that is used within the code, given that opal 
>> doesn't have any communication system (as George pointed out). So having an 
>> opal progress thread running will cause the event library to tick over, but 
>> that does....? It isn't directly tied to any existing subsystem, but rather 
>> cuts across any of them that are sitting on sockets/file descriptors etc. 
>> using the event library.
>> 
>> If you look at the other progress threads in the system (e.g., openib), 
>> you'll find that they don't use the event library to monitor their fd's - 
>> they poll them directly. So enabling the opal progress thread doesn't 
>> directly affect them.
>> 
>> So I would say let's leave the name alone, and change it if/when someone 
>> figures out how to utilize that capability.
>> 
>>> 
>>>>> The openib BTL can have up to 2 progress threads (!) -- the async verbs 
>>>>> event notifier and the RDMA CM agent.  They really should be 
>>>>> consolidated.  If there's infrastructure to consolidate them via opal or 
>>>>> something else, then so much the better...
>>>> 
>>>> Agreed, though I think that is best done as a separate effort from this 
>>>> RFC.
>>>> 
>>> 
>>> Agreed -- sorry, I wasn't clear.  I wasn't trying to propose that that work 
>>> be added to this RFC; I was just trying to mention that there could be a 
>>> good use for the work from this RFC if such infrastructure was provided.
>>> 
>>>> I believe there was a concern over latency if all the BTLs are driven by 
>>>> one progress thread that sequentially runs across their respective file 
>>>> descriptors, but I may be remembering it incorrectly...
>>>> 
>>> 
>>> 
>>> FWIW, I believe the openib progress threads were written the they way they 
>>> were (i.e., without any opal progress thread support) because, at least in 
>>> the current setup, to get the opal progress thread support, you have to 
>>> turn on all the heavyweight locks, etc.  These two progress threads now 
>>> simply pthread_create() and do minimal locking between the main thread and 
>>> themselves, without affecting the rest of the locking machinery in the code 
>>> base.
>>> 
>>> I'm not saying that's perfect (or even good); I'm just saying that that's 
>>> the way it currently is.  Indeed, at a minimum, Pasha and I have long 
>>> talked about merging these two progress threads into 1.  It would be even 
>>> better if we could merge these two project threads into some other 
>>> infrastructure.  But it's always been somewhat of a low priority; we've 
>>> never gotten a round tuit...
>>> 
>>> --
>>> Jeff Squyres
>>> jsquy...@cisco.com
>>> For corporate legal information go to:
>>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>> 
>>> _______________________________________________
>>> 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
> 
> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel


Reply via email to