Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] RFC: Rename --enable-*-threads andENABLE*THREAD*(take 2)
From: Ralph Castain (rhc_at_[hidden])
Date: 2010-03-10 12:26:46


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
>>> jsquyres_at_[hidden]
>>> For corporate legal information go to:
>>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>>
>>> _______________________________________________
>>> devel mailing list
>>> devel_at_[hidden]
>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>
>>
>> _______________________________________________
>> devel mailing list
>> devel_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel