Skip to content
Josh Hursey edited this page Aug 22, 2017 · 2 revisions

This page describes the rules we use to determine when to adjust the version of PMIx. Various email exchanges on this topic can be found at the links below:

PMIx backwards compatibility

Note that this is slightly stronger than what Open MPI is using, if you are familiar with their definition.

Full Backwards Compatibility [vX.Y.Z]

  • Z : Internal bug fixes that do not impact behavior seen outside of a single process.
  • Y : No API changes (or required attributes), but behavior between processes changed (e.g., flock, dstore).
  • X : API changes and/or required attributes.

The scenario we have to keep in mind is that if we have a statically linked PMIx server at, say, version v5.6.7. And we have a PMIx client dynamically linked, then:

  • The client can be at v5.6.z and still work with the PMIx server.
  • If the PMIx client moves to v5.6.8 then the PMIx server does not need to change.
  • If the PMIx client moves to v5.7.0 then the PMIx server will need to update to a PMIx version in the v5.7.z series. It only needs to re-compile because it was statically linked. A dynamically linked PMIx process will just need to re-link.
  • If the PMIx client moves to v6.0.0 then the PMIx server will need to re-compile to a version in the v6.0.z series.

Cross-Version Support

There is work ongoing to better interoperate between major version of PMIx. Details on cross-version compatibility will be posted as they come available.

Clone this wiki locally