PMIx offers limited backward compatibility with the PMI-1 and PMI-2 definitions. Support for those definitions is provided by translating the called function into its PMIx equivalent – e.g., a call to PMI_Get invokes a wrapper that translates the provided input parameters, calls PMIx_Get, translates the returned PMIx values into a form compatible with the PMI-1 definition, and returns them.

The following table shows the supported and unsupported functions for both sets of definitions. An ‘X’ indicates that the function is supported, while a ‘-‘ indicates it is not supported.

Notes:

  • This support is not intended to fully encompass the PMI-1 and PMI-2 definitions. Instead, the intent was to provide a minimum level of support consistent both with that typically required by parallel programming libraries and found in supporting resource managers. Thus, while every PMI-1 or PMI-2 function definition is present in the respective PMIx-provided library, not every function is actually supported. Unsupported functions will return the PMI_FAIL or PMI2_FAIL response.
  • PMIx support for a backward compatible definition does not imply support by the underlying host environment – it only indicates that PMIx will communicate the request
  • System-provided values (e.g., universe size) may differ from those returned by PMI-1 or PMI-2 due to differences in definitions and/or implementations
  • The table rows reflect the API ordering in the original include files


PMIx Backward Compatibility Support

PMI-1 PMI-2
PMI_Init X PMI2_Init X
PMI_Initialized X PMI2_Initialized X
PMI_Finalize X PMI2_Finalize X
PMI_Abort X PMI2_Abort X
PMI_KVS_Put X PMI2_Job_Spawn X
PMI_KVS_Commit X PMI2_Job_GetId X
PMI_KVS_Get X PMI2_Job_GetRank X
PMI_Barrier X PMI2_Info_GetSize X
PMI_Get_size X PMI2_Job_Connect X
PMI_Get_rank X PMI2_Job_Disconnect X
PMI_Get_universe_size X PMI2_KVS_Put X
PMI_Get_appnum X PMI2_KVS_Fence X
PMI_Publish_name X PMI2_KVS_Get X
PMI_Unpublish_name X PMI2_Info_GetNodeAttr X
PMI_Lookup_name X PMI2_Info_GetNodeAttrIntArray
PMI_Get_id X PMI2_Info_PutNodeAttr X
PMI_Get_kvs_domain_id X PMI2_Info_GetJobAttr X
PMI_Get_id_length_max X PMI2_Info_GetJobAttrIntArray
PMI_Get_clique_size X PMI2_Nameserv_publish X
PMI_Get_clique_ranks X PMI2_Nameserv_lookup X
PMI_KVS_Get_my_name X PMI2_Nameserv_unpublish X
PMI_KVS_Get_name_length_max X
PMI_KVS_Get_key_length_max X
PMI_KVS_Get_value_length_max X
PMI_KVS_Create
PMI_KVS_Destroy
PMI_KVS_Iter_first
PMI_KVS_Iter_next
PMI_Spawn_multiple X
PMI_Parse_option
PMI_Args_to_keyval
PMI_Free_keyvals
PMI_Get_options