Today, a small group of us left “stealth mode” and presented a group of ideas to the MPI Forum loosely grouped under the moniker of “MPI Sessions.”
These ideas behind this presentation originated from several places:
- My previous presentation of crazy ideas about INIT/FINALIZE at EuroMPI’15 in Bordeaux, France
- That Jonathan Dursi blog entry
- Other random thoughts that have been banging around in my head for quite a while
Here are the slides that were presented tonight:
There was a lot of really great discussion and feedback from the presentation tonight. I think we took about 40 distinct pieces of feedback / open questions from the audience.
Now that we have brought these ideas to a larger audience, my hope is that we (the Forum) start refining these ideas to fit them into a future release of the MPI standard. Meaning: please don’t assume that exactly what is proposed in these slides are going to make it into the MPI standard.
That being said, here’s the TL;DR version of the slides:
- A “session” is a local handle to the MPI library. You can create lots of sessions in a single MPI process; each creates a self-contained, isolated entry point to the MPI library.
- It may well be possible to have a different MPI thread level on each session.
- From a session, you can create MPI_Groups by querying the underlying run-time system.
- You can create MPI_Comms from these MPI_Groups.
- You not longer have to call MPI_INIT / MPI_FINALIZE (you can create communicators from sessions); these functions now become the constructor / destructor for MPI_COMM_WORLD and MPI_COMM_SELF.
This is going to be fun!