To: J3 J3/20-110 From: Bill Long Subject: MPI and OpenMP reports Date: 2020-February-24 Discussion: ----------- The Reports for MPI and OpenMP for Meeting 221 follow. These should match the reports that will appear in the meeting minutes. MPI: --- Several "big ticket" items were voted on at the MPI forum last week, including a first vote for MPI sessions, hardware split for communicators (guided and unguided modes), and partitioned communication. There was a second vote for adding a non-blocking version of MPI_Sendrecv and callback-driven MPI_T events. A list of all items that were voted on is below (all passed): First Vote #103: MPI Sessions #143: Creating an MPI_INFO_ENV object before MPI_INIT. #132: Hardware split, guided mode. #156: Hardware split, unguided mode. #136: Partitioned Point-to-Point Communication #122: Intro nonblocking, no serialization and no deadlocks Second Vote #125: Add nonblocking and persistent versions of sendrecv #121: Clarify alignment of memory provided to applications #79: Callback-driven event interface for MPI_T #146: Fix Security Issue with MPI_Info_get by Introducing New Replacement Function MPI_Info_get_string #147: Deprecate MPI_Info_get and MPI_Info_get_valuelen Partitioned communication was somewhat controversial, with 4 abstain's and 2 no's. The no votes were from Argonne and Intel. The main concern appears to be how this relates to hardware that is currently under development. For MPI 4.0, it looks like persistent collectives, (limited) fault tolerance, MPI_T events, and partitioned communication will make it in. Bigcount isn't on schedule to be accepted before SC20, leaving us with the options to delay MPI 4.0 to get bigcount in, or wait until MPI 5.0 for bigcount. People agreed bigcount was too important to be put off for several more years, so it looks like MPI 4.0 will be slightly delayed to make sure bigcount makes it in. OpenMP: A technical report (TR8) was released last November at Supercomputing, previewing the OpenMP 5.1 specification that is to be released at this year's Supercomputing conference. A feature freeze for OpenMP 5.1 is set for mid-summer, at which time a comment draft for 5.1 will be publicly released. Since the last update, we had another F2F meeting in January. Recent voted changes are: - [Affinity] Minor clarification on how place list is partitioned for the teams construct. - [Tasking] A "nowait" clause added to the taskwait construct, useful for performing asynchronous join operations to facilitate ordering of tasks in a task dependence graph (easy to implement -- it's just syntactic sugar for a dependent task with an empty structured block). - [Accelerator] Clarification on meaning of "target device", and fix the device number for the host device to be the value returned by omp_get_num_devices() (which now refers to all non-host devices). - [Fortran] Allow Fortran BLOCK constructs to be associated with an OpenMP directive. You can now write: !$omp parallel BLOCK ... END BLOCK in place of this: !$omp parallel ... !$omp end parallel - [Misc] A new API routine for printing values of all the OpenMP environment variables. - [Misc] Fix to allow checking and setting max active levels inside parallel regions. Other issues being discussed for 5.1: - [Fortran] Allow OpenMP declarative directives to be visible via use association. - [Misc] various fixes/clarifications/extensions for the loop construct that was added in 5.0 are under discussion. - [Misc] Add compare-and-swap operator to atomic construct, and allow min/max atomic operations for C/C++. - [Misc] various fixes/clarifications/extensions for the interop construct that was introduced in TR8. - [Misc] Permit dynamic context selectors for declare variant and metadirective. This would allow dynamic selection of function variant at the callsite and dynamic selection of an OpenMP directive.