On Aug 27, 2007, at 10:04 PM, Jeff Squyres wrote:

On Aug 27, 2007, at 2:50 PM, Greg Watson wrote:

Until now I haven't had to worry about the opal/orte thread model.
However, there are now people who would like to use ompi that has
been configured with --with-threads=posix and --with-enable-mpi-
threads. Can someone give me some pointers as to what I need to do in
order to make sure I don't violate any threading model?

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?

Greg

Reply via email to