16.4. PMIx v2.x series

This file contains all the NEWS updates for all the PMIx v2.x series, in reverse chronological order.

16.4.1. 2.2.4 – 07 Jun 2020

  • PR #1466: Silence spurious error log

  • PR #1489: Allow specification of hostname to use by client

  • PR #1499/#1512/#1518/#1525/#1528/#1533/#1553: Fix internal tests

  • PR #1678: Update “check_vendor” for PGI problem

  • PR #1734: Fix resource leaks in ptl/usock component

  • PR #1777: Fix crash of dstor locks destructor in ds12

  • PR #1788: Remove unnecessary error logs

16.4.2. 2.2.3 – 15 Aug 2019

  • PR #1162: Fix race condition when clients fail while in a PMIx collective operation

  • PR #1163: Fix a compiler warning in atomics on POWER arch

  • PR #1165: Add BuildRequires: libevent-devel to spec file

  • PR #1180: Remove dependency on C++ compiler for thread detection

  • PR #1180: Add detection for Flex when building in non-tarball situations

  • PR #1182: configury: use PMIX_ENABLE_DLOPEN_SUPPORT instead of enable_dlopen

  • PR #1188: Link libpmix.so to MCA component libraries

  • PR #1190: Ensure any cached notifications arrive after reg completes

  • PR #1194: Ensure any cached notifications arrive after registration completes

  • PR #1209: Update configure logic for clock_gettime

  • PR #1213/#1217/#1221: Add configure option “–enable-nonglobal-dlopen” If the MCA component libraries should link back to libpmix.so

  • PR #1231: SPEC: Allow splitting PMIx in pmix and pmix-libpmi packages

  • PR #1253: Preserve user-provided CFLAGS to protect autotools

  • PR #1267: Correct dmodex example

  • PR #1275: IPv6 IF Read: Buffer Overflow

  • PR #1295: Fix comment: IPv6 IF_NAMESIZE

  • PR #1296: Allow setup_fork to proceed even if gdds and pnet don’t contribute

  • PR #1296: Allow servers to pass NULL module

  • PR #1297: Provide internal blocking ability to the register/deregister fns

  • PR #1298: Add dummy handshake component to psec framework for testing

  • PR #1303: Allow jobs to not specify proc-level info

  • PR #1304: Provide proc data in cases where host does not

  • PR #1305: Add some more values that can be computed

  • PR #1308: Add missing tool rendezvous file

  • PR #1309: Fix potential integer overflow in regex

  • PR #1311: Work around memory bug in older gcc compilers

  • PR #1329: Add -fPIC to static builds

  • PR #1334: Cache only -W CFLAG entries to fix 32-bit builds

  • PR #1341: Do not use ‘==’ in m4 test statements

  • PR #1342: Fix if_linux_ipv6_open interface filter

  • PR #1344: Remove unnecessary libtool init for c++

  • PR #1346: Fix incorrect pointer casts/deref

  • PR #1347/#1348: Fix use of gethostname

  • PR #1353/#1357: util/environ: use setenv() if available

  • PR #1354: Plug a misc memory leak in the pmix_query_caddy_t destructor

  • PR #1356: Fix another pointer cast/deref in test suite

  • PR #1358: Implement support for class-based info arrays

  • PR #1359: Plug misc minor memory leaks

  • PR #1369: Fix legacy support for PMI-1

  • PR #1370: Cleanup handling of data requests for different nspaces

  • PR #1193: Resolve get of proc-specific job-level info from another nspace

  • PR #1377: Skip fastpath/dstore for NULL keys

  • PR #1379: Change IF_NAMESIZE to PMIX_IF_NAMESIZE and set to safe size

  • PR #1385: Check for EINVAL return from posix_fallocate

  • PR #1389: Plug misc memory leaks in configure

16.4.3. 2.2.2 – 24 Jan 2019

  • Fix a bug in macro identifying system events

16.4.4. 2.2.1 – 18 Jan 2019

  • Fix a bug in registration of default event handlers that somehow slipped thru testing

16.4.5. 2.2.0 – 17 Jan 2019



  • Add a new, faster dstore GDS component ‘ds21’

  • Performance optimizations for the dstore GDS components.

  • Plug miscellaneous memory leaks

  • Silence an unnecessary warning message when checking connection to a non-supporting server

  • Ensure lost-connection events get delivered to default event handlers

  • Correctly handle cache refresh for queries

  • Protect against race conditions between host and internal library when dealing with async requests

  • Cleanup tool operations and add support for connections to remote servers.

  • Automatically store the server URI for easy access by client

  • Provide MCA parameter to control TCP connect retry/timeout

  • Update event notification system to properly evict oldest events when more space is needed

  • Fix a number of error paths

  • Handle setsockopt(SO_RCVTIMEO) not being supported

  • Pass the tool’s command line to the server so it can be returned in queries

  • Add support for C11 atomics

  • Fix a bug when registering default event handlers

16.4.6. 2.1.4 – 18 Sep 2018

  • Updated configury to silence warnings on older compilers

  • Implement job control and sensor APIs

  • Update sensor support

  • Fix a few bugs in the event notification system and provide some missing implementation (support for specifying target procs to receive the event).


  • Properly deal with EOPNOTSUPP from getsockopt() on ARM

16.4.7. 2.1.3 – 23 Aug 2018

  • Fixed memory corruption bug in event notification system due to uninitialized variable

  • Add numeric version definition

  • Transfer all cached data to client dstore upon first connect

16.4.8. 2.1.2 – 6 July 2018

  • Added PMIX_VERSION_RELEASE string to pmix_version.h

  • Added PMIX_SPAWNED and PMIX_PARENT_ID keys to all procs started via PMIx_Spawn

  • Fixed faulty compares in PMI/PMI2 tests

  • Fixed bug in direct modex for data on remote node

  • Correctly transfer all cached job info to the client’s shared memory region upon first connection

  • Fix potential deadlock in PMIx_server_init in an error case

  • Fix uninitialized variable

  • Fix several memory and file descriptor leaks

16.4.9. 2.1.1 – 23 Feb 2018

  • Fix direct modex when receiving new nspace

  • Resolve direct modex of job-level info

  • Fix a bug in attribute configuration checks

  • Fix a couple of bugs in unpacking of direct modex job-level data

  • Correcly handle application setup data during “instant on” launch

  • add a PMIX_BYTE_OBJECT_LOAD convenience macro

  • Fix two early “free” bugs

  • Add an example PMI-1 client program

16.4.10. 2.1.0 – 1 Feb 2018


This release contains the first implementation of cross-version support. Servers using v2.1.0 are capable of supporting clients using PMIx versions v1.2 and above. Clients using v2.1.0 are able to interact with servers based on v1.2 and above.

  • Added cross-version communication support

  • Enable reporting of contact URI to stdout, stderr, or file (PR #538)

  • Enable support for remote tool connections (PR #540, #542)

  • Cleanup libevent configure logi to support default install paths (PR #541)

  • Debounce “unreachable” notifications for tools when they disconnect (PR #544)

  • Enable the regex generator to support node names that include multiple sets of numbers

16.4.11. 2.0.3 – 1 Feb 2018

  • Fix event notification so all sides of multi-library get notified of other library’s existence

  • Update syslog protection to support Mac High Sierra OS

  • Remove usock component - unable to support v1.x clients due to datatype differences

  • Cleanup security handshake

  • Cleanup separation of PMI-1/2 libraries and PMIx symbols

  • Protect against overly-large messages

  • Update data buffer APIs to support cross-version operations

  • Protect receive callbacks from NULL and/or empty buffers as this can occur when the peer on a connection disappears.

  • Fix tool connection search so it properly descends into the directory tree while searching for the server’s contact file.

  • Fix store_local so it doesn’t reject a new nspace as that can happen when working with tools

  • Ensure we always complete PMIx_Finalize - don’t return if something goes wrong in the middle of the procedure

  • Fix several tool connection issues

16.4.12. 2.0.2 – 19 Oct 2017

  • Update RPM spec file (rpmbuild -ta, and –rebuild fixes) (PR #523)

  • Support singletons in PMI-1/PMI-2 (PR #537)

  • Provide missing implementation support for arrays of pmix_value_t’s (PR #531)

  • Remove unsupported assembly code for MIPS and ARM processors prior to v6 (PR #547)

  • Fix path separator for PMIx configuration files (PR #547)

  • Add configure option to enable/disable the default value for the show-load-errors MCA param (PR #547)

16.4.13. 2.0.1 – 24 Aug. 2017

  • Protect PMIX_INFO_FREE macro from NULL data arrays

  • Added attributes to support HWLOC shared memory regions

  • Fixed several syntax errors in configure code

  • Fixed several visibility errors

  • Correctly return status from PMIx_Fence operation

  • Restore tool connection support and implement search operations to discover rendezvous files

16.4.14. 2.0.0 – 22 Jun 2017


This release implements the complete PMIX v2.0 Standard and therefore includes a number of new APIs and features. These can be tracked by their RFC’s in the RFC repository at: https://github.com/pmix/RFCs. A formal standards document will be included in a later v2.x release. Some of the changes are identified below.

  • Added the Modular Component Architecture (MCA) plugin manager and converted a number of operations to plugins, thereby allowing easy customization and extension (including proprietary offerings)

  • Added support for TCP sockets instead of Unix domain sockets for client-server communications

  • Added support for on-the-fly Allocation requests, including requests for additional resources, extension of time for currently allocated resources, and return of identified allocated resources to the scheduler (RFC 0005 - https://github.com/pmix/RFCs/blob/master/RFC0005.md)

  • Tightened rules on the processing of PMIx_Get requests, including reservation of the “pmix” prefix for attribute keys and specifying behaviors associated with the PMIX_RANK_WILDCARD value (RFC 0009 - https://github.com/pmix/RFCs/blob/master/RFC0009.md)

  • Extended support for tool interactions with a PMIx server aimed at meeting the needs of debuggers and other tools. Includes support for rendezvousing with a system-level PMIx server for interacting with the system management stack (SMS) outside of an allocated session, and adds two new APIs:

  • PMIx_Query: request general information such as the process table for a specified job, and available SMS capabilities

  • PMIx_Log: log messages (e.g., application progress) to a system-hosted persistent store (RFC 0010 - https://github.com/pmix/RFCs/blob/master/RFC0010.md)

  • Added support for fabric/network interactions associated with “instant on” application startup (RFC 0012 - https://github.com/pmix/RFCs/blob/master/RFC0012.md)

  • Added an attribute to support getting the time remaining in an allocation via the PMIx_Query interface (RFC 0013 - https://github.com/pmix/RFCs/blob/master/RFC0013.md)

  • Added interfaces to support job control and monitoring requests, including heartbeat and file monitors to detect stalled applications. Job control interface supports standard signal-related operations (pause, kill, resume, etc.) as well as checkpoint/restart requests. The interface can also be used by an application to indicate it is willing to be pre-empted, with the host RM providing an event notification when the preemption is desired. (RFC 0015 - https://github.com/pmix/RFCs/blob/master/RFC0015.md)

  • Extended the event notification system to support notifications across threads in the same process, and the ability to direct ordering of notifications when registering event handlers. (RFC 0018 - https://github.com/pmix/RFCs/blob/master/RFC0018.md)

  • Expose the buffer manipulation functions via a new set of APIs to support heterogeneous data transfers within the host RM environment (RFC 0020 - https://github.com/pmix/RFCs/blob/master/RFC0020.md)

  • Fix a number of race condition issues that arose at scale

  • Enable PMIx servers to generate notifications to the host RM and to themselves