PMIx Versioning - openpmix/openpmix GitHub Wiki

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.