MPI Sessions: a proposal for the MPI Forum

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!