Releases: Sandia-OpenSHMEM/SOS
Sandia OpenSHMEM v1.4.3
The Sandia OpenSHMEM development team is pleased to announce SOS v1.4.3. Below are some of the changes included in this release:
- Added proposed OpenSHMEM put-with-signal routines to shmemx interaces.
- Added proposed OpenSHMEM wait/test-any/some/all to shmemx interfaces.
- Added proposed OpenSHMEM nonblocking fetching atomic operations to shmemx interfaces.
- Added proposed OpenSHMEM SHMEM_CTX_INVALID constant to shmemx interfaces.
- Added put-with-signal optimization that uses the FI_FENCE capability (see --enable-ofi-fence for details).
- Added support for backtrace printing when SOS aborts (see SHMEM_BACKTRACE environment variable for details).
- OFI transport merged cntr and cq endpoints, improving resource utilization.
- Fixed issue with missing pshmem symbols in proposed profiling interfaces.
- Improved support for SLURM using PMI-1.
- Fixed shmem_ctx_t type compatibility with C++ and older C compilers.
- Added NBI atomics support to performance suite benchmarks.
- Unit tests for the C++ generic interfaces (currently an SOS extension) were moved to the "test/shmemx" directory and context creation failure handling was improved in all tests to improve portability of the SOS test suite.
- Constant and type declarations were moved from shmem.h to shmem-def.h to eliminate dependence of pshmem.h and shmemx.h on shmem.h
Sandia OpenSHMEM v1.4.3rc1
The Sandia OpenSHMEM development team is pleased to announce SOS v1.4.3, release candidate 1. Below are some of the changes included in this pre-release:
- Added proposed OpenSHMEM put-with-signal routines to shmemx interaces.
- Added proposed OpenSHMEM wait/test-any/some/all to shmemx interfaces.
- Added proposed OpenSHMEM nonblocking fetching atomic operations to shmemx interfaces.
- Added proposed OpenSHMEM SHMEM_CTX_INVALID constant to shmemx interfaces.
- Added put-with-signal optimization that uses the FI_FENCE capability (see --enable-ofi-fence for details).
- Added support for backtrace printing when SOS aborts (see SHMEM_BACKTRACE environment variable for details).
- OFI transport merged cntr and cq endpoints, improving resource utilization.
- Fixed issue with missing pshmem symbols in proposed profiling interfaces.
- Improved support for SLURM using PMI-1.
- Unit tests for the C++ generic interfaces (currently an SOS extension) were moved to the "test/shmemx" directory and context creation failure handling was improved in all tests to improve portability of the SOS test suite.
- Constant and type declarations were moved from shmem.h to shmem-def.h to eliminate dependence of pshmem.h and shmemx.h on shmem.h
Sandia OpenSHMEM v1.4.2
The Sandia OpenSHMEM development team is pleased to announce SOS v1.4.2. Below are some of the changes included in this release:
- Improved performance when using OFI thread completion model, by releasing the context lock when blocked in quiet/fence operations.
- Added support for using MPI as the process manager, via --enable-pmi-mpi.
- Added option to flush stdout/stderr during barrier operations, enabled via SHMEM_BARRIERS_FLUSH environment variable.
- Added PE affinity information to debugging output, enabled via SHMEM_DEBUG environment variable.
- Fixed issue with SHMEM_OFI_PROVIDER environment variable being unrecognized.
- Added experimental performance counters API extension (see shmemx.h)
- Added --enable-ofi-mr={basic,scalable,rma-event} and removed --with-ofi-mr, --disable-mr-scalable, and --enable-mr-rma-event.
- Renamed --with-total-data-ordering configuration flag to --enable-total-data-ordering.
- Added multithreaded lock unit test to demonstrate the use of hierarchical locking to enable multithreaded usage of OpenSHMEM locks.
- Updated perf. suite tests to improve bandwidth reporting and improve coverage over atomic operations.
- Updated manual progress to automatically enable completion polling.
- Updated target counter binding in OFI to comply with libfabric requirements.
- Fixed invalid locking in context destroy debug message when bounce buffering is not enabled on the context.
- Simplified the OFI random STX allocator.
Sandia OpenSHMEM v1.4.2rc1
The Sandia OpenSHMEM development team is pleased to announce SOS v1.4.2, release candidate 1. Below are some of the changes included in this release:
- Added support for using MPI as the process manager, via --enable-pmi-mpi.
- Added option to flush stdout/stderr during barrier operations, enabled via SHMEM_BARRIERS_FLUSH environment variable.
- Added PE affinity information to debugging output, enabled via SHMEM_DEBUG environment variable.
- Fixed issue with SHMEM_OFI_PROVIDER environment variable being unrecognized.
- Added experimental performance counters API extension (see shmemx.h)
- Added --enable-ofi-mr={basic,scalable,rma-event} and removed --with-ofi-mr, --disable-mr-scalable, and --enable-mr-rma-event.
- Renamed --with-total-data-ordering configuration flag to --enable-total-data-ordering.
- Added multithreaded lock unit test to demonstrate the use of hierarchical locking to enable multithreaded usage of OpenSHMEM locks.
- Updated perf. suite tests to improve bandwidth reporting and improve coverage over atomic operations.
- Updated manual progress to automatically enable completion polling.
- Updated target counter binding in OFI to comply with libfabric requirements.
- Fixed invalid locking in context destroy debug message when bounce buffering is not enabled on the context.
- Simplified the OFI random STX allocator.
Sandia OpenSHMEM v1.4.1
The Sandia OpenSHMEM development team is pleased to announce SOS v1.4.1. Below are some of the changes included in this release:
- Significantly improved the performance and tunability of SOS when using multiple threads and/or numerous OpenSHMEM contexts.
- Added multi-threaded implementations of the shmem_perf_suite throughput benchmarks, which make use of OpenSHMEM contexts and OpenMP.
- Modified the test suite to enable building and running external to the SOS repository (see https://github.com/openshmem-org/tests-sos).
- Provided a pkg-config file for Sandia OpenSHMEM named 'sos'.
- Added a multi-threaded lock unit test with an accompanying library for thread-safe usage of OpenSHMEM locks.
- Added an optional probe routine to assist OFI transport progress (see --enable-manual-progress), which may improve the performance of pending communication operations for some providers (notably, PSM2).
- Improved the fidelity of throughput measurements in the performance testing suite.
- Added check to performance suite to verify that source and target processes are located on different nodes.
- Added the SHMEM_OFI_STX_DISABLE_PRIVATE mode which disables STX privatization, potentially improving load balance across transmit resources.
- SHMEM_OFI_STX_MAX default value reduced to 1 to avoid resource exhaustion with some providers.
- Improved the portability of SOS's error-reporting utilities.
- Introduced support for the shmem_query_thread routine.
- Added the shmemx_register_gettid function, which allows users to pass a function pointer for setting custom thread IDs.
- Add check for ASLR when remote virtual addressing optimization is enabled.
- Added the --disable-aslr-check options to disable the check for address space layout randomization.
- Added a unit test to validate the memory barriers in various SOS synchronization routines.
- Fix incorrect SHMEM_MINOR_VERSION value.
- Fixed threading synchronization race in context destruction.
- Multiple bugfixes in the unit tests, performance suite, Portals finalization, OFI STX management, the SOS simple build script, the default poll limit, and more (see git log for details).
Sandia OpenSHMEM v1.4.1 RC1
The Sandia OpenSHMEM development team is pleased to announce SOS v1.4.1, release candidate 1. Below are some of the changes included in this release:
- Added multi-threaded implementations of the shmem_perf_suite throughput benchmarks, which make use of OpenSHMEM contexts and OpenMP.
- Modified the test suite to enable building and running external to the SOS repository (see https://github.com/openshmem-org/tests-sos).
- Provided a pkg-config file for Sandia OpenSHMEM named 'sos'.
- Added the SHMEM_OFI_STX_DISABLE_PRIVATE mode which disables STX privatization, potentially improving load balance across transmit resources.
- SHMEM_OFI_STX_MAX default value reduced to 1 to avoid resource exhaustion with some providers.
- Improved the portability of SOS's error-reporting utilities.
- Introduced support for the shmem_query_thread routine.
- Added an optional probe routine to assist OFI transport progress (see --enable-manual-progress), which may improve the performance of pending communication operations for some providers (notably, PSM2).
- Added the shmemx_register_gettid function, which allows users to pass a function pointer for setting custom thread IDs.
- Add check for ASLR when remote virtual addressing optimization is enabled.
- Added the --disable-aslr-check options to disable the check for address space layout randomization.
- Added a unit test to validate the memory barriers in various SOS synchronization routines.
- Multiple bugfixes in the unit tests, performance suite, Portals finalization, OFI STX management, the SOS simple build script, the default poll limit, and more.
- Fix incorrect SHMEM_MINOR_VERSION value.
Please note that this is a pre-release, which may contain bugs or performance issues.
Sandia OpenSHMEM v1.4.0
The Sandia OpenSHMEM development team is pleased to announce the release of SOS v1.4.0. Below are some of the changes included in this release:
- Support for the OpenSHMEM 1.4 specification.
- New features include: Thread safety, communication management API (contexts), test routines, sync routines, calloc for symmetric objects, bitwise atomic operations, and updated C11 generic selection bindings. See OpenSHMEM 1.4 Specification, Annex G for details.
- Deprecations include: Fortran API, shmem_wait routines, mpp header directory, and SMA-prefixed environment variables. See OpenSHMEM 1.4 Specification, Annex F for details.
- Added support for OFI FI_THREAD_COMPLETION thread safety model, needed to use the SHMEM_THREAD_MULTIPLE mode with the PSM2 provider and others (see --enable-thread-completion). For providers that support FI_THREAD_SAFE, this mode may also provider better performance for private and serialized contexts.
- Added manpages and unit tests for OpenSHMEM 1.4 API routines.
- Optimized performance of private and serialized contexts.
- Improved performance of shmem_fence operation.
- Added memory barriers needed to support shared memory interactions between threads and PEs.
- Updated unit tests to remove use of deprecated API routines.
- Added support to OFI transport for sharing STX resources across contexts.
- Added several environment variables that can be used to control STX resource management in the OFI transport: SHMEM_OFI_STX_MAX, SHMEM_OFI_STX_ALLOCATOR, and SHMEM_OFI_STX_THRESHOLD. See README for details.
- Updated data segment exposure method to improve compatibility with tools.
- Updated thread safety support in Portals transport, eliminating several possible races in communication tracking/completion code.
Sandia OpenSHMEM v1.3.5
The Sandia OpenSHMEM development team is pleased to announce the release of SOS v1.3.5. Below are the changes included in this release:
- Changed the symmetric data segment variables (data_start/end) to be weak symbols to avoid a linker error for tools using the PSHMEM interface.
- Added a missing header file (inttypes.h), needed for the XPMEM transport.
Sandia OpenSHMEM v1.4.0 RC2
The Sandia OpenSHMEM development team is pleased to announce SOS v1.4.0, release candidate 2. Below are some of the changes included in this release:
- Support for OpenSHMEM 1.4, for details please refer to the OpenSHMEM 1.4 Specification.
- New features include: Thread safety, communication management API (contexts), test routines, sync routines, calloc, bitwise atomic operations, and updated C11 generic selection bindings.
- Deprecations include: Legacy Fortran API, shmem_wait routines, mpp header directory, and SMA-prefixed environment variables.
- Added support to OFI transport for sharing STX resources across contexts.
- Added several environment variables that can be used to control STX resource management in the OFI transport: SHMEM_OFI_STX_MAX, SHMEM_OFI_STX_ALLOCATOR, and SHMEM_OFI_STX_THRESHOLD. See README for details.
- Added support for returning gracefully when context creation is unsuccessful.
- Updated data segment exposure method to improve compatibility with tools.
- Updated thread safety support in Portals, eliminating several possible races in communication tracking/completion code.
Please note that this is a pre-release, which may contain bugs or performance issues. While all OpenSHMEM 1.4 features have been implemented for the Portals transport, several features including contexts, are not yet optimized for Portals.
Sandia OpenSHMEM v1.4.0 RC1
The Sandia OpenSHMEM development team is pleased to announce SOS v1.4.0, release candidate 1. Below are some of the changes included in this release:
- Support for OpenSHMEM 1.4, for details please refer to the OpenSHMEM 1.4 Specification.
- New features include: Thread safety, communication management API (contexts), test routines, sync routines, calloc, bitwise atomic operations, and updated C11 generic selection bindings.
- Deprecations include: Legacy Fortran API, shmem_wait routines, mpp header directory, and SMA-prefixed environment variables.
- Added support for OFI
FI_THREAD_COMPLETION
thread safety model, needed to use theSHMEM_THREAD_MULTIPLE
mode with the PSM2 provider and others (see --enable-thread-completion). For providers that supportFI_THREAD_SAFE
, this mode may also provider better performance for private and serialized contexts. - Added manpages for OpenSHMEM 1.4 API routines.
- Improved performance of private and serialized contexts.
- Improved performance of shmem_fence operation.
- Added memory barriers needed to support shared memory interactions between threads and PEs.
- Updated unit tests to remove use of deprecated API routines.
Please note that this is a pre-release, which may contain bugs or performance issues. In particular, internal resource sharing between OpenSHMEM contexts remains a work-in-progress, which may limit the number of contexts that can be created for a given OFI provider. While all OpenSHMEM 1.4 features have been implemented for the Portals transport, several features including contexts, are not yet optimized for Portals.