WHAT: Rename the --enable-*-threads configure switches and ENABLE*THREAD* macros.
(see previous RFC: http://www.open-mpi.org/community/lists/devel/2010/01/7366.php)
WHY: The fact that thread safety in OPAL and ORTE requires a configure switch with "mpi" in the name is very non-intuitive. Additionally, MPI_THREAD_MULTIPLE support is not necessarily the same thing as OPAL thread support (MTM needs OPAL thread support, but not the other way around), and we are seeing a growing advantage/need for ORTE to utilize threads in mpirun and orted irrespective of the MPI layer's threading abilities.
WHERE: Mostly opal/config/opal_config_threads.m4, something new in ompi/config/*.m4, and wherever the current ENABLE*THREAD* macros are currently used in the current code base.
WHEN: Next Friday COB
TIMEOUT: COB, Friday, Feb 5, 2010
Cisco is starting to investigate using ORTE and OPAL in various threading scenarios. The fact that you need to enable thread safety in ORTE/OPAL with a configure switch that has the word "mpi" in it is extremely counter-intuitive (it bit some of our engineers very badly, and they were mighty annoyed!!). In addition, we ran into problems where it was advantageous to have threads in ORTE, but we couldn't do it without forcing thread support into the MPI layer because the switch is universal.
Since this functionality actually has nothing to do with MPI (it's actually the other way around -- MPI_THREAD_MULTIPLE needs this functionality), we really should divorce MPI threading functionality from whether threading machinery is enabled in OPAL or not.
These names were proposed at the end of the previous RFC and no one objected, so I'm sending this around as a new RFC to ensure we're all on the same sheet of music:
--enable-opal-progress-threads: enables progress thread machinery in opal
--> this is just a renaming from --enable-progress-threads
--> the corresponding #define stays the same: OPAL_ENABLE_PROGRES_THREADS
--enable-opal-multi-threads: enables multi threaded machinery in opal
--> this is just a renaming from --enable-mpi-threads
--> the corresponding #define also renames; from OPAL_ENABLE_MPI_THREADS to OPAL_ENABLE_MULTI_THREADS
--enable-mpi-thread-multiple: enables the use of MPI_THREAD_MULTIPLE; *ONLY* affects the MPI layer
--> use of this switch explicitly implies --enable-opal-multi-threads
--> new #define: OMPI_ENABLE_THREAD_MULTIPLE
We can keep and deprecate the old configure options if desired:
--enable-mpi-threads: deprecated synonym for --enable-mpi-thread-multiple
--enable-progress-threads: deprecated synonym for --enable-opal-progress-threads
..although I'm somewhat inclined to ditch them unless someone has strong feelings about keeping them.
Doing the name change in OPAL and ORTE is fairly straightforward -- it's essentially an s/foo/bar/g kind of operation. It'll likely take a little more effort in the MPI layer because the places where the current #defines are used may need to switch to the new name or to the new OMPI_ENABLE_THREAD_MULTIPLE name (and maybe some new logic? I am not sure without looking into it closer).
For corporate legal information go to: