Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

From: Ralph Castain (rhc_at_[hidden])
Date: 2007-09-05 22:09:00


See below

On 9/5/07 7:04 PM, "Jeff Squyres" <jsquyres_at_[hidden]> wrote:

> Greg: sorry for the delay in replying...
>
> I am not the authority on this stuff; can George / Brian / Terry /
> Brad / Gleb reply on this issue?
>
> Thanks.
>
> On Aug 28, 2007, at 12:57 PM, Greg Watson wrote:
>
>>> Note that this is *NOT* well tested. There is work going on right
>>> now to make the OMPI layer be able to support MPI_THREAD_MULTIPLE
>>> (support was designed in from the beginning, but we haven't ever done
>>> any kind of comprehensive testing/stressing of multi-thread support
>>> such that it is pretty much guaranteed not to work), but it is
>>> occurring on the trunk (i.e., what will eventually become v1.3) --
>>> not the v1.2 branch.
>>>
>>>> The interfaces I'm calling are:
>>>>
>>>> opal_event_loop()
>>>
>>> Brian or George will have to answer about that one...
>>>
>>>> opal_path_findv()
>>>
>>> This guy should be multi-thread safe (disclaimer: haven't tested it
>>> myself); it doesn't rely on any global state.
>>>
>>>> orte_init()
>>>> orte_ns.create_process_name()
>>>> orte_iof.iof_subscribe()
>>>> orte_iof.iof_unsubscribe()
>>>> orte_schema.get_job_segment_name()
>>>> orte_gpr.get()
>>>> orte_dss.get()
>>>> orte_rml.send_buffer()
>>>> orte_rmgr.spawn_job()
>>>> orte_pls.terminate_job()
>>>> orte_rds.query()
>>>> orte_smr.job_stage_gate_subscribe()
>>>> orte_rmgr.get_vpid_range()
>>>
>>> Note that all of ORTE is *NOT* thread safe, nor is it planned to be
>>> (it just seemed way more trouble than it was worth). You need to
>>> serialize access to it.
>>
>> Does that mean just calling OPAL_THREAD_LOCK() and OPAL_THREAD_UNLOCK
>> () around each?

We actually do thread locks inside of these - just a big LOCK when you
enter, with a corresponding UNLOCK when you leave - so I'm not sure how much
good you'll get from adding locks around the calls themselves. The majority
of threading issues in this area have to do with the progress engine and our
interactions with that beast - I'm not sure we entirely understand those
issues yet.

Ralph